COMPILATION LISTING OF SEGMENT tape_mult_modes_ 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 1003.5 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 6* * * 7* *********************************************************** */ 8 /* tape_mult_modes_ -- modes entrypoint for tape_mult_. 9* Implemented for the unfortunate but unavoidable "async" mode.*/ 10 11 /* format: style2 */ 12 13 tape_mult_modes_: 14 procedure (p_iocb_ptr, p_new_modes, p_old_modes, p_code); 15 16 /**** Modification history: 17* Created 1985-03-18. 18**/ 19 20 declare p_iocb_ptr pointer; 21 declare (p_new_modes, p_old_modes) 22 char (*); 23 declare p_code fixed bin (35); 24 25 declare iocb_ptr pointer; 26 declare error_table_$bad_mode fixed bin (35) ext static; 27 28 29 iocb_ptr = p_iocb_ptr -> iocb.actual_iocb_ptr; 30 tmdb_ptr = iocb_ptr -> iocb.attach_data_ptr; 31 32 p_code = 0; 33 34 /**** Note that the following is not a "general" modes entrypoint. 35* We never expect to add another mode to tape_mult_, because 36* we intend to replace it with mtape_. If we do add, the resources 37* to code mode_string_ calls and the like can be spent at a later time */ 38 39 if tmdb.async_sw 40 then p_old_modes = "async."; /* old mode string is trivial to construct */ 41 else p_old_modes = "^async."; 42 43 if p_new_modes = "" | p_new_modes = "." 44 then return; 45 46 if p_new_modes = "async" | p_new_modes = "async." 47 then tmdb.async_sw = "1"b; 48 49 else if p_new_modes = "^async" | p_new_modes = "^async." 50 then tmdb.async_sw = "0"b; 51 52 else p_code = error_table_$bad_mode; 53 return; 54 1 1 /* Begin include file ... tmdb.incl.pl1 1 2* * 1 3* * Created by Bill Silver on 10/20/74 1 4* * Modified by J. A. Bush 12/30/80 for bootable tape labels 1 5* * Modified by J. A. Bush 12/15/81 for re-write of read error recovery 1 6* * Modified 8/82 by S.Krupp for change from tdcm_ to tape_ioi_ 1 7* * This include file describes the work variables used by the Multics standard 1 8* * tape I/O module, tape_mult_. This include file must be used with the include 1 9* * file: mstr.incl.pl1 1 10**/ 1 11 1 12 1 13 /****^ HISTORY COMMENTS: 1 14* 1) change(86-10-13,GWMay), approve(86-10-13,MCR7552), 1 15* audit(86-10-13,Martinson), install(86-10-20,MR12.0-1189): 1 16* added fields to the tmdb structure that will add support for the use of 1 17* rcp in determining the density and format of a tape. 1 18* END HISTORY COMMENTS */ 1 19 1 20 1 21 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 1 22 dcl tmdb_ptr ptr; /* Pointer to tape_mult_ data block. */ 1 23 1 24 dcl 1 tmdb based (tmdb_ptr) aligned, /* tape_mult_ data block. */ 1 25 2 attach, /* Attach description. */ 1 26 3 length fixed bin, /* Actual length of attach description. */ 1 27 3 description char (64), /* Attach description string. */ 1 28 2 open, /* Open description. */ 1 29 3 length fixed bin, /* Actual length of open description. */ 1 30 3 description char (32), /* Open description string. */ 1 31 2 opt, /* Attach options. */ 1 32 3 flags, /* Flags set from user input and options. */ 1 33 ( 4 com_err bit (1), /* ON => call com_err_ if there is an error. */ 1 34 4 ring bit (1), /* ON => use writ ring, OFF => no write ring. */ 1 35 4 system bit (1), /* ON => user wants to be a system process. */ 1 36 4 err_tal bit (1), /* ON => user wants error report */ 1 37 4 begin bit (1), /* ON => begin processing tape */ 1 38 4 write_sw bit (1), /* ON => write allowed */ 1 39 4 async_sw bit (1) /* ON => user is prepared for errors to imply that previous put_chars failed. */ 1 40 ) unaligned, /* ON => user wants error tally displayed on closing */ 1 41 3 reel_name char (32) unal, /* Tape reel slot ID. */ 1 42 3 volume_set_id char (32) unal, /* volume set name */ 1 43 3 mount_mode char (7), /* Mount mode: "writing" or "reading". */ 1 44 3 tracks fixed bin, /* Either 9 or 7. */ 1 45 3 density fixed bin, /* Either 1600 or 800. */ 1 46 3 tbpp ptr, /* If not null, ptr to temp seg containing boot program */ 1 47 3 blp ptr, /* Ptr to buffer containing boot label record (READ ONLY) */ 1 48 3 speed bit (36), /* bits are 75, 125, 200 ips */ 1 49 3 comment char (64), /* User comment to operator. */ 1 50 2 head like mstr_header, /* Dummy tape record header. */ 1 51 2 trail like mstr_trailer, /* Dummy tape record trailer. */ 1 52 2 work, /* Work variables used. */ 1 53 3 flags, /* Flags we need that aren't in head.flags. */ 1 54 ( 4 eod bit (1), /* ON => end of good data. */ 1 55 4 eof bit (1), /* ON => End of File. */ 1 56 4 bot bit (1), /* ON => beginning of tape */ 1 57 4 retry_read bit (1), /* ON => try reread recovery */ 1 58 4 read_fwd bit (1), /* ON => want to read forward (recovery) */ 1 59 4 fatal_read_error bit (1), /* ON => read error recovery failed. */ 1 60 4 data_loss bit (1) /* ON => read something, but with evidence that we lost something */ 1 61 ) unaligned, 1 62 3 rcp_id bit (36), /* Id of current tape drive attachment */ 1 63 3 tioi_id bit (36), /* Id of current tape_ioi_ activation */ 1 64 3 label_uid bit (72), /* Unique ID of label record. */ 1 65 3 label_version fixed bin, /* version of label, returned on read */ 1 66 3 output_mode fixed bin, /* output mode tape was written with */ 1 67 3 buf_pos fixed bin, /* Current position within current bufffer. */ 1 68 3 curr_buf ptr, /* Current buffer being processed. */ 1 69 3 next_buf ptr, /* Next buffer to be processed. */ 1 70 3 rec_length fixed bin (21), /* Length of data record in characters. */ 1 71 3 n_full fixed bin, /* Number of buffers ready to write. */ 1 72 3 n_recs_to_eof fixed bin, /* Num recs to write pre eof mark. */ 1 73 3 n_bufs fixed bin, /* Total number of buffers. */ 1 74 3 bufs_per_subset fixed bin, /* Number of buffers per subset. */ 1 75 3 buf_len fixed bin (21), /* Length of a buffer. */ 1 76 3 buffer (8) ptr, /* Pointers to a subset of I/O buffers. */ 1 77 2 meters, 1 78 3 fwd_rd_recovery fixed bin, 1 79 3 reposition_recovery 1 80 fixed bin, 1 81 2 channels, 1 82 3 rcp fixed bin(71), /* Regular, used by rcp. */ 1 83 3 ioi fixed bin(71), /* Fast, used by ioi. */ 1 84 2 buffer (1040) fixed bin (35), /* Work buffer (currently used for label I/O). */ 1 85 2 volume_density fixed bin, /* either the input from -den or the value */ 1 86 1 87 /* returned by rcp_$check_attach in tape_info */ 1 88 2 volume_format char (16); /* determined by rcp_ */ 1 89 /* End of include file ... tmdb.incl.pl1 */ 55 2 1 2 2 /* Begin include file ...... mstr.incl.pl1 */ 2 3 /* Modified 2/11/74 by N. I. Morris */ 2 4 /* Modified 12/30/80 by J. A. Bush for bootable tape labels */ 2 5 /* Modified 12/14/82 by J. A. Bush to add version number to the record header */ 2 6 2 7 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 2 8 dcl mstrp ptr; /* pointer to MST record */ 2 9 2 10 dcl 1 mstr based (mstrp) aligned, /* Multics standard tape mstr */ 2 11 2 head like mstr_header, /* tape record header */ 2 12 2 data bit (36864 refer (mstr.head.data_bit_len)), 2 13 /* record body */ 2 14 2 trail like mstr_trailer; /* record trailer */ 2 15 2 16 dcl 1 mst_label based (mstrp) aligned, /* bootable label structure */ 2 17 2 xfer_vector (4), /* bootload interrupt transfer vector */ 2 18 3 lda_instr bit (36), /* this will be a "LDA 4" instruction */ 2 19 3 tra_instr bit (36), /* a "TRA" instruction to start of boot pgm */ 2 20 2 head like mstr_header, /* standard record header */ 2 21 2 vid like volume_identifier, /* tape volume info */ 2 22 2 fv_overlay (0:31), /* overlay for fault vectors when tape booted */ 2 23 3 scu_instr bit (36), /* an "SCU" instruction to address of fault_data */ 2 24 3 dis_instr bit (36), /* a "DIS" instruction, with Y field = to its own addr */ 2 25 2 fault_data (8) bit (36), /* SCU data for unexpected faults goes here */ 2 26 2 boot_pgm_path char (168) unaligned, /* path name of boot program */ 2 27 2 userid char (32) unaligned, /* Storage for Person.Project.Instance of creator of tape */ 2 28 2 label_version fixed bin, /* defined by LABEL_VERSION constant below */ 2 29 2 output_mode fixed bin, /* mode in which tape was written with */ 2 30 2 boot_pgm_len fixed bin, /* length in words of boot program */ 2 31 2 copyright char (56), /* Protection notice goes here if boot pgm is written */ 2 32 2 pad (13) bit (36), /* pad out to 192 (300 octal) */ 2 33 2 boot_pgm (0 refer (mst_label.boot_pgm_len)) bit (36), 2 34 /* boot program */ 2 35 2 trail like mstr_trailer; /* standard record trailer */ 2 36 2 37 dcl 1 mstr_header based aligned, /* Multics standard tape record header */ 2 38 ( 2 c1 bit (36), /* constant = 670314355245(8) */ 2 39 2 uid bit (72), /* unique ID */ 2 40 2 rec_within_file fixed bin (17), /* phys. rec. # within phys. file */ 2 41 2 phy_file fixed bin (17), /* phys. file # on phys. tape */ 2 42 2 data_bits_used fixed bin (17), /* # of bits of data in record */ 2 43 2 data_bit_len fixed bin (17), /* bit length of data space */ 2 44 2 flags, /* record flags */ 2 45 3 admin bit (1), /* admin record flag */ 2 46 3 label bit (1), /* label record flag */ 2 47 3 eor bit (1), /* end-of-reel record flag */ 2 48 3 pad1 bit (11), 2 49 3 set bit (1), /* ON if any of following items set */ 2 50 3 repeat bit (1), /* repeated record flag */ 2 51 3 padded bit (1), /* record contains padding flag */ 2 52 3 eot bit (1), /* EOT reflector encountered flag */ 2 53 3 drain bit (1), /* synchronous write flag */ 2 54 3 continue bit (1), /* continue on next reel flag */ 2 55 3 pad2 bit (4), 2 56 2 header_version fixed bin (3) unsigned, /* current header version number */ 2 57 2 repeat_count fixed bin (8), /* repetition count */ 2 58 2 checksum bit (36), /* checksum of header and trailer */ 2 59 2 c2 bit (36) 2 60 ) unal; /* constant = 512556146073(8) */ 2 61 2 62 dcl 1 mstr_trailer based aligned, /* Multics standard tape record trailer */ 2 63 ( 2 c1 bit (36), /* constant = 107463422532(8) */ 2 64 2 uid bit (72), /* unique ID (matches header) */ 2 65 2 tot_data_bits fixed bin (35), /* total data bits written on logical tape */ 2 66 2 pad_pattern bit (36), /* padding pattern */ 2 67 2 reel_num fixed bin (11), /* reel sequence # */ 2 68 2 tot_file fixed bin (23), /* phys. file number */ 2 69 2 tot_rec fixed bin (35), /* phys. record # for logical tape */ 2 70 2 c2 bit (36) 2 71 ) unal; /* constant = 265221631704(8) */ 2 72 2 73 dcl 1 volume_identifier based aligned, /* tape volume info */ 2 74 ( 2 installation_id char (32), /* installation that created tape */ 2 75 2 tape_reel_id char (32), /* tape reel name */ 2 76 2 volume_set_id char (32) 2 77 ) unaligned; /* name of the volume set */ 2 78 2 79 dcl ( 2 80 header_c1 init ("670314355245"b3), 2 81 header_c2 init ("512556146073"b3), 2 82 trailer_c1 init ("107463422532"b3), 2 83 trailer_c2 init ("265221631704"b3), 2 84 label_c1 init ("000004235000"b3) 2 85 ) bit (36) static; 2 86 2 87 dcl LABEL_VERSION fixed bin static options (constant) init (3); 2 88 /* current label version */ 2 89 dcl HEADER_VERSION fixed bin static options (constant) init (1); 2 90 /* current header version */ 2 91 2 92 /* End of include file ...... mstr.incl.pl1 */ 2 93 56 3 1 /* BEGIN INCLUDE FILE ..... iocb.incl.pl1 ..... 13 Feb 1975, M. Asherman */ 3 2 /* Modified 11/29/82 by S. Krupp to add new entries and to change 3 3* version number to IOX2. */ 3 4 /* format: style2 */ 3 5 3 6 dcl 1 iocb aligned based, /* I/O control block. */ 3 7 2 version character (4) aligned, /* IOX2 */ 3 8 2 name char (32), /* I/O name of this block. */ 3 9 2 actual_iocb_ptr ptr, /* IOCB ultimately SYNed to. */ 3 10 2 attach_descrip_ptr ptr, /* Ptr to printable attach description. */ 3 11 2 attach_data_ptr ptr, /* Ptr to attach data structure. */ 3 12 2 open_descrip_ptr ptr, /* Ptr to printable open description. */ 3 13 2 open_data_ptr ptr, /* Ptr to open data structure (old SDB). */ 3 14 2 reserved bit (72), /* Reserved for future use. */ 3 15 2 detach_iocb entry (ptr, fixed (35)),/* detach_iocb(p,s) */ 3 16 2 open entry (ptr, fixed, bit (1) aligned, fixed (35)), 3 17 /* open(p,mode,not_used,s) */ 3 18 2 close entry (ptr, fixed (35)),/* close(p,s) */ 3 19 2 get_line entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 3 20 /* get_line(p,bufptr,buflen,actlen,s) */ 3 21 2 get_chars entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 3 22 /* get_chars(p,bufptr,buflen,actlen,s) */ 3 23 2 put_chars entry (ptr, ptr, fixed (21), fixed (35)), 3 24 /* put_chars(p,bufptr,buflen,s) */ 3 25 2 modes entry (ptr, char (*), char (*), fixed (35)), 3 26 /* modes(p,newmode,oldmode,s) */ 3 27 2 position entry (ptr, fixed, fixed (21), fixed (35)), 3 28 /* position(p,u1,u2,s) */ 3 29 2 control entry (ptr, char (*), ptr, fixed (35)), 3 30 /* control(p,order,infptr,s) */ 3 31 2 read_record entry (ptr, ptr, fixed (21), fixed (21), fixed (35)), 3 32 /* read_record(p,bufptr,buflen,actlen,s) */ 3 33 2 write_record entry (ptr, ptr, fixed (21), fixed (35)), 3 34 /* write_record(p,bufptr,buflen,s) */ 3 35 2 rewrite_record entry (ptr, ptr, fixed (21), fixed (35)), 3 36 /* rewrite_record(p,bufptr,buflen,s) */ 3 37 2 delete_record entry (ptr, fixed (35)),/* delete_record(p,s) */ 3 38 2 seek_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 3 39 /* seek_key(p,key,len,s) */ 3 40 2 read_key entry (ptr, char (256) varying, fixed (21), fixed (35)), 3 41 /* read_key(p,key,len,s) */ 3 42 2 read_length entry (ptr, fixed (21), fixed (35)), 3 43 /* read_length(p,len,s) */ 3 44 2 open_file entry (ptr, fixed bin, char (*), bit (1) aligned, fixed bin (35)), 3 45 /* open_file(p,mode,desc,not_used,s) */ 3 46 2 close_file entry (ptr, char (*), fixed bin (35)), 3 47 /* close_file(p,desc,s) */ 3 48 2 detach entry (ptr, char (*), fixed bin (35)); 3 49 /* detach(p,desc,s) */ 3 50 3 51 declare iox_$iocb_version_sentinel 3 52 character (4) aligned external static; 3 53 3 54 /* END INCLUDE FILE ..... iocb.incl.pl1 ..... */ 57 58 59 end tape_mult_modes_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0812.6 tape_mult_modes_.pl1 >spec>install>1112>tape_mult_modes_.pl1 55 1 10/21/86 1251.7 tmdb.incl.pl1 >ldd>include>tmdb.incl.pl1 56 2 12/20/82 1113.8 mstr.incl.pl1 >ldd>include>mstr.incl.pl1 57 3 05/20/83 1846.4 iocb.incl.pl1 >ldd>include>iocb.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 3-6 ref 29 async_sw 32(06) based bit(1) level 4 packed packed unaligned dcl 1-24 set ref 39 46* 49* attach_data_ptr 16 based pointer level 2 dcl 3-6 ref 30 error_table_$bad_mode 000010 external static fixed bin(35,0) dcl 26 ref 52 flags 32 based structure level 3 dcl 1-24 iocb based structure level 1 dcl 3-6 iocb_ptr 000100 automatic pointer dcl 25 set ref 29* 30 mstr_header based structure level 1 dcl 2-37 mstr_trailer based structure level 1 dcl 2-62 opt 32 based structure level 2 dcl 1-24 p_code parameter fixed bin(35,0) dcl 23 set ref 13 32* 52* p_iocb_ptr parameter pointer dcl 20 ref 13 29 p_new_modes parameter char packed unaligned dcl 21 ref 13 43 43 46 46 49 49 p_old_modes parameter char packed unaligned dcl 21 set ref 13 39* 41* tmdb based structure level 1 dcl 1-24 tmdb_ptr 000102 automatic pointer dcl 1-22 set ref 30* 39 46 49 volume_identifier based structure level 1 dcl 2-73 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. HEADER_VERSION internal static fixed bin(17,0) initial dcl 2-89 LABEL_VERSION internal static fixed bin(17,0) initial dcl 2-87 header_c1 internal static bit(36) initial packed unaligned dcl 2-79 header_c2 internal static bit(36) initial packed unaligned dcl 2-79 iox_$iocb_version_sentinel external static char(4) dcl 3-51 label_c1 internal static bit(36) initial packed unaligned dcl 2-79 mst_label based structure level 1 dcl 2-16 mstr based structure level 1 dcl 2-10 mstrp automatic pointer dcl 2-8 trailer_c1 internal static bit(36) initial packed unaligned dcl 2-79 trailer_c2 internal static bit(36) initial packed unaligned dcl 2-79 NAME DECLARED BY EXPLICIT CONTEXT. tape_mult_modes_ 000021 constant entry external dcl 13 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 172 204 132 202 Length 410 132 12 170 40 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tape_mult_modes_ 70 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tape_mult_modes_ 000100 iocb_ptr tape_mult_modes_ 000102 tmdb_ptr tape_mult_modes_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return_mac ext_entry_desc NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_mode LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000014 29 000041 30 000046 32 000050 39 000051 41 000061 43 000065 46 000077 49 000112 52 000125 53 000127 ----------------------------------------------------------- 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