1 /* BEGIN INCLUDE FILE mtape_data.incl.pl1. Created by J. A. Bush 10/06/82 */ 2 /* format: style4 */ 3 4 dcl mtdp ptr; 5 6 dcl mtape_data_version_1 char (8) int static options (constant) init ("mtdv0001"); 7 8 dcl 1 mtape_data aligned based (mtdp), 9 2 version char (8), /* Current structure version */ 10 2 areap ptr, /* Pointer to an allocation area */ 11 2 iocb_ptr ptr, /* Pointer to our IO control block */ 12 2 atdp ptr, /* Pointer to the attach description string */ 13 2 opdp ptr, /* Pointer to the open description string */ 14 2 cldp ptr, /* Pointer to close description string */ 15 2 dtdp ptr, /* Pointer to detach description string */ 16 2 cmtdp ptr, /* If non-null, Ptr to allocated copy of mtape_data */ 17 2 vs_head ptr, /* Pointer to the first volume_set structure */ 18 2 vs_tail ptr, /* Pointer to the last volume_set structure */ 19 2 vs_current ptr, /* Pointer to the current volume_set structure */ 20 2 vs_mounted_tail ptr, /* Pointer to MRM volume_set member */ 21 2 fi_head ptr, /* Pointer to the first file_info structure */ 22 2 fi_tail ptr, /* Pointer to the last file_info structure */ 23 2 fi_current ptr, /* Pointer to the current file_info structure */ 24 2 tape_infop ptr, /* Pointer to rcp tape info structure */ 25 2 last_ur_status_ptr ptr, /* If non-null, Ptr to last unrecoverable status */ 26 2 io_echan fixed bin (71), /* Fast wait channel for I/O interrupts */ 27 2 mount_echan fixed bin (71), /* Regular wait channel for mount requests */ 28 2 data_xfer_args, /* Arguments for time critical (read/write) calls */ 29 3 arg_buf_ptr ptr, /* Pointer to users buffer */ 30 3 arg_buf_len fixed bin (21), /* Length of users buffer in bytes */ 31 3 arg_rec_len fixed bin (21), /* Length of record read in bytes */ 32 2 error_lock fixed bin (35), /* if ^= 0 = file locked error code */ 33 2 abs_ans char (3), /* Query answer (yes or no) for abs user */ 34 2 user_type bit (1), /* "1"b => interactive; "0"b => absentee */ 35 2 display_errors bit (1), /* "1"b => display verbose error messages */ 36 2 force_end_of_volume bit (1), /* "1"b => simulate EOV on next write */ 37 2 opd_len fixed bin (21), /* Allocated length of open description */ 38 2 drives_in_use fixed bin, /* Number of tape drives currently in use */ 39 2 data_buffers, /* Info about data buffers */ 40 3 buf_ptrs (8) ptr, /* Pointers to a subset of ioi buffers */ 41 3 blind_buf_ptrs (8) ptr, /* Pointers to other subset of buffers */ 42 3 buf_len (8) fixed bin (21), /* Length of buffers in 9 bit bytes */ 43 3 blind_buf_len (8) fixed bin (21), /* Lengths of other subset of buffers */ 44 3 nbufs fixed bin, /* Number of data buffers currently in use */ 45 3 buf_size fixed bin (21), /* Allocated size of data buffers in bytes */ 46 3 bufs_per_subset fixed bin, /* Number of buffers to write/read per I/O */ 47 3 cur_buf_idx fixed bin, /* Index into subset of current buffer */ 48 3 run bit (1), /* "1"b => wrt I/O queued thru tape_ioi_; "0"b => ^Queued */ 49 2 label_buffer, /* Info about label record buffer */ 50 3 lab_bufp ptr, /* Pointer to label I/O buffer */ 51 3 lab_buf_len fixed bin (21), /* Length of label buffer in 9 bit bytes */ 52 2 tlb ptr, /* Pointer to a temp label record structure */ 53 2 position, /* Position on current volume */ 54 3 phy_file fixed bin, /* physical file number */ 55 3 phy_block fixed bin, /* physical block within physical file */ 56 2 current_file, /* instantanious info about current file */ 57 3 cur_block, /* info about current block */ 58 4 cur_buf_ptr ptr, /* Pointer to the current data buffer */ 59 4 log_record_ptr ptr, /* Pointer to current logical record */ 60 4 length fixed bin (21), /* Length of current block in bytes */ 61 4 processed fixed bin (21), /* Number of chars processed already */ 62 4 remain fixed bin (21), /* Number of chars remaining to be processed */ 63 4 log_record fixed bin (21), /* Log. record within the current block */ 64 3 char_size fixed bin, /* Size in bits of the data chars of this file */ 65 3 padding_char char (1), /* To pad blocks to mod 4 on binary writes */ 66 3 length_mode fixed bin, /* 0 => W/R mod 4 blocks; 1 => W/R non-mod 4 blocks */ 67 3 hdw_mode fixed bin, /* Hardware recording mode: 68 1 = binary; 2 = nine track; 3 = BCD */ 69 3 conversion fixed bin, /* File data conversion: 70 0 = no conversion; 1 = ASCII<->EBCDIC; 2 = ASCII<->BCD */ 71 3 buffer_offset fixed bin, /* Number of bytes prior to data */ 72 3 block_size fixed bin (21), /* Maximum block size for this file */ 73 3 record_size fixed bin (21), /* Maximum record size for this file */ 74 3 prev_block_no fixed bin (21), /* Number of previous block read */ 75 3 ad_file_format fixed bin, /* 1 = U; 2 = F; 3 = D or V; 4 = S or VS */ 76 3 file_blocked bit (1), /* "1"b => file is blocked */ 77 3 native_file bit (1), /* "1"b => current file written by mtape_ PFM */ 78 3 write_after_read bit (1), /* "1"b => truncate file (and file_set) at this record */ 79 3 first_file bit (1), /* "1"b => first file has been processed */ 80 3 tot_bytes_processed fixed bin (35), /* total bytes in this file section */ 81 3 last_io fixed bin, /* Last I/O operation (1 = read; 2 = write) */ 82 3 lrec_rrcx fixed bin, /* current index of the lrec round robin counter */ 83 3 lrec_rrc, /* history of last n logical records */ 84 4 block_no (0:7) fixed bin (35), /* block (within file section) where lrec starts */ 85 4 block_len (0:7) fixed bin (35), /* block len of current block */ 86 4 lrec_no (0:7) fixed bin (35), /* logical record within currnt block */ 87 4 abs_byte (0:7) fixed bin (35), /* byte (within file section) where lrec starts */ 88 4 byte_offset (0:7) fixed bin, /* offset of 1st byte of lrec (within block) */ 89 3 blk_rrcx fixed bin, /* index into blk_rrrc array of last block */ 90 3 blk_rrrc (0:7) fixed bin (35), /* contains Lrec count of last n blocks */ 91 3 tot_lrec fixed bin (35), /* Total logical records processed in current file */ 92 2 tioi_id bit (36), /* Identifier used for calls to tape_ioi_ */ 93 2 attach_info_ptr ptr, /* Pointer to attach option info */ 94 2 open_info_ptr ptr, /* Pointer to open option info */ 95 2 close_info_ptr ptr, /* Pointer to close option info */ 96 2 detach_info_ptr ptr, /* Pointer to detach option info */ 97 2 pfm_info_ptr ptr, /* Pointer to PFM info block */ 98 2 saved_pfm_info_ptr ptr, /* Pointer to info for "change_module" control OP */ 99 2 pfm_name char (32), /* Name of Per-Format module */ 100 2 pfm_required_entries like pfm_entries, /* Required entry point declarations in PFM */ 101 2 pfm_work_area (32) fixed bin (35); /* PFM work buffer */ 102 103 dcl 1 pfm_entries based aligned, /* Entry declarations for PFM entries */ 104 2 pfm_init entry (ptr, fixed bin (35)), /* PFM initialization entry */ 105 2 file_open entry (ptr, fixed bin (35)), /* PFM file_open entry */ 106 2 file_close entry (ptr, fixed bin (35)), /* PFM file_close entry */ 107 2 read entry (ptr, fixed bin (35)), /* PFM read entry */ 108 2 write entry (ptr, fixed bin (35)), /* PFM write entry */ 109 2 order entry (ptr, char (*), ptr, ptr, fixed bin (35)), /* PFM control order entry */ 110 2 decode_file_labels entry (ptr, ptr, fixed bin, fixed bin, fixed bin (35)), 111 2 encode_file_labels entry (ptr, ptr, fixed bin, fixed bin, fixed bin, fixed bin (35)); 112 113 dcl all_buf_ptrs (16) ptr based (addr (mtape_data.buf_ptrs)); 114 dcl all_buf_lens (16) fixed bin (21) based (addr (mtape_data.buf_len)); 115 dcl tape_blk (mtape_data.length) char (1) unaligned based (mtape_data.cur_buf_ptr); /* template for a tape block */ 116 117 /* END INCLUDE FILE mtape_data.incl.pl1 */