1 /*        Begin  include file ... tdcm_info.incl.pl1
 2    *
 3    *      Created on 02/20/75 by Bill Silver.
 4    *      Modified 5/20/77 by Noel I. Morris for DCC.
 5    *      Modified 3/19/82 by J. A. Bush for Marker interrupt processing
 6    *      This include file defines the IOI workspace used by tdcm_.
 7 */
 8 dcl  ws_ptr ptr;                                            /* Pointer to base of tdcm_ IOI workspace. */
 9 
10 dcl 1 ws based (ws_ptr) aligned,                            /* Starts at base of ioi_ workspace. */
11     2 info like ws_info,                                    /* See ws_info structure below. */
12     2 ndt_list (10),                                        /* List of non-data transfer IDCWs. */
13       3 idcw bit (36),                                      /* IDCWs. */
14     2 rw_list (12),                                         /* DCW list for reads and writes. */
15       3 idcw bit (36),                                      /* IDCW. */
16       3 dcw bit (36),                                       /* DCW.  */
17     2 mark_tdcw bit (36),                                   /* TDCW to chain the DCW list when processing Markers */
18     2 statq (4) like istat,                                 /* A queue of IOI status entries. */
19     2 pad_ev ptr,                                           /* to force buffer to even location */
20     2 buffer (0 refer (ws.info.buf_size)) bit (36) aligned,
21     2 buf_end bit (36);                                     /* Marks end of data buffer. */
22 
23 dcl 1 ws_info based aligned,                                /* Control information. */
24     2 flags,                                                /* All flags in one word. */
25      (3 attached bit (1),                                   /* ON => tape drive has been attached. */
26       3 connected bit (1),                                  /* ON => there is a connect in progress. */
27       3 get_size bit (1),                                   /* ON => return actual read count. */
28       3 ndtrans bit (1),                                    /* ON => non-data transfer type connect. */
29       3 reading bit (1),                                    /* ON => connect issued for reading. */
30       3 large_rec bit (1),                                  /* ON => transmitting record longer than 4096 words */
31       3 allow_marker bit (1),                               /* ON => Set up DCW list for marker interrupt processing */
32       3 good_ws bit (1)) unaligned,                         /* ON => can get a workspace big enough to satisfy user. */
33     2 buf_size fixed bin,                                   /* Current size of tdcm_ I/O buffer. */
34     2 rcp_id bit (36) aligned,                              /* ID used to communicate with rcp_. */
35     2 ioix fixed bin,                                       /* Index used to communicate with ioi_. */
36     2 statqx fixed bin,                                     /* Index of current status queue entry. */
37     2 process_id bit (36) aligned,                          /* User's process ID. */
38     2 tracks fixed bin,                                     /* Temporary place to save track type. */
39     2 wait_list,                                            /* Used to block. */
40       3 num_ev_chans fixed bin,                             /* Number of channels in list. */
41       3 wait_echan fixed bin (71),                          /* Used to wait when blocked. */
42     2 fast_echan fixed bin (71),                            /* Fast event channel used to wait. */
43     2 special_echan fixed bin (71),                         /* Event call channel for special interrupts. */
44     2 user_echan fixed bin (71),                            /* Event channel set up by user in tseg. */
45     2 init_echan fixed bin (71),                            /* Event channel to use after drive attached. */
46     2 meters,                                               /* temporary meters */
47       3 last_io_time fixed bin (71),                        /* clock time of last data xfer I/O */
48       3 io_delta fixed bin (71),                            /* total delta times */
49       3 low_delta fixed bin (71),                           /* lowest time between data xfer i/os */
50       3 high_delta fixed bin (71),                          /* longest time between data xfer i/os */
51       3 number_ios fixed bin (35),                          /* number of data xfer i/os */
52       3 block fixed bin (35),                               /* # of times we went blocked awaiting I/O to complete */
53       3 no_block fixed bin (35),                            /* # of times status queue precessed w/o going blocked */
54       3 mark_st fixed bin (35),                             /* # of marker interrupts received */
55       3 term_st fixed bin (35),                             /* # of term interrupts received */
56       3 term_ne fixed bin (35),                             /* # of term interrupts received with no error status */
57       3 most_consec_mark fixed bin (35),                    /* longest burst of marker interrupts processed */
58       3 consec_mark fixed bin (35),                         /* counter for keeping track of consecutive markers */
59       3 block_count fixed bin,                              /* highest number of blocks per I/O call */
60     2 subset_size fixed bin,                                /* max block size of data xfer I/O */
61     2 detachx fixed bin,                                    /* Index that tells what has been set up. */
62     2 disposition bit (1),                                  /* RCP assignment disposition. */
63     2 read_start fixed bin,                                 /* First tseg buffer we are reading into. */
64     2 buffer_size (12) fixed bin,                           /* Data size in each workspace buffer. */
65     2 ndt_offsetx fixed bin,                                /* Offset of non-data transfer DCW list. */
66     2 rw_offsetx fixed bin,                                 /* Offset of read/write DCW list. */
67     2 mark_offset fixed bin,                                /* buffer offset of last marker interrupt */
68     2 error_count fixed bin,                                /* Count of errors during attachment. */
69     2 read_idcws (0:5) bit (36) aligned,                    /* An array of read and write IDCW's. */
70     2 write_idcws (0:5) bit (36) aligned;                   /* One for each possible buffer in 1 connect. */
71 
72 /*        End of include file ... tdcm_info.incl.pl1        */