COMPILATION LISTING OF SEGMENT tape_ansi_detach_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/04/82 1705.6 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 /* */ 11 /* 1) Modified: 06/29/79 by Rick Riley */ 12 /* (modify nonlabeled volume reporting) */ 13 14 tape_ansi_detach_: procedure (iocbP, code); /* iox_$tape_ansi_detach_iocb entry point */ 15 16 dcl iocbP ptr, /* pointer to iocb */ 17 code fixed bin (35); /* error code */ 18 19 1 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 1 2 /* format: style2 */ 1 3 1 4 dcl 1 iocb aligned based, /* I/O control block. */ 1 5 2 version character (4) aligned, 1 6 2 name char (32), /* I/O name of this block. */ 1 7 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 1 8 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 1 9 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 1 10 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 1 11 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 1 12 2 reserved bit (72), /* Reserved for future use. */ 1 13 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 1 14 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 1 15 /* open(p,mode,not_used,s) */ 1 16 2 close entry (ptr, fixed (35)),/* close(p,s) */ 1 17 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 18 /* get_line(p,bufptr,buflen,actlen,s) */ 1 19 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 20 /* get_chars(p,bufptr,buflen,actlen,s) */ 1 21 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 1 22 /* put_chars(p,bufptr,buflen,s) */ 1 23 2 modes entry (ptr, char (*), char (*), fixed (35)), 1 24 /* modes(p,newmode,oldmode,s) */ 1 25 2 position entry (ptr, fixed, fixed (21), fixed (35)), 1 26 /* position(p,u1,u2,s) */ 1 27 2 control entry (ptr, char (*), ptr, fixed (35)), 1 28 /* control(p,order,infptr,s) */ 1 29 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 1 30 /* read_record(p,bufptr,buflen,actlen,s) */ 1 31 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 1 32 /* write_record(p,bufptr,buflen,s) */ 1 33 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 1 34 /* rewrite_record(p,bufptr,buflen,s) */ 1 35 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 1 36 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 37 /* seek_key(p,key,len,s) */ 1 38 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 1 39 /* read_key(p,key,len,s) */ 1 40 2 read_length entry (ptr, fixed (21), fixed (35)); 1 41 /* read_length(p,len,s) */ 1 42 1 43 declare iox_$iocb_version_sentinel 1 44 character (4) aligned external static; 1 45 1 46 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 20 21 2 1 /* BEGIN INCLUDE FILE: tape_ansi_cseg.incl.pl1 */ 2 2 /* */ 2 3 /* 1) Modified: 12/01/75 by Ross E. Klinger -- to allow */ 2 4 /* for allocation of the attach and open descriptions */ 2 5 /* within the cseg structure. */ 2 6 /* 2) Modified for resource management. */ 2 7 /* 3) Modified 9/79 by R.J.C. Kissel to handle the new tseg. */ 2 8 /* 4) Modified 4/82 by J.A. Bush for block sizes > 8192 bytes */ 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind9 */ 2 11 dcl cP ptr; /* pointer on which cseg structure is based */ 2 12 dcl cseg_tseg_version_2 fixed bin internal static options (constant) init (2); 2 13 2 14 dcl 1 cseg based (cP), /* control structure */ 2 15 2 file_set_lock bit (1) aligned, /* "1"b if file set in use */ 2 16 2 invalid bit (1) aligned, /* invalid cseg - delete at detach time bit */ 2 17 2 standard fixed bin, /* label standard */ 2 18 /* 1 - ANSI standard */ 2 19 /* 2 - IBM/OS-VS */ 2 20 /* 3 - IBM/DOS-VM */ 2 21 2 attach_description, /* iox_ attach description */ 2 22 3 length fixed bin (17), /* actual length of string */ 2 23 3 string char (256), /* maximum is 256 characters */ 2 24 2 open_description, /* iox_ open description */ 2 25 3 length fixed bin (17), /* actual length of string */ 2 26 3 string char (32), /* maximum is 32 */ 2 27 2 module char (12) varying, /* IO module name */ 2 28 2 ndrives fixed bin, /* maximum number of drives to be used */ 2 29 2 nactive fixed bin, /* number of drives actually in use */ 2 30 2 write_ring bit (1) aligned, /* volumes mounted with write rings */ 2 31 2 protect bit (1) aligned, /* volumes have rings, but are hardware protected */ 2 32 2 density fixed bin, /* file set recording density */ 2 33 /* 2 - 800 bpi NRZI */ 2 34 /* 3 - 1600 bpi PE */ 2 35 2 vcN fixed bin, /* number of links in volume chain */ 2 36 2 fcP ptr, /* file chain pointer */ 2 37 2 flP ptr, /* pointer to file link of current file */ 2 38 2 hdw_status, /* hardware status structure */ 2 39 3 bits bit (72) aligned, /* IOM status */ 2 40 3 no_minor fixed bin, /* number of minor status codes */ 2 41 3 major fixed bin (35), /* major status */ 2 42 3 minor (10) fixed bin (35), /* minor status */ 2 43 2 lbl_buf char (80), /* label I/O buffer */ 2 44 2 open_mode fixed bin, /* opening mode */ 2 45 /* 4 - sequential_input */ 2 46 /* 5 - sequential_output */ 2 47 2 close_rewind bit (1) aligned, /* rewind volume at next close */ 2 48 2 force bit (1) aligned, /* force file overwrite switch */ 2 49 2 user_labels bit (1) aligned, /* process user labels switch */ 2 50 2 no_labels bit (1) aligned, /* "1"b if volume has no labels */ 2 51 2 output_mode fixed bin, /* 0 - input */ 2 52 /* 1 - extend */ 2 53 /* 2 - modify */ 2 54 /* 3 - write */ 2 55 /* 4 - create */ 2 56 2 replace_id char (17), /* replace file identifier */ 2 57 2 retain fixed bin, /* 0 - default to rcp_ defaults */ 2 58 /* 1 - unassign drives and volumes */ 2 59 /* 2 - retain drives, unassign volumes */ 2 60 /* 3 - unassign drives, retain volumes */ 2 61 /* 4 - retain drives and volumes */ 2 62 2 lrec, /* logical record IO control data */ 2 63 3 bufP ptr, /* pointer to current processing buffer */ 2 64 3 nc_buf fixed bin, /* number of characters in buffer */ 2 65 3 offset fixed bin, /* current processing offset within buffer */ 2 66 3 saveP ptr, /* pointer to current D/V format RCW/RDW */ 2 67 3 file_lock bit (1) aligned, /* "1"b if file in use */ 2 68 3 blkcnt fixed bin (35), /* physical block count */ 2 69 3 reccnt fixed bin (35), /* logical record count (not presently used) */ 2 70 3 code fixed bin (35), /* lrec_io_ non-restartable error code */ 2 71 2 read_length, /* read_length control data */ 2 72 3 rlP ptr, /* pointer to read_length segment */ 2 73 3 rlN fixed bin (21), /* number of characters in segment */ 2 74 2 user_label_routine (6) variable entry (char (80), bit (1)), 2 75 /* 1 - read UHL */ 2 76 /* 2 - write UHL */ 2 77 /* 3 - read UTL */ 2 78 /* 4 - write UTL */ 2 79 /* 5 - read UVL */ 2 80 /* 6 - write UVL */ 2 81 /* THE FOLLOWING IS NEEDED ONLY WHILE TAPEIO_ / TDCM IS THE IO PROCEDURE */ 2 82 2 syncP ptr, /* pointer to synchronous IO buffer */ 2 83 2 mode fixed bin, /* 0 = binary -- 1 = 9 mode */ 2 84 2 soft_status, /* software status structure */ 2 85 3 nbuf fixed bin, /* number of suspended buffers */ 2 86 3 buf (2), 2 87 4 bufP ptr, /* pointer to buffer */ 2 88 4 count fixed bin, /* buffer character count */ 2 89 2 ( 2 90 free_list, 2 91 busy_list, 2 92 chain (3), 2 93 bufct (3) 2 94 ) fixed bin, /* buffer management variables */ 2 95 2 wait_switch (1:63) bit (1) unaligned, /* per-drive event wait switches */ 2 96 2 buf_size fixed bin, /* size of each tseg buffer in chars (bytes) */ 2 97 2 tseg aligned, 2 98 3 version_num fixed bin, 2 99 3 areap ptr, /* pointer to DSM area */ 2 100 3 ev_chan fixed bin (71), /* event channel number */ 2 101 3 write_sw fixed bin (1), /* 0 = read, 1 = write */ 2 102 3 sync fixed bin (1), /* non-zero for synchronous i/o */ 2 103 3 get_size fixed bin (1), /* ON for record sizes to be returned */ 2 104 3 ws_segno bit (18), /* rcp_ kluge */ 2 105 3 drive_name char (32), 2 106 3 tracks fixed bin, 2 107 3 density bit (36), 2 108 3 speed bit (36), /* bits are 75, 125, 200 ips respectively */ 2 109 3 pad99 bit (36), /* see tseg.incl.pl1 */ 2 110 3 buffer_offset fixed bin (12), /* offset of first buffer to be processed */ 2 111 3 buffer_count fixed bin (12), /* number of buffers to be processed */ 2 112 3 completion_status 2 113 fixed bin (2), /* 0 = no pending i/o or no status */ 2 114 /* 1 = normal termination of i/o */ 2 115 /* 2 = non-zero major status from previous i/o */ 2 116 3 hardware_status bit (36) aligned, /* major and sub-status */ 2 117 3 error_buffer fixed bin (12), /* buffer in which i/o error occurred */ 2 118 3 command_count fixed bin (12), /* number of non-data commands to execute */ 2 119 3 command_queue (10) fixed bin (6) aligned, /* non-data-transfer commands */ 2 120 3 bufferptr (12) fixed bin (18) aligned,/* relative ptrs to buffers */ 2 121 3 buffer_size (12) fixed bin (18) aligned,/* size of buffer */ 2 122 3 mode (12) fixed bin (2) aligned, /* 0 = bin, 1 = bcd, 2 = 9 track */ 2 123 3 buffer (4) char (cseg.buf_size) aligned, 2 124 /* data buffers */ 2 125 /* END OF TAPEIO_ / TDCM DATA */ 2 126 2 vl (63), /* volume chain link */ 2 127 3 position, /* volume position */ 2 128 4 fflX fixed bin unal, /* index of first file link on volume */ 2 129 4 cflX fixed bin unal, /* index of current file link */ 2 130 4 pos fixed bin unal, /* intra-file position code */ 2 131 /* 0 = in HDR group */ 2 132 /* 1 - in data / passed HDR TM */ 2 133 /* 2 = in EOx group / passed data TM */ 2 134 4 lflX fixed bin unal, /* index of last file link on volume */ 2 135 3 vol_data, 2 136 4 volname char (32), /* volume name */ 2 137 4 canonical_volname 2 138 char (6), /* volume name as appears on label */ 2 139 4 comment char (64) varying, /* mount comment */ 2 140 4 auth_code char (3) aligned, /* authentication code for this volume */ 2 141 4 rcp_id fixed bin (6), /* TDCM DUMMY - CHANGE TO BIT (36) ALIGNED */ 2 142 4 event_chan fixed bin (71), /* rcp_ attach event channel */ 2 143 4 tape_drive char (32), /* name of tape drive */ 2 144 4 ws_segno bit (18), /* segno of IOI workspace (per drive) */ 2 145 4 write_VOL1 fixed bin, /* 0 - correct VOL1 label */ 2 146 /* 1 - blank tape */ 2 147 /* 2 - can't read 1st block */ 2 148 /* 3 - 1st block not VOL1 label */ 2 149 /* 4 - valid VOL1 label but wrong volume ID (Obsolete) */ 2 150 /* 5 - correct VOL1 label, but wrong density */ 2 151 /* 6 - invalid file-set format (Obsolete) */ 2 152 /* -1 - correct VOL1 label of an earlier format */ 2 153 /* (no authentication code) */ 2 154 4 ioi_index fixed bin, /* ioi_ index for IO */ 2 155 3 reg_data, /* registration data */ 2 156 4 tracks fixed bin unal, /* number of tracks */ 2 157 4 density fixed bin unal, /* density code */ 2 158 4 label_type fixed bin unal, /* volume format */ 2 159 4 usage_count fixed bin unal, /* number of attachment to this volume */ 2 160 4 read_errors fixed bin unal, /* number of read errors */ 2 161 4 write_errors fixed bin unal, /* number of write errors */ 2 162 2 chain_area area; /* file chain allocation area */ 2 163 2 164 /* END INCLUDE FILE: tape_ansi_cseg.incl.pl1 */ 22 23 3 1 /* BEGIN INCLUDE FILE: tape_ansi_fd.incl.pl1 */ 3 2 3 3 dcl 1 fd aligned based (cseg.fcP), /* first file chain link */ 3 4 2 backP ptr init (null), /* no previous links (ever) */ 3 5 2 nextP ptr init (null), /* pointer to next link; null if only */ 3 6 2 flX fixed bin init (0), /* link index is 0 */ 3 7 2 vlX fixed bin init (0), /* start file chain on 1st volume */ 3 8 /* in conjunction with eov, below, which */ 3 9 2 dummy_HDR2 bit (1), /* "1"b if file has dummy_HDR2 label */ 3 10 2 eox fixed bin init (2), /* 2 forces volume switch on first real file link */ 3 11 3 12 2 hdr1, /* HDR1 data */ 3 13 3 file_id char (17), /* file identifier */ 3 14 3 set_id char (32), /* reel id of 1st volume of multi-volume set */ 3 15 3 canonical_set_id char (6), /* in canonical format */ 3 16 3 dummy_section fixed bin, 3 17 3 sequence fixed bin, /* file sequence number (inter-file) */ 3 18 3 dummy_generation fixed bin, 3 19 3 dummy_version fixed bin, 3 20 3 creation char (5), /* holds today's date in Julian form */ 3 21 3 expiration char (5), /* Julian expiration date */ 3 22 3 access char (1), 3 23 3 dummy_blkcnt fixed bin (35), 3 24 3 system char (13), /* holds system code for labels */ 3 25 3 26 2 hdr2, /* HDR2 data */ 3 27 3 format fixed bin, /* logical record format code */ 3 28 /* 1 - U format */ 3 29 /* 2 - F format */ 3 30 /* 3 - D format (ANSI) / V format (IBM) */ 3 31 /* 4 - S format (ANSI) / V spanned (IBM) */ 3 32 3 blklen fixed bin, /* actual/maximum physical block length */ 3 33 3 reclen fixed bin (21), /* actual/maximum logical record length */ 3 34 3 dummy_next_volname char (32), 3 35 3 canonical_dummy_next_volname char (6), 3 36 3 blocked bit (1), /* "0"b - unblocked / "1"b - blocked */ 3 37 3 mode fixed bin, /* file data recording mode */ 3 38 /* 1 - ASCII, 9 mode */ 3 39 /* 2 - EBCDIC, 9mode */ 3 40 /* 3 - binary */ 3 41 3 bo fixed bin, /* ANSI buffer offset: # of chars preceding each block */ 3 42 3 cc char (1); /* IBM HDR2 control characters code */ 3 43 3 44 /* END INCLUDE FILE: tape_ansi_fd.incl.pl1 */ 24 25 26 27 /* automatic storage */ 28 dcl i fixed bin, /* temporary volume chain index */ 29 (j, k) fixed bin, /* message temporaries */ 30 mask bit (36) aligned, /* ips interrupt mask */ 31 string char (96) varying; /* volume set string */ 32 33 /* builtin functions and conditions */ 34 dcl (addr, max, null) builtin, 35 (any_other, cleanup) condition; 36 37 /* error codes */ 38 dcl (error_table_$file_busy, 39 error_table_$unable_to_do_io) ext static fixed bin (35); 40 41 /* external procedures */ 42 dcl continue_to_signal_ ext entry (fixed bin (35)), 43 hcs_$delentry_seg ext entry (ptr, fixed bin (35)), 44 hcs_$reset_ips_mask ext entry (bit (36) aligned, bit (36) aligned), 45 hcs_$set_ips_mask ext entry (bit (36) aligned, bit (36) aligned), 46 hcs_$terminate_noname ext entry (ptr, fixed bin (35)), 47 hcs_$truncate_seg ext entry (ptr, fixed bin, fixed bin (35)), 48 ioa_ ext entry options (variable), 49 iox_$propagate ext entry (ptr), 50 tape_ansi_mount_cntl_$free ext entry (ptr, fixed bin, fixed bin (35)), 51 terminate_process_ ext entry (char (*), ptr); 52 53 code = 0; 54 55 cP = iocbP -> iocb.actual_iocb_ptr -> iocb.attach_data_ptr; /* get pointer to control segment */ 56 57 if cseg.file_lock then do; /* file in use? */ 58 code = error_table_$file_busy; 59 return; 60 end; 61 else do; 62 on cleanup begin; 63 if cP = null then go to force_detach; /* no more cseg - detach iocb */ 64 else go to action (1); /* eliminate drives and volumes */ 65 end; 66 cseg.file_lock = "1"b; 67 end; 68 69 go to action (cseg.retain); /* perform appropriate detach retention */ 70 71 action (0): /* CODE WHEN rcp_ IS USED */ 72 action (1): /* retain none */ 73 cseg.write_ring = "0"b; /* no rings */ 74 cseg.protect = "0"b; /* no hardware protection */ 75 do i = 1 to cseg.vcN; /* test every volume link */ 76 if vl (i).rcp_id ^= 0 then do; /* active */ 77 vl (i).cflX = 0; /* invalidate position info */ 78 call tape_ansi_mount_cntl_$free (cP, i, code); /* unassign drive and volume */ 79 if code ^= 0 then cseg.invalid = "1"b; /* invalidate control segment */ 80 end; 81 end; 82 go to detach_exit; 83 84 action (2): /* retain devices */ 85 cseg.write_ring = "0"b; /* no rings */ 86 cseg.protect = "0"b; /* no hardware protect (loading will cancel) */ 87 go to action (1); /* VERSION ONE TEMPORARY */ 88 89 action (3): /* retain volumes */ 90 cseg.write_ring = "0"b; /* no rings */ 91 cseg.protect = "0"b; /* no hardware protect */ 92 go to action (1); /* VERSION ONE TEMPORARY */ 93 94 action (4): /* retain all */ 95 if cseg.invalid then go to action (1); /* retain none if invalid control segment */ 96 97 detach_exit: if cseg.rlP ^= null then do; 98 call hcs_$truncate_seg (cseg.rlP, 0, 0); 99 cseg.rlN = -1; 100 end; 101 102 if cseg.invalid then do; /* cseg is invalid */ 103 if cseg.rlP ^= null then do; /* if read length segment exists */ 104 call hcs_$delentry_seg (cseg.rlP, 0); /* delete it */ 105 cseg.rlP = null; /* and null ptr to avoid problems */ 106 end; 107 call hcs_$delentry_seg (cP, 0); /* delete cseg */ 108 cP = null; 109 end; 110 else if cseg.retain < 3 then do; /* cseg valid - not retaining volumes */ 111 if cseg.write_ring then do; /* if volume set could have changed */ 112 113 if vl (cseg.vcN).fflX ^= 0 then go to force_detach; /* volume set is all volumes */ 114 115 do i = 1 to cseg.vcN while (vl (i).fflX ^= 0); /* find 1st unused volume */ 116 end; 117 cseg.vcN = max (1, i - 1); /* get index of last used volume (but at least 1) */ 118 /* and truncate volume chain */ 119 120 if cseg.vcN = 1 then /* one (or no) volumes */ 121 call ioa_ ("^a: The only member of the volume set is ^a.", cseg.module, vl (1).volname); 122 else do; 123 call ioa_ ("^a: The members of the volume set are:", cseg.module); 124 string = ""; /* initialize volume set string */ 125 k = 0; /* zero entries per line count */ 126 do j = 1 to cseg.vcN; /* output name of each member volume */ 127 string = string || vl (j).volname || " "; 128 k = k + 1; 129 if k = 8 then do; /* line full? */ 130 call ioa_ ("^a", string); /* write it */ 131 string = ""; 132 k = 0; 133 end; 134 end; 135 if k ^= 0 then call ioa_ ("^a", string); /* write last line */ 136 end; 137 end; 138 end; 139 140 force_detach: mask = "0"b; /* initialize ips mask */ 141 on any_other call handler; /* pick up interrupts */ 142 call hcs_$set_ips_mask ("0"b, mask); /* mask all */ 143 iocbP -> iocb.actual_iocb_ptr -> iocb.attach_descrip_ptr = null; /* iocb now detached */ 144 call iox_$propagate (iocbP -> iocb.actual_iocb_ptr); 145 call hcs_$reset_ips_mask (mask, mask); 146 if cP ^= null then do; /* cseg still around */ 147 if cseg.rlP ^= null then do; /* read_length_ segment still around */ 148 call hcs_$terminate_noname (cseg.rlP, 0); /* disappear it */ 149 cseg.rlP = null; 150 end; 151 cseg.file_set_lock, cseg.file_lock = "0"b; /* so unlock it */ 152 end; 153 return; 154 155 156 157 158 handler: procedure; /* intercept any faults during iocb manipulation */ 159 dcl 1 ti aligned, 160 2 version fixed bin init (0), 161 2 code fixed bin (35); 162 163 if mask ^= "0"b then do; /* IPS interrupts masked */ 164 ti.code = error_table_$unable_to_do_io; /* very bad trouble */ 165 call terminate_process_ ("fatal_error", addr (ti)); /* kill the process */ 166 end; 167 call continue_to_signal_ (0); 168 return; 169 end handler; 170 171 172 end tape_ansi_detach_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/82 1606.0 tape_ansi_detach_.pl1 >dumps>old>recomp>tape_ansi_detach_.pl1 20 1 07/28/81 1333.4 iocb.incl.pl1 >ldd>include>iocb.incl.pl1 22 2 06/10/82 1045.3 tape_ansi_cseg.incl.pl1 >ldd>include>tape_ansi_cseg.incl.pl1 24 3 11/20/79 2015.6 tape_ansi_fd.incl.pl1 >ldd>include>tape_ansi_fd.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. actual_iocb_ptr 12 based pointer level 2 dcl 1-4 set ref 55 143 144* addr builtin function dcl 34 ref 165 165 any_other 000140 stack reference condition dcl 34 ref 141 attach_data_ptr 16 based pointer level 2 dcl 1-4 ref 55 attach_descrip_ptr 14 based pointer level 2 dcl 1-4 set ref 143* buf_size 310 based fixed bin(17,0) level 2 dcl 2-14 ref 76 77 113 115 120 127 cP 000100 automatic pointer dcl 2-11 set ref 55* 57 63 66 69 71 74 75 76 76 77 77 78* 79 84 86 89 91 94 97 98 99 102 103 104 105 107* 108* 110 111 113 113 113 115 115 115 117 120 120 120 120 123 126 127 127 146 147 148 149 151 151 cflX based fixed bin(17,0) array level 4 packed unaligned dcl 2-14 set ref 77* cleanup 000146 stack reference condition dcl 34 ref 62 code 1 000106 automatic fixed bin(35,0) level 2 in structure "ti" dcl 159 in procedure "handler" set ref 164* code parameter fixed bin(35,0) dcl 16 in procedure "tape_ansi_detach_" set ref 14 53* 58* 78* 79 continue_to_signal_ 000014 constant entry external dcl 42 ref 167 cseg based structure level 1 unaligned dcl 2-14 error_table_$file_busy 000010 external static fixed bin(35,0) dcl 38 ref 58 error_table_$unable_to_do_io 000012 external static fixed bin(35,0) dcl 38 ref 164 fflX based fixed bin(17,0) array level 4 packed unaligned dcl 2-14 ref 113 115 file_lock 220 based bit(1) level 3 dcl 2-14 set ref 57 66* 151* file_set_lock based bit(1) level 2 dcl 2-14 set ref 151* hcs_$delentry_seg 000016 constant entry external dcl 42 ref 104 107 hcs_$reset_ips_mask 000020 constant entry external dcl 42 ref 145 hcs_$set_ips_mask 000022 constant entry external dcl 42 ref 142 hcs_$terminate_noname 000024 constant entry external dcl 42 ref 148 hcs_$truncate_seg 000026 constant entry external dcl 42 ref 98 i 000102 automatic fixed bin(17,0) dcl 28 set ref 75* 76 77 78* 115* 115* 117 invalid 1 based bit(1) level 2 dcl 2-14 set ref 79* 94 102 ioa_ 000030 constant entry external dcl 42 ref 120 123 130 135 iocb based structure level 1 dcl 1-4 iocbP parameter pointer dcl 16 ref 14 55 143 144 iox_$propagate 000032 constant entry external dcl 42 ref 144 j 000103 automatic fixed bin(17,0) dcl 28 set ref 126* 127* k 000104 automatic fixed bin(17,0) dcl 28 set ref 125* 128* 128 129 132* 135 lrec 212 based structure level 2 unaligned dcl 2-14 mask 000105 automatic bit(36) dcl 28 set ref 140* 142* 145* 145* 163 max builtin function dcl 34 ref 117 module 115 based varying char(12) level 2 dcl 2-14 set ref 120* 123* null builtin function dcl 34 ref 63 97 103 105 108 143 146 147 149 position based structure array level 3 packed unaligned dcl 2-14 protect 124 based bit(1) level 2 dcl 2-14 set ref 74* 86* 91* rcp_id based fixed bin(6,0) array level 4 dcl 2-14 ref 76 read_length 224 based structure level 2 unaligned dcl 2-14 retain 211 based fixed bin(17,0) level 2 dcl 2-14 ref 69 110 rlN 226 based fixed bin(21,0) level 3 dcl 2-14 set ref 99* rlP 224 based pointer level 3 dcl 2-14 set ref 97 98* 103 104* 105* 147 148* 149* string 000106 automatic varying char(96) dcl 28 set ref 124* 127* 127 130* 131* 135* tape_ansi_mount_cntl_$free 000034 constant entry external dcl 42 ref 78 terminate_process_ 000036 constant entry external dcl 42 ref 165 ti 000106 automatic structure level 1 dcl 159 set ref 165 165 vcN 126 based fixed bin(17,0) level 2 dcl 2-14 set ref 75 113 115 117* 120 126 version 000106 automatic fixed bin(17,0) initial level 2 dcl 159 set ref 159* vl based structure array level 2 unaligned dcl 2-14 vol_data based structure array level 3 unaligned dcl 2-14 volname based char(32) array level 4 packed unaligned dcl 2-14 set ref 120* 127 write_ring 123 based bit(1) level 2 dcl 2-14 set ref 71* 84* 89* 111 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. cseg_tseg_version_2 internal static fixed bin(17,0) initial dcl 2-12 fd based structure level 1 dcl 3-3 iox_$iocb_version_sentinel external static char(4) dcl 1-43 NAMES DECLARED BY EXPLICIT CONTEXT. action 000000 constant label array(0:4) dcl 71 ref 64 69 87 92 94 detach_exit 000240 constant label dcl 97 ref 82 force_detach 000620 constant label dcl 140 ref 63 113 handler 000732 constant entry internal dcl 158 ref 141 tape_ansi_detach_ 000062 constant entry external dcl 14 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1200 1240 777 1210 Length 1500 777 40 224 201 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tape_ansi_detach_ 148 external procedure is an external procedure. on unit on line 62 64 on unit on unit on line 141 88 on unit handler internal procedure shares stack frame of on unit on line 141. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME on unit on line 141 000106 ti handler tape_ansi_detach_ 000100 cP tape_ansi_detach_ 000102 i tape_ansi_detach_ 000103 j tape_ansi_detach_ 000104 k tape_ansi_detach_ 000105 mask tape_ansi_detach_ 000106 string tape_ansi_detach_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out return tra_ext enable shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. continue_to_signal_ hcs_$delentry_seg hcs_$reset_ips_mask hcs_$set_ips_mask hcs_$terminate_noname hcs_$truncate_seg ioa_ iox_$propagate tape_ansi_mount_cntl_$free terminate_process_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$file_busy error_table_$unable_to_do_io LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 14 000056 53 000067 55 000071 57 000076 58 000100 59 000102 62 000103 63 000117 64 000127 66 000132 69 000135 71 000137 74 000141 75 000142 76 000151 77 000170 78 000203 79 000217 81 000225 82 000227 84 000230 86 000231 87 000232 89 000233 91 000234 92 000235 94 000236 97 000240 98 000245 99 000262 102 000265 103 000267 104 000273 105 000305 107 000310 108 000322 109 000324 110 000325 111 000330 113 000332 115 000350 116 000375 117 000377 120 000406 123 000444 124 000464 125 000465 126 000466 127 000476 128 000547 129 000551 130 000554 131 000573 132 000574 134 000575 135 000577 140 000620 141 000621 142 000637 143 000652 144 000660 145 000671 146 000701 147 000705 148 000712 149 000724 151 000727 153 000731 158 000732 159 000733 163 000734 164 000737 165 000742 167 000764 168 000774 ----------------------------------------------------------- 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