COMPILATION LISTING OF SEGMENT prtdim_attach Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 02/02/88 1647.0 mst Tue Options: optimize map 1 /****^ ****************************************************** 2* * * 3* * Copyright (c) 1986 by Massachusetts Institute of * 4* * Technology and Honeywell Information Systems, Inc. * 5* * * 6* * Copyright (c) 1972 by Massachusetts Institute of * 7* * Technology and Honeywell Information Systems, Inc. * 8* * * 9* ****************************************************** */ 10 11 /****^ HISTORY COMMENTS: 12* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 13* audit(86-03-08,CLJones), install(86-07-18,MR12.0-1098): 14* Support IMU. 15* 2) change(86-06-04,Hartogs), approve(86-06-04,MCR7383), 16* audit(86-06-05,Coppola), install(86-07-18,MR12.0-1098): 17* Changed to use version constant in rcp_printer_info.incl.pl1. 18* END HISTORY COMMENTS */ 19 /* format: style4 */ 20 /* PRTDIM_ATTACH - Attach/Detach module for the printer DIM. 21* coded 10/30/74 by Noel I. Morris */ 22 /* Modified: 27 November 1981 by G. Palter to clear new reload_vfc_train_when_ready flag */ 23 /* Modified September 1983 by E. N. Kittlitz for multi-record IDCWs */ 24 /* Modified October 1983 by E. N. Kittlitz for eurc/urmpc partitioning */ 25 /* Modified January 1985 by Paul Farley for UR-DAI&UR-PDSI IPCs to look like eurc. */ 26 27 prtdim_attach: /* attach a printer */ 28 procedure (stream_name, prt, device, mode, iostatus, sdb_ptr); 29 30 dcl stream_name char (*); /* name of IO stream */ 31 dcl prt char (*); /* name of DIM being attached */ 32 dcl device char (*); /* printer device name */ 33 dcl mode char (*); /* attachment mode */ 34 dcl iostatus bit (72) aligned; /* IOS status */ 35 dcl i fixed bin; 36 dcl area_ptr ptr; /* pointer to system free area */ 37 dcl listen_based_area area ((16374)) based (area_ptr); /* area in which to allocate sdb */ 38 dcl wksp_max fixed bin (19); /* max size of IOI workspace buffer */ 39 dcl time_max fixed bin (52); /* max time for IOI connect to complete */ 40 dcl rcp_state fixed bin; /* state variable from check_attach */ 41 dcl rcode fixed bin (35); /* error code */ 42 dcl char_cnt fixed bin (18); 43 44 dcl 1 ipc_message aligned like event_call_info; 45 dcl 1 rcp_info like printer_info aligned auto; /* automatic copy of RCP info structure */ 46 47 dcl CR char (1) init (" ") int static options (constant); 48 49 dcl get_system_free_area_ entry (ptr); 50 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 51 dcl ipc_$block entry (ptr, ptr, fixed bin (35)); 52 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 53 dcl convert_ipc_code_ entry (fixed bin (35)); 54 dcl rcp_$attach entry (char (*), ptr, fixed bin (71), char (*), bit (36) aligned, fixed bin (35)); 55 dcl rcp_$check_attach entry (bit (36) aligned, ptr, char (*), fixed bin, fixed bin (19), fixed bin (52), 56 fixed bin, fixed bin (35)); 57 dcl init_printer_$reset entry (ptr); 58 dcl ioi_$set_status entry (fixed bin, fixed bin (18), fixed bin (8), fixed bin (35)); 59 dcl ioi_$workspace entry (fixed bin, ptr, fixed bin (18), fixed bin (35)); 60 dcl rcp_$detach entry (bit (36) aligned, bit (*), fixed bin, char (*), fixed bin (35)); 61 dcl prt_conv_ entry (ptr, fixed bin (18), ptr, fixed bin (18), ptr); 62 dcl prtdim_util$init entry (ptr, fixed bin (35)); 63 dcl prtdim_eurc_util$init entry (ptr, fixed bin (35)); 64 dcl prtdim_eurc_util$initialize_workspace entry (ptr); 65 dcl prtdim_util$load_vfc entry (ptr, fixed bin (35)); 66 dcl prtdim_eurc_util$load_vfc entry (ptr, fixed bin (35)); 67 dcl timer_manager_$reset_alarm_wakeup entry (fixed bin (71)); 68 dcl config_$find entry (char (4) aligned, ptr); 69 dcl config_$find_periph entry (char (4) aligned, ptr); 70 71 dcl error_table_$bigarg fixed bin (35) ext static; 72 dcl error_table_$ionmat fixed bin (35) ext; 73 dcl error_table_$no_room_for_dsb fixed bin (35) ext; 74 dcl error_table_$no_operation fixed bin (35) ext; 75 dcl config_deck$ ext; 76 77 dcl (addr, addrel, null, ptr, rel, substr, unspec) builtin; 78 79 80 iostatus = "0"b; /* Clear returned status. */ 81 if sdb_ptr ^= null () then do; /* Check for multiple attachments */ 82 substr (iostatus, 1, 36) = unspec (error_table_$ionmat); /* If multiple attachment return code */ 83 go to exit; 84 end; /* End sdb_ptr not null do group */ 85 86 call get_system_free_area_ (area_ptr); /* Get ptr to area in listen_ before alloc */ 87 allocate sdb in (listen_based_area) set (sdb_ptr);/* Create stream data block */ 88 if sdb_ptr = null then do; /* If this - then no room for sdb */ 89 substr (iostatus, 1, 36) = unspec (error_table_$no_room_for_dsb); /* Send message */ 90 go to exit; /* Exit */ 91 end; /* End sdb_ptr null do group */ 92 93 sdb.areap = area_ptr; /* Save pointer to free area. */ 94 95 outer_module_name = prt; /* Put name this outer module in sdb */ 96 device_name_list_ptr = addr (sdb.device_name); /* Set pointer */ 97 next_device_ptr = null; /* Only one device allowed */ 98 name_size = 32; /* Set name size */ 99 sdb.name = device; /* Put attached device name in sdb */ 100 sdb.stream_name = stream_name; /* record the name of this attachment */ 101 102 call ipc_$create_ev_chn (sdb.evchan, rcode); /* Create event channel so that the supervisor 103* knows who to wake when we are blocked */ 104 if rcode ^= 0 then do; 105 call convert_ipc_code_ (rcode); 106 go to free1; 107 end; 108 ev_list.count = 1; /* Set count in event list. */ 109 110 pip = addr (sdb.info); /* Get pointer to printer info. */ 111 prt_info.devname = substr (sdb.name, 1, 4); /* Set device name in structure. */ 112 113 printer_info_ptr = addr (rcp_info); /* Get pointer to RCP info for printer. */ 114 rcp_info.version_num = PRINTER_INFO_VERSION_1; /* Set up the RCP info structure. */ 115 rcp_info.usage_time = 0; /* Don't know how long we'll use printer. */ 116 rcp_info.wait_time = 0; /* We are not willing to wait. */ 117 rcp_info.system_flag = "0"b; /* Not system process. */ 118 rcp_info.device_name = substr (sdb.name, 1, 8); /* Set device name. */ 119 120 call rcp_$attach ("printer", printer_info_ptr, sdb.evchan, "", rcp_id, rcode); 121 if rcode ^= 0 then go to free; /* Attempt to attach the printer. */ 122 123 check: call rcp_$check_attach (rcp_id, printer_info_ptr, "", prt_info.devx, wksp_max, time_max, 124 rcp_state, rcode); /* Check on progress of attachment. */ 125 if rcode ^= 0 then go to free; 126 127 go to attach_state (rcp_state); /* Dispatch on state variable. */ 128 129 attach_state (1): /* Short wait needed */ 130 call ipc_$block (addr (sdb.ev_list), addr (ipc_message), rcode); 131 if rcode ^= 0 then do; /* Wait for attachment to complete. */ 132 call convert_ipc_code_ (rcode); 133 go to free; 134 end; 135 go to check; /* Perform check again. */ 136 137 attach_state (2): /* long wait */ 138 attach_state (3): /* error occurrence */ 139 go to free; /* This is an error condition. */ 140 141 attach_state (0): /* Successful attachment */ 142 prt_info.model = rcp_info.model; /* Extract info from RCP info structure. */ 143 prt_info.train = rcp_info.print_train; 144 prt_info.line_length = rcp_info.line_length; 145 146 call set_mpc_type; 147 if ^sdb.flags.eurc then wksp_max = 1024; /* old URMPC dim */ 148 else wksp_max = min (2048, wksp_max); /* biggest we'll ever want */ 149 sdb.data_end = wksp_max; /* first approximation of circular dataspace end */ 150 call ioi_$workspace (prt_info.devx, sdb.wsegp, (wksp_max), rcode); /* To wire down space for DCW list */ 151 if rcode ^= 0 then go to free; /* Check error code */ 152 153 if sdb.flags.eurc then do; /* fancy dim, more initializing */ 154 sdb.max_dcw_size = 65; /* should calculate what prt_conv_ would do */ 155 if wksp_max < 2048 then sdb.max_dcws, sdb.n_dcws = 32; /* about 2 seconds/buffer at 1000LPM */ 156 else sdb.max_dcws, sdb.n_dcws = 62; /* 1 less than idcw max */ 157 sdb.max_buffers, sdb.n_buffers = 3; 158 prt_bufferp = addr (prt_buffers (0)); 159 sdb.data_end = sdb.data_end - size (null () -> istat); 160 call ioi_$set_status (prt_info.devx, (sdb.data_end), 1, rcode); 161 if rcode ^= 0 then go to free; 162 sdb.status_ptr = ptr (wsegp, sdb.data_end); 163 sdb.data_end = sdb.data_end - 1; /* keep one word for prtdim_eurc_util$finish_abort */ 164 sdb.data_begin, sdb.bgin, sdb.stop = size (prt_buffers); 165 sdb.b_begin, sdb.b_stop = 0; 166 call prtdim_eurc_util$init (sdb_ptr, rcode); /* Initialize printer information. */ 167 if rcode ^= 0 then go to free; /* If unable to initialize printer ... */ 168 pcip = addr (sdb.conv_info); 169 call prt_conv_ (addr (CR), 1, wsegp, char_cnt, pcip); /* for prtdim_eurc_util$finish_abort */ 170 if char_cnt > 4 then do; /* we only have 1 word to spare for this */ 171 rcode = error_table_$bigarg; 172 go to free; 173 end; 174 sdb.null_line_data = wseg (0); /* remember it, always */ 175 dcwp = addr (sdb.null_line_dcw); /* make the 'null' dcw */ 176 string (dcw) = ""b; 177 dcw.address = bit (sdb.data_end); /* 1 word between end of data and ioi status area */ 178 dcw.tally = bit (bin (1, 12), 12); /* 1 word, that is to say 1 */ 179 call init_printer_$reset (pcip); /* clear any line/page count caused by above */ 180 if mode ^= "save_vfc" then do; 181 call prtdim_eurc_util$load_vfc (sdb_ptr, rcode); 182 if rcode = error_table_$no_operation then rcode = 0; 183 else if rcode ^= 0 then go to free; /* load error */ 184 end; 185 end; /* EURC */ 186 else do; 187 sdb.data_begin, sdb.bgin, sdb.stop = 0; 188 call prtdim_util$init (sdb_ptr, rcode); /* Initialize printer information. */ 189 if rcode ^= 0 then go to free; /* If unable to initialize printer ... */ 190 if mode ^= "save_vfc" then do; /* are we to load a vfc now? */ 191 call prtdim_util$load_vfc (sdb_ptr, rcode); /* data is in sdb.conv_info */ 192 if rcode = error_table_$no_operation then rcode = 0; 193 else if rcode ^= 0 then go to free; /* load error */ 194 end; 195 end; 196 197 idcwp = addr (prt_info.print_idcw); /* Get pointer to IDCW for printing. */ 198 if sdb.flags.eurc then idcw.control = "00"b; /* no continue or marker in IDCW. */ 199 else idcw.control = "10"b; /* continue */ 200 201 sdb.prev = 0; /* Initialize DCW list pointers. */ 202 sdb.wait_flag = "0"b; /* Reset waiting for special flag. */ 203 sdb.running = "0"b; /* Indicate channel not running. */ 204 sdb.marker_count = 0; /* Clear the marker status counter. */ 205 sdb.paper_low = "0"b; /* Reset paper low flag. */ 206 sdb.error_count = 0; /* Clear the error counter. */ 207 sdb.reload_vfc_train_after_special = "0"b; /* Reset request to reload VFC/train after a special */ 208 sdb.chars_printed = 0; 209 sdb.aborting = "0"b; 210 sdb.version = 1; 211 212 if sdb.flags.eurc then 213 call prtdim_eurc_util$initialize_workspace (sdb_ptr); /* setup buffer headers, etc. */ 214 215 return; /* All finished. */ 216 217 218 219 free: 220 free1: substr (iostatus, 1, 36) = unspec (rcode); /* Return error code. */ 221 222 go to detach; /* try to clean up, but retain this error code */ 223 /* Drop into normal detach code. */ 224 225 226 prtdim_detach: entry (sdb_ptr, device, mode, iostatus); /* Detach entry point */ 227 228 iostatus = "0"b; /* clear the status code */ 229 230 detach: call timer_manager_$reset_alarm_wakeup (sdb.evchan); 231 call ipc_$delete_ev_chn (sdb.evchan, rcode); /* Delete event channel */ 232 if rcode ^= 0 then if substr (iostatus, 1, 36) = "0"b then do; 233 call convert_ipc_code_ (rcode); 234 substr (iostatus, 1, 36) = unspec (rcode); 235 end; 236 237 pip = addr (sdb.info); /* Get pointer to info structure. */ 238 239 call rcp_$detach (rcp_id, "0"b, error_count, "", rcode); 240 if rcode ^= 0 then /* Attempt to detach the device. */ 241 if substr (iostatus, 1, 36) = "0"b then /* report error if none exists */ 242 substr (iostatus, 1, 36) = unspec (rcode); /* Put error code in return status */ 243 244 area_ptr = sdb.areap; /* Get pointer to area. */ 245 free sdb in (listen_based_area); /* Free-up allocated sdb */ 246 247 exit: substr (iostatus, 52, 1) = "1"b; /* Set ioname detached bit */ 248 substr (iostatus, 41, 1) = "1"b; /* Set transaction terminated bit */ 249 return; 250 251 252 /* determine the type of MPC through which we are talking. */ 253 254 set_mpc_type: proc; 255 256 call config_$find_periph (substr (sdb.name, 1, 4), prph_prt_cardp); 257 if prph_prt_cardp = null then return; /* oh, well */ 258 mpc_cardp = null; 259 do while ("1"b); 260 call config_$find ("mpc", mpc_cardp); /* next MPC card */ 261 if mpc_cardp = null then do; 262 263 /* If no MPC card found for this device, assume that it is connected to 264* a IPC controller, that works like the EURC. */ 265 266 sdb.flags.eurc = "1"b; 267 return; 268 end; 269 if mpc_card.port (1).iom = prph_prt_card.iom & /* an eurc only has one port... */ 270 mpc_card.port (1).chan <= prph_prt_card.chan & 271 prph_prt_card.chan < mpc_card.port (1).chan + mpc_card.port (1).nchan then do; 272 do i = 1 to hbound (eurc_model_numbers, 1); 273 if mpc_card.model = eurc_model_numbers (i) then do; 274 sdb.flags.eurc = "1"b; 275 return; 276 end; /* it's an eurc */ 277 end; /* checking model number */ 278 return; 279 end; /* channel belongs to this MPC */ 280 end; /* while "1"b */ 281 282 end set_mpc_type; 283 284 /* format: off */ 285 /* BEGIN INCLUDE FILE ... config_mpc_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 1 2 1 3 dcl mpc_cardp ptr; /* Pointer to an MPC card. */ 1 4 1 5 dcl 1 mpc_card aligned based (mpc_cardp), 1 6 2 word char (4), /* "mpc" */ 1 7 2 name char (4), /* Name of this MPC - e.g., "mspa" */ 1 8 2 model fixed bin, /* Model of this MPC - e.g., 601. */ 1 9 2 port (4), /* Per port information. 12 fields total */ 1 10 3 iom fixed bin (3), /* IOM number */ 1 11 3 chan fixed bin (8), /* Channel number. */ 1 12 3 nchan fixed bin, /* Number of logical channels on this channel. */ 1 13 1 14 2 type_word aligned, 1 15 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 1 16 3 pad1 bit (4) unaligned, 1 17 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 1 18 1 19 dcl 1 mpc_card_array aligned based (mpc_cardp), /* Overlay for MPC port array */ 1 20 2 pad1 (3) bit (36) aligned, 1 21 2 port (divide (max (0, (mpc_card.n_fields - 2)), 3, 17, 0)), 1 22 3 iom fixed bin (3), /* IOM number */ 1 23 3 chan fixed bin (8), /* Channel number. */ 1 24 3 nchan fixed bin; /* Number of logical channels on this channel. */ 1 25 1 26 dcl MPC_CARD_WORD char (4) aligned internal static options (constant) init ("mpc"); 1 27 1 28 /* END INCLUDE FILE ... config_mpc_card.incl.pl1 */ 285 286 /* BEGIN INCLUDE FILE ... config_prph_prt_card.incl.pl1 ... 11/11/80, W. Olin Sibert */ 2 2 2 3 dcl prph_prt_cardp ptr; /* pointer to PRPH PRTx card */ 2 4 2 5 dcl 1 prph_prt_card based (prph_prt_cardp) aligned, /* PRPH PRTx card declaration */ 2 6 2 word char (4), /* "prph" */ 2 7 2 name char (4), /* "prtX" */ 2 8 2 iom fixed bin (3), /* IOM number */ 2 9 2 chan fixed bin (8), /* channel number */ 2 10 2 model fixed bin, /* printer model number */ 2 11 2 12 2 train fixed bin, /* print train ID */ 2 13 2 line_length fixed bin, /* printer line length */ 2 14 2 15 2 pad (8) bit (36) aligned, /* pad to 15 fields */ 2 16 2 17 2 type_word aligned, 2 18 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 2 19 3 pad1 bit (4) unaligned, 2 20 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 2 21 2 22 /* END INCLUDE FILE ... config_prph_prt_card.incl.pl1 */ 286 287 /* BEGIN INCLUDE FILE ... eurc_model_numbers.incl.pl1 ... 11/13/81 E. N. Kittlitz */ 3 2 3 3 dcl eurc_model_numbers (4) fixed bin internal static init (8001, 8002, 8003, 8004); 3 4 3 5 /* END INCLUDE FILE ... eurc_model_numbers.incl.pl1 ... */ 287 288 /* BEGIN INCLUDE FILE event_call_info.incl.pl1 */ 4 2 4 3 /* T. Casey, May 1978 */ 4 4 4 5 dcl event_call_info_ptr ptr; 4 6 4 7 dcl 1 event_call_info aligned based (event_call_info_ptr), /* argument structure passed to event call procedure */ 4 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 4 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 4 10 2 sender bit (36), /* process id of sender */ 4 11 2 origin, 4 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 4 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 4 14 2 data_ptr ptr; /* ptr given to dcl_event_call_channel */ 4 15 4 16 /* END INCLUDE FILE event_call_info.incl.pl1 */ 288 289 5 2 /* Begin include file ...... ioi_stat.incl.pl1 */ 5 3 /* Last modified 3/24/75 by Noel I. Morris */ 5 4 5 5 dcl isp ptr; /* pointer to status structure */ 5 6 5 7 dcl 1 istat based (isp) aligned, /* I/O Interfacer status structure */ 5 8 2 completion, /* completion flags */ 5 9 (3 st bit (1), /* "1"b if status returned */ 5 10 3 er bit (1), /* "1"b if status indicates error condition */ 5 11 3 run bit (1), /* "1"b if channel still running */ 5 12 3 time_out bit (1)) unal, /* "1"b if time-out occurred */ 5 13 2 level fixed bin (3), /* IOM interrupt level */ 5 14 2 offset fixed bin (18), /* DCW list offset */ 5 15 2 absaddr fixed bin (24), /* absolute address of workspace */ 5 16 2 iom_stat bit (72), /* IOM status */ 5 17 2 lpw bit (72); /* LPW residue */ 5 18 5 19 dcl imp ptr; /* pointer to message structure */ 5 20 5 21 dcl 1 imess based (imp) aligned, /* I/O Interfacer event message structure */ 5 22 (2 completion like istat.completion, /* completion flags */ 5 23 2 pad bit (11), 5 24 2 level bit (3), /* interrupt level */ 5 25 2 offset bit (18), /* DCW list offset */ 5 26 2 status bit (36)) unal; /* first 36 bits of status */ 5 27 5 28 /* End of include file ...... ioi_stat.incl.pl1 */ 5 29 289 290 6 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 6 3 6 4 dcl dcwp ptr, /* pointer to DCW */ 6 5 tdcwp ptr; /* pointer to TDCW */ 6 6 6 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 6 8 (2 address bit (18), /* address for data transfer */ 6 9 2 char_pos bit (3), /* character position */ 6 10 2 m64 bit (1), /* non-zero for mod 64 address */ 6 11 2 type bit (2), /* DCW type */ 6 12 2 tally bit (12)) unal; /* tally for data transfer */ 6 13 6 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 6 15 (2 address bit (18), /* address to transfer to */ 6 16 2 mbz1 bit (4), 6 17 2 type bit (2), /* should be "10"b for TDCW */ 6 18 2 mbz2 bit (9), 6 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 6 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 6 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 6 22 6 23 /* End of include file ...... iom_dcw.incl.pl1 */ 6 24 290 291 7 2 /* Begin include file ...... iom_pcw.incl.pl1 */ 7 3 7 4 dcl pcwp ptr; /* pointer to PCW */ 7 5 7 6 dcl 1 pcw based (pcwp) aligned, /* Peripheral Control Word */ 7 7 (2 command bit (6), /* device command */ 7 8 2 device bit (6), /* device code */ 7 9 2 ext bit (6), /* address extension */ 7 10 2 code bit (3), /* should be "111"b for PCW */ 7 11 2 mask bit (1), /* channel mask bit */ 7 12 2 control bit (2), /* terminate/proceed and marker control bits */ 7 13 2 chan_cmd bit (6), /* type of I/O operation */ 7 14 2 count bit (6), /* record count or control character */ 7 15 2 mbz1 bit (3), 7 16 2 channel bit (6), /* channel number */ 7 17 2 mbz2 bit (27)) unal; 7 18 7 19 dcl idcwp ptr; /* pointer to IDCW */ 7 20 7 21 dcl 1 idcw based (idcwp) aligned, /* Instruction DCW */ 7 22 (2 command bit (6), /* device command */ 7 23 2 device bit (6), /* device code */ 7 24 2 ext bit (6), /* address extension */ 7 25 2 code bit (3), /* should be "111"b for PCW */ 7 26 2 ext_ctl bit (1), /* "1"b if address extension to be used */ 7 27 2 control bit (2), /* terminate/proceed and marker control bits */ 7 28 2 chan_cmd bit (6), /* type of I/O operation */ 7 29 2 count bit (6)) unal; /* record count or control character */ 7 30 7 31 /* End include file ...... iom_pcw.incl.pl1 */ 7 32 291 292 /* BEGIN INCLUDE FILE ... prt_sdb.incl.pl1 */ 8 2 /* Note: there is a corresponding prt_sdb.incl.alm */ 8 3 8 4 /* Created 10/28/74 by Noel I. Morris */ 8 5 /* Modified 3/15/77 by Noel I. Morris */ 8 6 /* Modified 1/25/78 by J. C. Whitmore to merge prtdim and spooling_dim versions */ 8 7 /* Modified: 27 November 1981 by G. Palter to add reload_vfc_train_after_special flag */ 8 8 /* Modified: 16 August 1983 by E. N. Kittlitz for new printer dim */ 8 9 8 10 dcl sdb_ptr ptr; /* pointer to stream data block */ 8 11 8 12 dcl 1 sdb aligned based (sdb_ptr), /* printer stream data block */ 8 13 2 outer_module_name char (32) aligned, 8 14 2 device_name_list_ptr pointer, 8 15 2 device_name, 8 16 3 next_device_ptr pointer, 8 17 3 name_size fixed bin (17), 8 18 3 name char (32) aligned, 8 19 2 ev_list aligned, /* Event list for ipc_ */ 8 20 3 count fixed bin (17), /* Event count = Always one */ 8 21 3 evchan fixed bin (71), /* Event channel name */ 8 22 2 stream_name char (32), /* stream name of this attachment */ 8 23 2 areap ptr, /* pointer to system free area */ 8 24 2 info like prt_info aligned, /* printer info */ 8 25 2 conv_info like pci aligned, /* conversion info */ 8 26 2 chars_printed fixed bin (35), /* input chars processed since "reset" */ 8 27 2 stop_every fixed bin, /* non-zero to stop after number of pages */ 8 28 2 stop_counter fixed bin, /* page stop counter */ 8 29 2 mode, /* additional modes */ 8 30 (3 single_page bit (1), /* "1"b to stop after each page */ 8 31 3 noprint bit (1), /* "1"b to suppress printing */ 8 32 3 pad bit (34)) unal, 8 33 2 rcp_id bit (36), /* RCP attachment ID */ 8 34 2 wsegp ptr, /* pointer to IOI working segment */ 8 35 2 running bit (1), /* "1"b if channel running */ 8 36 2 bgin fixed bin (18), /* index to oldest print line */ 8 37 2 stop fixed bin (18), /* index to next print line */ 8 38 2 prev fixed bin (18), /* index to previous print line */ 8 39 2 wait_flag bit (1) aligned, /* non-zero if waiting for special */ 8 40 2 marker_count fixed bin, /* counter for marker status insertion */ 8 41 2 paper_low bit (1) aligned, /* "1"b if paper low */ 8 42 2 error_count fixed bin, /* error counter */ 8 43 2 buffer_ptr ptr, /* pointer to output buffer (spooler) */ 8 44 2 spool_info (56) fixed bin, /* place to store spooling_info */ 8 45 2 reload_vfc_train_after_special bit (1) aligned, /* "1"b if VFC/train images should be reloaded after next 8 46* special interrupt */ 8 47 2 max_dcw_size fixed bin (12) uns unal, /* max wordcount of dcw */ 8 48 2 max_dcws fixed bin (6) uns unal, /* max dcws per idcw/buffer */ 8 49 2 n_dcws fixed bin (6) uns unal, /* current limit of dcws/buffer */ 8 50 2 b_begin fixed bin (3) uns unal, /* buffer index */ 8 51 2 b_stop fixed bin (3) uns unal, /* likewise */ 8 52 2 max_buffers fixed bin (3) uns unal, /* number of buffers allocated */ 8 53 2 n_buffers fixed bin (3) uns unal, /* number of buffers in use now */ 8 54 2 data_begin fixed bin (18) uns unal, /* first data word */ 8 55 2 data_end fixed bin (18) uns unal, /* size of working space in words */ 8 56 2 status_ptr ptr unal, /* ioi status area */ 8 57 2 flags aligned, 8 58 3 aborting bit (1) unal, /* next attempt to do i/o gets error and resets */ 8 59 3 eurc bit (1) unal, /* true if we know we are using EURC */ 8 60 3 flags_pad bit (16) unal, 8 61 2 version fixed bin unal, 8 62 2 status_table ptr unal, /* for analyze_device_stat_ */ 8 63 2 null_line_data bit (36) aligned, 8 64 2 null_line_dcw bit (36) aligned, 8 65 2 alarm_time fixed bin (71) unaligned; /* current timer_manager_ limit */ 8 66 dcl prt_bufferp ptr; 8 67 8 68 dcl 1 prt_buffer aligned based (prt_bufferp), 8 69 2 header, 8 70 3 number fixed bin (6) uns unal, 8 71 3 busy bit (1) unal, 8 72 3 pad bit (4) unal, 8 73 3 dcw_count fixed bin (7) uns unal, 8 74 3 data_ends fixed bin (18) uns unal, 8 75 2 idcw bit (36), 8 76 2 ddcw (sdb.max_dcws + 1) bit (36) aligned; 8 77 8 78 dcl wseg (0:sdb.data_end - 1) bit (36) aligned based (sdb.wsegp); /* the IOI buffer segment */ 8 79 dcl 1 prt_buffers (0:sdb.max_buffers - 1) aligned like prt_buffer based (sdb.wsegp); 8 80 8 81 /* NOTE: The Spooling_dim IO Module also uses this include file, 8 82* as it uses the printer stream also. If changes are made to this include file, 8 83* see to it that the changes are also reflected in the Spooling_dim procedures. 8 84* The spooling_dim uses the standard printer_dim order and changemode procedures. 8 85* JCW 1/25/78 */ 8 86 8 87 /* END INCLUDE FILE ... prt_sdb.incl.pl1 */ 292 293 9 2 /* Begin include file ...... prt_info.incl.pl1 */ 9 3 /* last modified 6/12/75 by Noel I. Morris */ 9 4 9 5 dcl pip ptr; /* pointer to printer info structure */ 9 6 9 7 dcl 1 prt_info based (pip) aligned, /* printer info structure */ 9 8 2 devname char (4), /* name of device */ 9 9 2 devx fixed bin, /* device index */ 9 10 2 model fixed bin, /* printer model number */ 9 11 2 type fixed bin, /* printer type number */ 9 12 2 train fixed bin, /* print train ID */ 9 13 2 line_length fixed bin, /* max length of printed line */ 9 14 2 print_idcw bit (36), /* IDCW to print 1 line */ 9 15 2 term_idcw bit (36); /* IDCW to stop printer channel */ 9 16 9 17 /* End of include file ...... prt_info.incl.pl1 */ 9 18 293 294 10 2 /* BEGIN INCLUDE FILE ... prt_conv_info.incl.pl1 */ 10 3 /* Modified: 12 September 1980 by G. Palter */ 10 4 10 5 10 6 /****^ HISTORY COMMENTS: 10 7* 1) change(87-05-10,Gilcrease), approve(87-07-31,MCR7686), 10 8* audit(88-02-01,Farley), install(88-02-02,MR12.2-1019): 10 9* Add modes.line_nbrs, flags.(eol eof) bits for eor -nb. 10 10* END HISTORY COMMENTS */ 10 11 10 12 10 13 dcl pcip ptr; /* pointer to conversion info structure */ 10 14 10 15 dcl 1 pci based (pcip) aligned, /* printer conversion info structure */ 10 16 2 cv_proc ptr, /* pointer to character conversion procedure */ 10 17 2 lmarg fixed bin, /* left margin indentation */ 10 18 2 rmarg fixed bin, /* right margin limit */ 10 19 2 page_length fixed bin, /* number of lines on page */ 10 20 2 phys_line_length fixed bin, /* physical width of paper */ 10 21 2 phys_page_length fixed bin, /* physical length of paper */ 10 22 2 lpi fixed bin, /* lines per inch */ 10 23 2 sheets_per_page fixed bin, /* sheets of paper per logical page */ 10 24 2 line_count fixed bin, /* count of converted lines */ 10 25 2 page_count fixed bin, /* count of converted pages */ 10 26 2 func fixed bin, /* special conversion function */ 10 27 /* 0 => normal conversion */ 10 28 /* 1 => change NL to FF */ 10 29 /* 2 => change NL to top inside page */ 10 30 /* 3 => change NL to end of page */ 10 31 /* 4 => change NL to top of outside page */ 10 32 (2 modes, /* conversion modes */ 10 33 3 overflow_off bit (1), /* "1"b to suppress end of page overflow */ 10 34 3 single_space bit (1), /* "1"b to change all forms advance chars to NL */ 10 35 3 non_edited bit (1), /* "1"b to print ASCII control chars */ 10 36 3 truncate bit (1), /* "1"b to truncate lines that are too long */ 10 37 3 esc bit (1), /* "1"b to process ESC character */ 10 38 3 ctl_char bit (1), /* "1"b to output control characters */ 10 39 3 line_nbrs bit (1), /* "1"b to output line numbers */ 10 40 3 pci_pad bit (5), 10 41 2 flags, /* flags internal to prt_conv_ */ 10 42 3 ignore_next_ff bit (1), /* ON => prt_conv_ just output a FF; ignore next character if 10 43* it's a FF */ 10 44 3 eol bit (1), /* "1"b = end-of-line encountered */ 10 45 3 eof bit (1), /* "1"b = end-of-segment encountered */ 10 46 3 flags_pad bit (3), 10 47 2 coroutine_modes, 10 48 3 upper_case bit(1), /* "1"b to convert to upper case */ 10 49 3 ht bit(1), /* "1"b to skip tab conversion */ 10 50 3 coroutine_pad bit(13), 10 51 3 slew_table_idx bit(3) ) unal, /* slew table index */ 10 52 2 top_label_line char (136), /* contains an optional top of page label */ 10 53 2 bot_label_line char (136), /* contains an optional bottom of page label */ 10 54 2 top_label_length fixed bin, /* length of top label line */ 10 55 2 bot_label_length fixed bin, /* length of bottom label line */ 10 56 2 form_stops (256) unal, /* logical form stops */ 10 57 3 lbits bit (9), /* leftmost bits */ 10 58 3 rbits bit (9), /* rightmost bits */ 10 59 10 60 /* The following items are for internal use by the print conversion procedure. 10 61* They should be zeroed once and then never referenced again. */ 10 62 10 63 2 level fixed bin, /* overstrike level */ 10 64 2 pos fixed bin, /* print position at end of incomplete line */ 10 65 2 line fixed bin, /* current line number */ 10 66 2 slew_residue fixed bin, /* number of lines remaining to be slewed */ 10 67 2 label_nelem fixed bin, /* characters remaining in label */ 10 68 2 label_wksp ptr, /* pointer to label being processed */ 10 69 2 sav_pos fixed bin, /* position saved during label processing */ 10 70 2 esc_state fixed bin, /* state of ESC processing */ 10 71 2 esc_num fixed bin, /* number following ESC sequence */ 10 72 2 temp bit (36); /* conversion proc temporary */ 10 73 10 74 /* End of include file ...... prt_conv_info.incl.pl1 */ 10 75 294 295 /* Begin include file rcp_printer_info.incl.pl1 11 2** 11 3** Created on 01/08/75 by Bill Silver. 11 4** This include file defines the RCP device info structure for printers. 11 5**/ 11 6 11 7 11 8 /****^ HISTORY COMMENTS: 11 9* 1) change(86-06-04,Hartogs), approve(86-06-04,MCR7383), 11 10* audit(86-06-05,Coppola), install(86-07-18,MR12.0-1098): 11 11* Added version constant PRINTER_INFO_VERSION_1. 11 12* END HISTORY COMMENTS */ 11 13 11 14 11 15 dcl printer_info_ptr ptr; /* Pointer to printer device info structure. */ 11 16 11 17 dcl 1 printer_info based(printer_info_ptr) aligned, /* RCP device info structure for printers. */ 11 18 2 version_num fixed bin, /* Version number of this structure. */ 11 19 2 usage_time fixed bin, /* Number of minutes printer will/may be used. */ 11 20 2 wait_time fixed bin, /* Number of minutes user will/must wait. */ 11 21 2 system_flag bit(1), /* ON => user wants to be a system process. */ 11 22 2 device_name char(8), /* Printer name. */ 11 23 2 model fixed bin, /* Printer model number. */ 11 24 2 print_train fixed bin, /* Print train type. */ 11 25 2 line_length fixed bin; /* Printer line length. -1 => not specified. */ 11 26 11 27 dcl PRINTER_INFO_VERSION_1 fixed bin int static options (constant) init (1); 11 28 11 29 /* End of include file ... rcp_printer_info.incl.pl1 */ 295 296 297 end prtdim_attach; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/02/88 1535.6 prtdim_attach.pl1 >special_ldd>install>MR12.2-1019>prtdim_attach.pl1 285 1 05/08/81 1853.6 config_mpc_card.incl.pl1 >ldd>include>config_mpc_card.incl.pl1 286 2 05/08/81 1853.7 config_prph_prt_card.incl.pl1 >ldd>include>config_prph_prt_card.incl.pl1 287 3 05/27/82 1525.6 eurc_model_numbers.incl.pl1 >ldd>include>eurc_model_numbers.incl.pl1 288 4 06/29/79 1728.0 event_call_info.incl.pl1 >ldd>include>event_call_info.incl.pl1 289 5 08/17/79 2215.0 ioi_stat.incl.pl1 >ldd>include>ioi_stat.incl.pl1 290 6 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 291 7 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 292 8 11/04/83 1107.6 prt_sdb.incl.pl1 >ldd>include>prt_sdb.incl.pl1 293 9 08/29/75 1310.5 prt_info.incl.pl1 >ldd>include>prt_info.incl.pl1 294 10 02/02/88 1529.2 prt_conv_info.incl.pl1 >special_ldd>install>MR12.2-1019>prt_conv_info.incl.pl1 295 11 07/24/86 2051.8 rcp_printer_info.incl.pl1 >ldd>include>rcp_printer_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. CR 000010 constant char(1) initial unaligned dcl 47 set ref 169 169 PRINTER_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 11-27 ref 114 aborting 530 based bit(1) level 3 packed unaligned dcl 8-12 set ref 209* addr builtin function dcl 77 ref 96 110 113 129 129 129 129 158 168 169 169 175 197 237 address based bit(18) level 2 packed unaligned dcl 6-7 set ref 177* area_ptr 000102 automatic pointer dcl 36 set ref 86* 87 93 244* 245 areap 42 based pointer level 2 dcl 8-12 set ref 93* 244 b_begin 525(24) based fixed bin(3,0) level 2 packed unsigned unaligned dcl 8-12 set ref 165* b_stop 525(27) based fixed bin(3,0) level 2 packed unsigned unaligned dcl 8-12 set ref 165* bgin 423 based fixed bin(18,0) level 2 dcl 8-12 set ref 164* 187* chan 3 based fixed bin(8,0) level 2 in structure "prph_prt_card" dcl 2-5 in procedure "prtdim_attach" ref 269 269 chan 4 based fixed bin(8,0) array level 3 in structure "mpc_card" dcl 1-5 in procedure "prtdim_attach" ref 269 269 char_cnt 000112 automatic fixed bin(18,0) dcl 42 set ref 169* 170 chars_printed 412 based fixed bin(35,0) level 2 dcl 8-12 set ref 208* completion based structure level 2 dcl 5-7 config_$find 000054 constant entry external dcl 68 ref 260 config_$find_periph 000056 constant entry external dcl 69 ref 256 control 0(22) based bit(2) level 2 packed unaligned dcl 7-21 set ref 198* 199* conv_info 54 based structure level 2 dcl 8-12 set ref 168 convert_ipc_code_ 000020 constant entry external dcl 53 ref 105 132 233 count 26 based fixed bin(17,0) level 3 dcl 8-12 set ref 108* data_begin 526 based fixed bin(18,0) level 2 packed unsigned unaligned dcl 8-12 set ref 164* 187* data_end 526(18) based fixed bin(18,0) level 2 packed unsigned unaligned dcl 8-12 set ref 149* 159* 159 160 162 163* 163 177 dcw based structure level 1 dcl 6-7 set ref 176* dcwp 000142 automatic pointer dcl 6-4 set ref 175* 176 177 178 device parameter char unaligned dcl 32 ref 27 99 226 device_name 12 based structure level 2 in structure "sdb" dcl 8-12 in procedure "prtdim_attach" set ref 96 device_name 4 000124 automatic char(8) level 2 in structure "rcp_info" dcl 45 in procedure "prtdim_attach" set ref 118* device_name_list_ptr 10 based pointer level 2 dcl 8-12 set ref 96* devname based char(4) level 2 dcl 9-7 set ref 111* devx 1 based fixed bin(17,0) level 2 dcl 9-7 set ref 123* 150* 160* error_count 431 based fixed bin(17,0) level 2 dcl 8-12 set ref 206* 239* error_table_$bigarg 000060 external static fixed bin(35,0) dcl 71 ref 171 error_table_$ionmat 000062 external static fixed bin(35,0) dcl 72 ref 82 error_table_$no_operation 000066 external static fixed bin(35,0) dcl 74 ref 182 192 error_table_$no_room_for_dsb 000064 external static fixed bin(35,0) dcl 73 ref 89 eurc 530(01) based bit(1) level 3 packed unaligned dcl 8-12 set ref 147 153 198 212 266* 274* eurc_model_numbers 000004 constant fixed bin(17,0) initial array dcl 3-3 ref 272 273 ev_list 26 based structure level 2 dcl 8-12 set ref 129 129 evchan 30 based fixed bin(71,0) level 3 dcl 8-12 set ref 102* 120* 230* 231* event_call_info based structure level 1 dcl 4-7 flags 530 based structure level 2 dcl 8-12 get_system_free_area_ 000010 constant entry external dcl 49 ref 86 i 000100 automatic fixed bin(17,0) dcl 35 set ref 272* 273* idcw based structure level 1 dcl 7-21 idcwp 000144 automatic pointer dcl 7-19 set ref 197* 198 199 info 44 based structure level 2 dcl 8-12 set ref 110 237 init_printer_$reset 000026 constant entry external dcl 57 ref 179 ioi_$set_status 000030 constant entry external dcl 58 ref 160 ioi_$workspace 000032 constant entry external dcl 59 ref 150 iom 2 based fixed bin(3,0) level 2 in structure "prph_prt_card" dcl 2-5 in procedure "prtdim_attach" ref 269 iom 3 based fixed bin(3,0) array level 3 in structure "mpc_card" dcl 1-5 in procedure "prtdim_attach" ref 269 iostatus parameter bit(72) dcl 34 set ref 27 80* 82* 89* 219* 226 228* 232 234* 240 240* 247* 248* ipc_$block 000014 constant entry external dcl 51 ref 129 ipc_$create_ev_chn 000012 constant entry external dcl 50 ref 102 ipc_$delete_ev_chn 000016 constant entry external dcl 52 ref 231 ipc_message 000114 automatic structure level 1 dcl 44 set ref 129 129 istat based structure level 1 dcl 5-7 ref 159 line_length 10 000124 automatic fixed bin(17,0) level 2 in structure "rcp_info" dcl 45 in procedure "prtdim_attach" set ref 144 line_length 5 based fixed bin(17,0) level 2 in structure "prt_info" dcl 9-7 in procedure "prtdim_attach" set ref 144* listen_based_area based area(16374) dcl 37 ref 87 245 marker_count 427 based fixed bin(17,0) level 2 dcl 8-12 set ref 204* max_buffers 525(30) based fixed bin(3,0) level 2 packed unsigned unaligned dcl 8-12 set ref 157* 164 max_dcw_size 525 based fixed bin(12,0) level 2 packed unsigned unaligned dcl 8-12 set ref 154* max_dcws 525(12) based fixed bin(6,0) level 2 packed unsigned unaligned dcl 8-12 set ref 155* 156* 164 mode parameter char unaligned dcl 33 ref 27 180 190 226 model 6 000124 automatic fixed bin(17,0) level 2 in structure "rcp_info" dcl 45 in procedure "prtdim_attach" set ref 141 model 2 based fixed bin(17,0) level 2 in structure "prt_info" dcl 9-7 in procedure "prtdim_attach" set ref 141* model 2 based fixed bin(17,0) level 2 in structure "mpc_card" dcl 1-5 in procedure "prtdim_attach" ref 273 mpc_card based structure level 1 dcl 1-5 mpc_cardp 000136 automatic pointer dcl 1-3 set ref 258* 260* 261 269 269 269 269 273 n_buffers 525(33) based fixed bin(3,0) level 2 packed unsigned unaligned dcl 8-12 set ref 157* n_dcws 525(18) based fixed bin(6,0) level 2 packed unsigned unaligned dcl 8-12 set ref 155* 156* name 15 based char(32) level 3 dcl 8-12 set ref 99* 111 118 256 256 name_size 14 based fixed bin(17,0) level 3 dcl 8-12 set ref 98* nchan 5 based fixed bin(17,0) array level 3 dcl 1-5 ref 269 next_device_ptr 12 based pointer level 3 dcl 8-12 set ref 97* null builtin function dcl 77 ref 81 88 97 159 257 258 261 null_line_data 533 based bit(36) level 2 dcl 8-12 set ref 174* null_line_dcw 534 based bit(36) level 2 dcl 8-12 set ref 175 outer_module_name based char(32) level 2 dcl 8-12 set ref 95* paper_low 430 based bit(1) level 2 dcl 8-12 set ref 205* pci based structure level 1 dcl 10-15 pcip 000152 automatic pointer dcl 10-13 set ref 168* 169* 179* pip 000150 automatic pointer dcl 9-5 set ref 110* 111 123 141 143 144 150 160 197 237* port 3 based structure array level 2 dcl 1-5 prev 425 based fixed bin(18,0) level 2 dcl 8-12 set ref 201* print_idcw 6 based bit(36) level 2 dcl 9-7 set ref 197 print_train 7 000124 automatic fixed bin(17,0) level 2 dcl 45 set ref 143 printer_info based structure level 1 dcl 11-17 printer_info_ptr 000154 automatic pointer dcl 11-15 set ref 113* 120* 123* prph_prt_card based structure level 1 dcl 2-5 prph_prt_cardp 000140 automatic pointer dcl 2-3 set ref 256* 257 269 269 269 prt parameter char unaligned dcl 31 ref 27 95 prt_buffer based structure level 1 dcl 8-68 prt_bufferp 000146 automatic pointer dcl 8-66 set ref 158* prt_buffers based structure array level 1 dcl 8-79 set ref 158 164 prt_conv_ 000036 constant entry external dcl 61 ref 169 prt_info based structure level 1 dcl 9-7 prtdim_eurc_util$init 000042 constant entry external dcl 63 ref 166 prtdim_eurc_util$initialize_workspace 000044 constant entry external dcl 64 ref 212 prtdim_eurc_util$load_vfc 000050 constant entry external dcl 66 ref 181 prtdim_util$init 000040 constant entry external dcl 62 ref 188 prtdim_util$load_vfc 000046 constant entry external dcl 65 ref 191 ptr builtin function dcl 77 ref 162 rcode 000111 automatic fixed bin(35,0) dcl 41 set ref 102* 104 105* 120* 121 123* 125 129* 131 132* 150* 151 160* 161 166* 167 171* 181* 182 182* 183 188* 189 191* 192 192* 193 219 231* 232 233* 234 239* 240 240 rcp_$attach 000022 constant entry external dcl 54 ref 120 rcp_$check_attach 000024 constant entry external dcl 55 ref 123 rcp_$detach 000034 constant entry external dcl 60 ref 239 rcp_id 416 based bit(36) level 2 dcl 8-12 set ref 120* 123* 239* rcp_info 000124 automatic structure level 1 dcl 45 set ref 113 rcp_state 000110 automatic fixed bin(17,0) dcl 40 set ref 123* 127 reload_vfc_train_after_special 524 based bit(1) level 2 dcl 8-12 set ref 207* running 422 based bit(1) level 2 dcl 8-12 set ref 203* sdb based structure level 1 dcl 8-12 set ref 87 245 sdb_ptr parameter pointer dcl 8-10 set ref 27 81 87* 88 93 95 96 96 97 98 99 100 102 108 110 111 118 120 120 123 129 129 147 149 150 153 154 155 155 156 156 157 157 158 159 159 160 162 162 162 163 163 164 164 164 164 164 164 165 165 166* 168 169 174 174 175 177 181* 187 187 187 188* 191* 198 201 202 203 204 205 206 207 208 209 210 212 212* 226 230 231 237 239 239 244 245 256 256 266 274 status_ptr 527 based pointer level 2 packed unaligned dcl 8-12 set ref 162* stop 424 based fixed bin(18,0) level 2 dcl 8-12 set ref 164* 187* stream_name parameter char unaligned dcl 30 in procedure "prtdim_attach" ref 27 100 stream_name 32 based char(32) level 2 in structure "sdb" dcl 8-12 in procedure "prtdim_attach" set ref 100* substr builtin function dcl 77 set ref 82* 89* 111 118 219* 232 234* 240 240* 247* 248* 256 256 system_flag 3 000124 automatic bit(1) level 2 dcl 45 set ref 117* tally 0(24) based bit(12) level 2 packed unaligned dcl 6-7 set ref 178* time_max 000106 automatic fixed bin(52,0) dcl 39 set ref 123* timer_manager_$reset_alarm_wakeup 000052 constant entry external dcl 67 ref 230 train 4 based fixed bin(17,0) level 2 dcl 9-7 set ref 143* unspec builtin function dcl 77 ref 82 89 219 234 240 usage_time 1 000124 automatic fixed bin(17,0) level 2 dcl 45 set ref 115* version 531 based fixed bin(17,0) level 2 packed unaligned dcl 8-12 set ref 210* version_num 000124 automatic fixed bin(17,0) level 2 dcl 45 set ref 114* wait_flag 426 based bit(1) level 2 dcl 8-12 set ref 202* wait_time 2 000124 automatic fixed bin(17,0) level 2 dcl 45 set ref 116* wksp_max 000104 automatic fixed bin(19,0) dcl 38 set ref 123* 147* 148* 148 149 150 155 wseg based bit(36) array dcl 8-78 ref 174 wsegp 420 based pointer level 2 dcl 8-12 set ref 150* 158 162 164 169* 174 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. MPC_CARD_WORD internal static char(4) initial dcl 1-26 addrel builtin function dcl 77 config_deck$ external static fixed bin(17,0) dcl 75 event_call_info_ptr automatic pointer dcl 4-5 imess based structure level 1 dcl 5-21 imp automatic pointer dcl 5-19 isp automatic pointer dcl 5-5 mpc_card_array based structure level 1 dcl 1-19 pcw based structure level 1 dcl 7-6 pcwp automatic pointer dcl 7-4 rel builtin function dcl 77 tdcw based structure level 1 dcl 6-14 tdcwp automatic pointer dcl 6-4 NAMES DECLARED BY EXPLICIT CONTEXT. attach_state 000000 constant label array(0:3) dcl 129 ref 127 check 000305 constant label dcl 123 ref 135 detach 001125 constant label dcl 230 ref 222 exit 001241 constant label dcl 247 ref 83 90 free 001066 constant label dcl 219 ref 121 125 133 137 151 161 167 172 183 189 193 free1 001066 constant label dcl 219 ref 106 prtdim_attach 000044 constant entry external dcl 27 prtdim_detach 001076 constant entry external dcl 226 set_mpc_type 001247 constant entry internal dcl 254 ref 146 NAMES DECLARED BY CONTEXT OR IMPLICATION. bin builtin function ref 178 bit builtin function ref 177 178 hbound builtin function ref 272 min builtin function ref 148 size builtin function ref 159 164 string builtin function ref 176 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1674 1764 1362 1704 Length 2432 1362 70 431 311 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME prtdim_attach 214 external procedure is an external procedure. set_mpc_type internal procedure shares stack frame of external procedure prtdim_attach. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME prtdim_attach 000100 i prtdim_attach 000102 area_ptr prtdim_attach 000104 wksp_max prtdim_attach 000106 time_max prtdim_attach 000110 rcp_state prtdim_attach 000111 rcode prtdim_attach 000112 char_cnt prtdim_attach 000114 ipc_message prtdim_attach 000124 rcp_info prtdim_attach 000136 mpc_cardp prtdim_attach 000140 prph_prt_cardp prtdim_attach 000142 dcwp prtdim_attach 000144 idcwp prtdim_attach 000146 prt_bufferp prtdim_attach 000150 pip prtdim_attach 000152 pcip prtdim_attach 000154 printer_info_ptr prtdim_attach THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry_desc op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. config_$find config_$find_periph convert_ipc_code_ get_system_free_area_ init_printer_$reset ioi_$set_status ioi_$workspace ipc_$block ipc_$create_ev_chn ipc_$delete_ev_chn prt_conv_ prtdim_eurc_util$init prtdim_eurc_util$initialize_workspace prtdim_eurc_util$load_vfc prtdim_util$init prtdim_util$load_vfc rcp_$attach rcp_$check_attach rcp_$detach timer_manager_$reset_alarm_wakeup THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bigarg error_table_$ionmat error_table_$no_operation error_table_$no_room_for_dsb LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 27 000036 80 000101 81 000104 82 000110 83 000112 86 000113 87 000121 88 000126 89 000132 90 000135 93 000136 95 000140 96 000150 97 000152 98 000156 99 000162 100 000172 102 000177 104 000210 105 000212 106 000221 108 000222 110 000226 111 000230 113 000232 114 000234 115 000236 116 000237 117 000240 118 000241 120 000244 121 000303 123 000305 125 000354 127 000356 129 000360 131 000401 132 000403 133 000412 135 000413 137 000414 141 000415 143 000420 144 000422 146 000424 147 000425 148 000435 149 000442 150 000443 151 000462 153 000464 154 000471 155 000473 156 000504 157 000511 158 000521 159 000524 160 000530 161 000551 162 000553 163 000562 164 000564 165 000603 166 000613 167 000625 168 000627 169 000633 170 000656 171 000661 172 000664 174 000665 175 000671 176 000673 177 000674 178 000700 179 000705 180 000714 181 000725 182 000736 183 000744 185 000746 187 000747 188 000753 189 000764 190 000766 191 000777 192 001010 193 001016 197 001020 198 001023 199 001033 201 001037 202 001040 203 001041 204 001042 205 001043 206 001044 207 001045 208 001046 209 001047 210 001051 212 001053 215 001065 219 001066 222 001070 226 001071 228 001121 230 001125 231 001136 232 001151 233 001155 234 001164 237 001166 239 001172 240 001225 244 001233 245 001237 247 001241 248 001244 249 001246 254 001247 256 001250 257 001265 258 001272 260 001274 261 001307 266 001313 267 001317 269 001320 272 001333 273 001341 274 001346 275 001352 277 001353 278 001355 280 001356 282 001357 ----------------------------------------------------------- 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