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 */