1 /* BEGIN INCLUDE ......... prtseg ........... */
 2 
 3 /* For IOM printer DCM */
 4 
 5 dcl  PRT_EVENT fixed bin int static init (60);
 6 
 7 dcl  interrupt_interval fixed bin (71) static init (30000000); /* Expect an interrupt within 30 seconds */
 8 
 9 dcl  CHN_INACT fixed bin int static init (0);
10 dcl  CHN_BUSY fixed bin int static init (1);
11 dcl  CHN_ERR fixed bin int static init (2);
12 dcl  CHN_WAIT fixed bin int static init (3);
13 
14 dcl  max_no_printers int static init (11);                  /* set up max number of printers */
15 
16 dcl (p, wp) ptr;
17 
18 dcl 1 ps based (p) aligned,                                 /* Per-printer history */
19     2 devx fixed bin (12),                                  /* device index from iom_manager */
20     2 base fixed bin (24),                                  /* abs. adr. of data area */
21     2 dp ptr,                                               /* ptr to data area */
22     2 free fixed bin,                                       /* first free word in data area */
23     2 max_size fixed bin,                                   /* max_size of free area */
24     2 cur_index fixed bin (12),                             /* current DCW index */
25     2 level fixed bin,                                      /* for code conversion overprinting */
26     2 wflag fixed bin,                                      /* ON for user ring waiting */
27     2 active fixed bin,                                     /* 0 if DCW list is not active,
28                                                                1 if DCW list is active,
29                                                                2 if DCW list is not active
30                                                                3 if waiting for special interrupt */
31     2 status aligned,
32       3 major bit (4) unaligned,                            /* major device status */
33       3 minor bit (6) unaligned,                            /* minor device status */
34       3 channel_stat bit (3) unaligned,                     /* iom channel status */
35       3 central_stat bit (3) unaligned,                     /* iom central status */
36       3 controller_fault bit (4) unaligned,                 /* fault from controller */
37       3 io_fault bit (6) unaligned,                         /* I/O fault code */
38       3 power bit (1) unaligned,                            /* power status bit */
39     2 connect_count fixed bin,                              /* # of times connected before interrupt came */
40     2 interrupt_time fixed bin (71),                        /* time by which interrupt should have happened */
41     2 ev_chan fixed bin (71),                               /* event channel from user ring */
42     2 status_cell fixed bin (71),                           /* Saved status from get_status call */
43     2 type fixed bin,                                       /* printer type 300 or 202 */
44     2 control_bits aligned,                                 /* some spare bits */
45       3 wait_notify bit (1) unal,                           /* if on we are using wait notify in detach */
46       3 ovfl_off bit (1) unal,                              /* TRUE if no page-overflow checking. */
47       3 single bit (1) unal,                                /* TRUE if forcing single space. */
48       3 spare_bits bit (33) unal,                           /* spare parts */
49     2 cur_line fixed bin,                                   /* Line which will be printed next. (norm. 1-60) */
50     2 max_line fixed bin,                                   /* Maximum line on page. */
51     2 indent fixed bin,                                     /* Left margin. */
52     2 line_lth fixed bin,                                   /* Paper width in chars. */
53     2 line_count fixed bin,                                 /* Number of lines printed this file. */
54     2 page_count fixed bin,                                 /* Number of pages printed this file. */
55     2 temp_indent fixed bin,                                /* If previous line did not end in NL, where it did end. */
56     2 pcw fixed bin (35),                                   /* Prototype PCW for this device.. reset status */
57     2 write_dcw fixed bin (35),                             /* Prototype write IDCW */
58     2 stop_idcw fixed bin (35),                             /* Prototype stopper IDCW */
59     2 data fixed bin;                                       /* Start of per-printer DCW and data area. must be even loc */
60 
61 dcl 1 wps based (wp) aligned,                               /* prthdr$ */
62     2 num_printers fixed bin,                               /* number of printers available. set at init time */
63     2 data_size fixed bin,                                  /* data area to be allocated per printer */
64     2 astep ptr,                                            /* ast entry pointer for pc_abs */
65     2 hold_lock bit (36),                                   /* each bit says that its corr page is wired now */
66     2 prtlock (11) bit (36);                                /* array of locks for per printer structures */
67 
68 /* END INCLUDE .......... prtseg ............. */