/* START OF: bsr_structures.incl.pl1 * * * * * */ /* format: style4,declareind10,dclind10,idind20,indattr,delnl,insnl */ /****^ HISTORY COMMENTS: 1) change(86-09-17,Farley), approve(86-07-18,MCR7439), audit(86-09-24,Fawcett), install(86-10-20,MR12.0-1189): Created to define the BCE Save/Restore internal structures. 2) change(87-07-09,Farley), approve(87-07-17,MCR7733), audit(87-07-21,Fawcett), install(87-07-31,MR12.1-1051): Added tdcw and pad fields to stat_ws structure for chaining set-densities to first read/write I/O.. 3) change(87-11-16,Farley), approve(88-02-26,MCR7811), audit(88-03-04,Fawcett), install(88-03-15,MR12.2-1035): Added zero_vtoc flag to pv structure. Moved zrec counter from part to pv. This will allow zeroing of both partition and vtoc areas. 4) change(88-04-12,Farley), approve(88-05-31,MCR7902), audit(88-05-31,Fawcett), install(88-07-05,MR12.2-1052): Added tcb.records_written to count actual records written to tape and to validate the tape sequence numbers of the records written to tape. END HISTORY COMMENTS */ dcl iobp ptr; dcl 1 iob aligned based (iobp), /* I/O buffer */ 2 next_bufx fixed bin (17) unal, /* ptr to the next buffer in list of all buffers */ 2 next_statex fixed bin (17) unal, /* ptr to next buffer of this state */ 2 state fixed bin, /* buffer state */ 2 state_time fixed bin (71), /* time of state change */ 2 datax bit (18) unal, /* index of data page */ 2 flags unal, 3 write bit (1), /* "1"b = write data */ /* "0"b = read data */ 3 pad bit (17), 2 disk_post_buf fixed bin, /* # of the disk IO posting buffer */ 2 idcw_word bit (36), /* holds IDCW */ 2 header_dcw bit (36), /* index to iob.head */ 2 data_dcw bit (36), /* index to page of data */ 2 tdcw_word bit (36), /* transfer dcw to the next buffer */ 2 head like rec_header, /* tape record header. */ 2 pad2 (2) bit (36); /* pad out to 24 words */ dcl part_arrayp ptr; dcl 1 part_array (64) aligned like part based (part_arrayp); dcl partp ptr; dcl 1 part aligned based (partp), /* partition list entry */ 2 name char (4), /* partition name */ 2 pv_name char (32), /* volume name */ 2 device char (8), /* "dskX_NNs" */ 2 pv_pvtx fixed bin (17) unal, /* pv index */ 2 next_idx fixed bin (17) unal, /* thread to next part */ ( 2 complete bit (1), /* save/restore complete */ 2 removed bit (1), /* don't process flag */ 2 pad bit (16) ) unal, 2 frec fixed bin (17) unal, /* starting record from PV label */ 2 lrec fixed bin (17) unal, /* ending record from PV label */ 2 nrec fixed bin (17) unal, /* number of recs from PV label */ 2 tfrec fixed bin (17) unal, /* starting record from preamble.label */ 2 tlrec fixed bin (17) unal, /* ending record from preamble.label */ 2 tnrec fixed bin (17) unal; /* number of recs from preamble.label */ dcl pv_arrayp ptr; dcl 1 pv_array (63) aligned like pv based (pv_arrayp); dcl pvp ptr; dcl 1 pv aligned based (pvp), /* PV list entry */ 2 name char (32), /* pv_name */ 2 real_name char (32), /* pv_name from PV label */ 2 device char (8), /* "dskX_NNs" */ 2 pvtx fixed bin (17) unal, /* pv index */ 2 state fixed bin (17) unal, /* current state in S/R */ 2 restart aligned, /* volume restart info */ 3 rec_on_pv fixed bin (18), /* restart at this record */ 3 rec_in_type fixed bin, /* relative record */ 2 part_idx fixed bin (17) unal, /* index to partition thread */ ( 2 all bit (1), /* save all flag */ 2 part_requested bit (1), /* asked for partition(s) */ 2 all_parts bit (1), /* user wants all partitions */ 2 only_part bit (1), /* only s/r partition flag */ 2 complete bit (1), /* save/restore complete */ 2 removed bit (1), /* don't process flag */ 2 zero_vtoc bit (1), /* used to clear VTOC before restore */ 2 pad bit (11) ) unal, 2 zrec fixed bin (17) unal; /* used during zeroing on restore */ dcl si_version_1 char (8) internal static options (constant) init ("si_ver01"); dcl si_ptr ptr; dcl 1 si aligned based (si_ptr), /* per set info */ 2 version_id char (8), /**** Pointers */ 2 bit_map_ptr ptr, /* ptr to bit map */ 2 datap ptr, /* ptr to tape data page */ 2 info_tape_label_ptr ptr, 2 part_ptr ptr, 2 pv_ptr ptr, 2 tape_label_ptr ptr, 2 tcb_ptr ptr, /* tape control-block ptr */ 2 vol_preamble_ptr ptr, 2 vol_map_ptr ptr, 2 vol_info_ptr ptr, /**** Fixed Bin */ 2 current_rec_in_area fixed bin (18), 2 first_disk_post_buf fixed bin, 2 first_rec fixed bin (18), 2 first_tape_number fixed bin, 2 ioi_term_post_buf fixed bin, 2 ioi_spec_post_buf fixed bin, 2 ioi_statusx fixed bin (18), 2 last_rec fixed bin (18), 2 last_tape_number fixed bin, 2 last_used_vtoc_record fixed bin (18), 2 next_tape_number fixed bin, 2 old_rec_type fixed bin, 2 part_count fixed bin, 2 previous_rec fixed bin (18), 2 pv_count fixed bin, 2 pvx fixed bin, 2 rec_type fixed bin, 2 recordx fixed bin (18), 2 tape_count fixed bin, 2 tape_rec_count fixed bin (35), 2 tape_seq_number fixed bin, 2 tcbx fixed bin, /* index into tape control-block array */ 2 usable_tape_devices fixed bin, /**** Character Strings */ 2 old_part_name char (4) unal, 2 tape_set char (32) unal, /**** Bit Strings */ 2 complete bit (1), 2 display_pv_record bit (1), 2 find_start_of_part bit (1), 2 last_idcwx bit (18), 2 need_info_tape bit (1), 2 need_zero_record bit (1), 2 pv_record_detected bit (1), 2 pvid_being_restored bit (36), 2 restart bit (1), 2 restart_requested bit (1), 2 tape_set_uid bit (36), 2 write_eof bit (1), 2 written_preamble bit (1), 2 written_tape_label bit (1); dcl sri_version_1 char (8) internal static options (constant) init ("sri_v001"); dcl srip ptr; dcl 1 sri aligned based (srip), /* save/restore info */ 2 version_id char (8), /* current structure version */ 2 cf_arrayp ptr, /* control file array ptr */ 2 cf_count fixed bin, /* control files given */ 2 cfx fixed bin, /* current control file index */ 2 flags unaligned, 3 doing_restore bit (1), /* "1"= restore, "0"= save */ 3 debug bit (1), /* general debug flag */ 3 pad bit (34), 2 set_index fixed bin (17) unal, /* current set_info index */ 2 set_count fixed bin (17) unal, /* SETs defined */ 2 set_infop ptr, /* ptr to set_info array */ 2 part_area_ptr ptr, /* ptr to part area */ 2 pv_area_ptr ptr, /* ptr to pv area */ 2 tcb_area_ptr ptr, /* ptr to tcb area */ 2 pvt_array_ptr ptr, /* ptr to pvt_array */ 2 whoami char (8) unaligned; /* "save" or "restore" */ dcl 1 stat_ws aligned based (tcb.wksp), /* IOI workspace for non-data xfers */ 2 retry_dcw (3) bit (36), 2 idcw bit (36), /* non-data idcw */ 2 tdcw bit (36), /* tdcw for chaining when needed */ 2 pad bit (36), /* pad, so stat_ws.stat will be even */ 2 stat like istat; dcl 1 survey_ws aligned based (tcb.wksp), /* IOI workspace for survey devices */ 2 idcw bit (36), /* survey devices command. */ 2 dcw bit (36), /* DCW for survey devices command. */ 2 stat like istat, 2 data, 3 handler (16) unaligned, 4 pad1 bit (1), 4 reserved bit (1), 4 operational bit (1), 4 ready bit (1), 4 number uns fixed bin (5), 4 pad2 bit (1), 4 speed uns fixed bin (3), 4 nine_track bit (1), 4 density uns fixed bin (4); dcl tcb_arrayp ptr; dcl 1 tcb_array (0:16) aligned like tcb based (tcb_arrayp); /* 0 is for MPC if needed */ dcl tcbp ptr; dcl 1 tcb aligned based (tcbp), /* tape control-block */ 2 name char (8), /* "tapX_nn" */ 2 device fixed bin, /* device number */ 2 ioi_index fixed bin, /* IOI index */ 2 ioi_ev_chn fixed bin (71), /* event channel */ 2 wksp ptr, /* ptr to workspace */ 2 tape_vol_number char (4), /* current tape volume# */ 2 nbufs fixed bin, /* # of buffers */ 2 buf_listx fixed bin, /* offset to buffer list */ 2 status_count fixed bin, /* number of entries in status queue */ 2 status_idx fixed bin, /* status queue index */ 2 statusx fixed bin, /* position of status queue */ 2 records_written fixed bin, /* number of records written */ 2 retry_count fixed bin, /* times we've retried */ 2 flags unal, /* FLAGS */ 3 removed bit (1), /* device is unavailable */ 3 attached bit (1), /* device is attached via IOI */ 3 surveyed bit (1), /* device has been surveyed */ 3 fips bit (1), /* device is a FIPS type */ 3 write_tape bit (1), /* user wants to write */ 3 mount_requested bit (1), /* Mount message already displayed */ 3 tape_mounted bit (1), /* tape on device */ 3 write_protected bit (1), /* no write ring */ 3 density_set bit (1), /* device density has been set */ 3 one_eof bit (1), /* single EOF detected */ 3 eot bit (1), /* EOT detected */ 3 retry_in_progress bit (1), 2 density_command bit (6) unal, /* for idcw when setting density */ 2 density bit (5) unal, /* current density */ /* "00000"b = not set */ /* "00100"b = 800 */ /* "00010"b = 1600 */ /* "00001"b = 6250 */ 2 densities_available bit (5) unal, /* available densities */ 2 speed bit (3) unal; /* speed of device */ /* "100"b = 75 ips */ /* "010"b = 125 ips */ /* "001"b = 200 ips */ /* END OF: bsr_structures.incl.pl1 * * * * * */ */ ----------------------------------------------------------- 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 */