COMPILATION LISTING OF SEGMENT tolts_qttyio_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 12/09/86 1526.5 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* format: style4 */ 12 tolts_qttyio_: proc (message, a_page); 13 14 /* tolts_qttyio_ - procedure and related entries to queue up terminal io for tolts, 1 line at a time */ 15 /* the page numbers have the following meaning: 16* page = 0 = output to users terminal 17* page = 1 - 8 = output from 1 of the test pages, routed to users terminal or print file (see dcw_lp struct) 18* page = 9 = output message on users terminal and then read input from user 19* page = 10 = output to user terminal or print file, if print file attached (tolts_info.file_attach = "1"b) 20**/ 21 22 /* External Entries */ 23 24 dcl hcs_$wakeup entry (bit (36) aligned, 25 fixed bin (71), ptr, fixed bin (35)); /* arg 3 is suppose to be fixed bin (71) */ 26 dcl com_err_ entry options (variable); 27 dcl terminate_process_ entry (char (*), ptr); 28 dcl cu_$arg_list_ptr entry (ptr); 29 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), fixed bin, bit (1) aligned, bit (1) aligned); 30 dcl tolts_util_$bci_to_ascii entry (bit (*), char (*) varying, fixed bin); 31 32 /* Entry Parameters */ 33 34 dcl message char (*); 35 dcl (a_page, np) fixed bin; 36 dcl a_dcwp ptr; 37 38 /* Automatic */ 39 40 dcl (genp, argp, dcwptr) ptr; 41 dcl mep ptr; 42 dcl (page, lp, lb, c_len, i) fixed bin; 43 dcl (found, pline) bit (1); 44 dcl NLFF char (2); 45 dcl rs_data char (136); 46 47 /* structures and based variables */ 48 49 dcl bcd_str bit (c_len * 6) based (genp); 50 51 dcl 1 fatal_desc aligned, 52 2 version fixed bin, 53 2 fatal_code fixed bin (35); 54 55 dcl 1 mes_buf based (mep) aligned, /* template for a message queue entry */ 56 2 page fixed bin, /* test page number issuing io */ 57 2 nlines fixed bin, /* number of array elements in message */ 58 2 cline fixed bin, /* line number currently being displayed */ 59 2 lines (nlines) char (136), /* array of message lines */ 60 2 nxt_mes char (1); /* method to get to next message */ 61 62 dcl 1 rcw based (genp), /* structure for gcos sysout records with rcws */ 63 (2 dlen fixed bin, /* number of words */ 64 2 pad fixed bin) unaligned, /* reset of rcw not used */ 65 2 data bit (rcw.dlen * 36), /* bcd data as bit string */ 66 2 nxt_rcw bit (0); /* used for getting next rcw */ 67 68 dcl 1 dcw_lp based (dcwptr) aligned, /* template for tadio dcw ptr */ 69 (2 add fixed bin (18) unsigned, /* address of tadio dcw */ 70 2 type, /* dcw type */ 71 3 e bit (1), /* select terminal/print file by option */ 72 3 r bit (1), /* write then read */ 73 3 m bit (1), /* master console output */ 74 3 s bit (1), /* slaved terminal output */ 75 3 c bit (1), /* controlling terminal output */ 76 3 p bit (1), /* output to print file */ 77 2 wc fixed bin (12) unsigned) unaligned; /* total message word count */ 78 79 /* Builtins */ 80 81 dcl (addr, addrel, length, rel, rtrim, search, substr, unspec, verify) builtin; 82 83 84 page = a_page; /* copy test page number */ 85 if page = 9 then tolts_info.term_io_in_prog = "1"b; 86 call que_setup; /* go set up queue entry */ 87 if tolts_info.file_attach then /* if print file attached.... */ 88 if page > 0 & page ^= 9 & page ^= 19 then /* and if exec I/O... */ 89 pline = "1"b; /* set print flag */ 90 c_len = length (rtrim (message)); /* get rtrim(message) length */ 91 call parse_mess (addr (message), c_len); /* go parse up message into individual lines */ 92 call wakeup; /* go wakeup display event */ 93 return; /* thats all folks */ 94 95 96 /* dcw_ptr - entry to queue up message given a list of dcw ptrs (for MME TADIOD) */ 97 98 dcw_ptr: entry (a_dcwp, np, a_page); 99 100 page = a_page; 101 dcwptr = a_dcwp; 102 do i = 1 to np; /* process all dcw ptrs */ 103 call que_setup; /* go set up our message queue entry */ 104 dcwp = ptr (dcwptr, dcw_lp.add); /* get ptr to next dcw */ 105 if tolts_info.file_attach then /* if print file attached... */ 106 if dcw_lp.type.e | dcw_lp.type.p then /* and line to be printed */ 107 pline = "1"b; /* set flag */ 108 call pdcw_list; /* go process dcw list */ 109 call wakeup; /* go wakeup display event */ 110 dcwptr = addrel (dcwptr, 1); /* increment to next ptr */ 111 end; 112 return; /* thats all folks */ 113 114 115 /* dcw_list - entry to queue up a message given a dcw list */ 116 117 dcw_list: entry (a_dcwp, a_page); 118 119 page = a_page; /* copy test page number */ 120 call que_setup; /* go get the next avail buffer and initialize */ 121 dcwp = a_dcwp; /* copy dcw ptr */ 122 call pdcw_list; /* go process the dcw list */ 123 call wakeup; /* issue wakeup to tolts_ttyio_display_ */ 124 return; /* thats all folks */ 125 126 127 /* rs - entry to pass in short messages with ioa_ control args */ 128 129 rs: entry (a_page); 130 131 page = a_page; /* set test page */ 132 call que_setup; /* go get next queue loc */ 133 if tolts_info.file_attach then /* if print file attached.... */ 134 if page > 0 & page ^= 9 & page ^= 19 then 135 pline = "1"b; /* set print flag */ 136 call cu_$arg_list_ptr (argp); /* get ptr to our argument list */ 137 call ioa_$general_rs (argp, 2, 3, rs_data, c_len, "0"b, "0"b); /* format message */ 138 call parse_mess (addr (rs_data), c_len); /* go parse message and store in queue */ 139 call wakeup; /* wakeup display */ 140 return; 141 142 143 /* rcw - entry to output a message coded for gcos sysout */ 144 145 rcw: entry (a_dcwp); 146 147 page = 0; /* set test page to exec */ 148 call que_setup; /* go get next queue loc */ 149 dcwp = a_dcwp; /* copy dcw ptr */ 150 c_len = fixed (dcw.tally); /* get dcw length */ 151 i = 0; /* reset word counter */ 152 genp = ptr (dcwp, dcw.address); /* get ptr to first rcw */ 153 do while (i < c_len); /* do until we are done */ 154 i = i + rcw.dlen + 1; /* add current rcw length + rcw */ 155 call tolts_util_$bci_to_ascii (rcw.data, tolts_info.cv_buf, rcw.dlen * 6); /* convert to ascii */ 156 call parse_mess (addrel (addr (tolts_info.cv_buf), 1), length (tolts_info.cv_buf)); /* go parse message */ 157 genp = addr (rcw.nxt_rcw); /* get next rcw address */ 158 end; 159 call wakeup; /* wakeup display event */ 160 return; /* thats it folks */ 161 162 163 /* pdcw_list - subroutine to process a dcw list containing messages */ 164 165 pdcw_list: proc; 166 167 found = "0"b; /* initiaize terminate condition */ 168 do while (^found); /* process all dcws */ 169 genp = ptr (dcwp, fixed (dcw.address, 17)); /* get ptr to string */ 170 c_len = fixed (dcw.tally) * 6; /* number of bcd chars */ 171 call tolts_util_$bci_to_ascii (bcd_str, tolts_info.cv_buf, c_len); 172 call parse_mess (addrel (addr (tolts_info.cv_buf), 1), length (tolts_info.cv_buf)); /* go parse message */ 173 if dcw.type = "00"b then found = "1"b; /* if last dcw */ 174 else dcwp = addrel (dcwp, 1); /* otherwise get next dcw */ 175 end; 176 177 end pdcw_list; 178 179 /* parse_mess - subroutine to parse terminal messages and store in queue entry message array */ 180 181 parse_mess: proc (mesp, slen); 182 183 dcl mesp ptr; /* ptr to message to be parsed */ 184 dcl slen fixed bin; /* length of message to be parsed */ 185 dcl rmess char (slen) based (mesp); /* template for message to be parsed */ 186 187 if slen = 0 then /* special case null lines */ 188 lp = 0; 189 else lp = 1; /* set initial scan position */ 190 do while (lp <= slen); /* process entire line */ 191 mes_buf.nlines = mes_buf.nlines + 1; /* update number of lines */ 192 mes_buf.lines (nlines) = ""; /* initialize buffer to blanks */ 193 if slen ^= 0 then do; /* if somebody sent over a null string, special case */ 194 lb = verify (substr (rmess, lp, (slen - lp) + 1), NLFF); /* strip off NLs and Form feeds */ 195 if lb = 0 then do; /* if couldn't find... */ 196 lp = lp + (slen - lp) + 1; /* update lp to escape from loop */ 197 mes_buf.nlines = mes_buf.nlines - 1; /* get rid of blank line */ 198 end; 199 else do; 200 lp = lp + (lb - 1); /* correct starting position */ 201 lb = search (substr (rmess, lp), NLFF); /* search for next NL or form feed */ 202 if lb = 0 then /* if no more */ 203 lb = (slen - lp) + 1; /* set to end of line */ 204 else lb = lb - 1; 205 mes_buf.lines (nlines) = substr (rmess, lp, lb); /* save substr as line */ 206 lp = lp + lb; /* update position */ 207 end; 208 end; 209 else lp = 1; /* set condition to get out of loop */ 210 end; 211 212 end parse_mess; 213 214 215 /* que_setup - subroutine to initialize a new queue entry */ 216 217 que_setup: proc; 218 219 unspec (NLFF) = "012014"b3; /* set new line and form feed constants */ 220 mep = tolts_info.mess_buf.nxt; /* set message ptr to next avail loc */ 221 mes_buf.page = page; /* set page number in entry */ 222 mes_buf.nlines, mes_buf.cline = 0; /* initialize number of lines and current line */ 223 pline = "0"b; /* reset print line flag */ 224 225 end que_setup; 226 227 /* wakeup - subroutine to set the nxt queue entry address and wakeup tolts_dtty_io_ */ 228 229 wakeup: proc; 230 231 if pline then /* if message to be printed... */ 232 mes_buf.page = mes_buf.page + 20; /* set print indicator */ 233 tolts_info.mess_buf.nxt = addr (mes_buf.nxt_mes); /* set next queue address */ 234 if rel (tolts_info.mess_buf.nxt) > rel (addr (tolts_info.mess_buf.q_end)) then /* if wrap */ 235 tolts_info.mess_buf.nxt = tolts_info.mess_buf.first; /* set to start of queue */ 236 tolts_info.term_io_req_cnt = tolts_info.term_io_req_cnt + 1; /* increment number of requests */ 237 238 /* send tolts_dttyio_ a wakeup and send him the message ptr */ 239 240 call hcs_$wakeup (tolts_info.process, tolts_info.tty_issue_event, mep, fatal_desc.fatal_code); 241 if fatal_desc.fatal_code ^= 0 then do; 242 call com_err_ (fatal_desc.fatal_code, "tolts_qttyio_", "fatal error, terminating process"); 243 fatal_desc.version = 0; 244 call terminate_process_ ("fatal_error", addr (fatal_desc)); 245 end; 246 247 end wakeup; 248 249 1 1 /* BEGIN INCLUDE FILE tolts_info.incl.pl1 */ 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 /****^ HISTORY COMMENTS: 1 10* 1) change(80-03-24,Fakoury), approve(), audit(86-11-25,Martinson), 1 11* install(86-12-04,MR12.0-1235): 1 12* to add second sct for 500/501 MTAR 1 13* 2) change(80-09-01,Fakoury), approve(), audit(86-11-25,Martinson), 1 14* install(86-12-04,MR12.0-1235): 1 15* to init rcp_area and alt_rcp_area to 0. 1 16* 3) change(81-09-01,Fakoury), approve(), audit(86-11-25,Martinson), 1 17* install(86-12-04,MR12.0-1235): 1 18* to add new statements for colts. 1 19* 4) change(81-09-01,Fakoury), approve(), audit(86-11-25,Martinson), 1 20* install(86-12-04,MR12.0-1235): 1 21* to increase the dcw_list size. 1 22* 5) change(82-04-01,Fakoury), approve(), audit(86-11-25,Martinson), 1 23* install(86-12-04,MR12.0-1235): 1 24* to add crcst and redefine devsct. 1 25* 6) change(82-09-01,Fakoury), approve(), audit(86-11-25,Martinson), 1 26* install(86-12-04,MR12.0-1235): 1 27* to increase the console buffer size for mtar. 1 28* 7) change(82-11-01,Fakoury), approve(), audit(86-11-25,Martinson), 1 29* install(86-12-04,MR12.0-1235): 1 30* for 128chan support. 1 31* 8) change(83-07-01,Fakoury), approve(), audit(86-11-25,Martinson), 1 32* install(86-12-04,MR12.0-1235): 1 33* to increase the dcw_list size for mtar perm file track repair. 1 34* 9) change(84-04-10,Fakoury), approve(86-08-21,MCR7514), 1 35* audit(86-11-25,Martinson), install(86-12-04,MR12.0-1235): 1 36* to add sct_info needed to support the DAU & DIPPER. 1 37* 10) change(85-02-21,Fakoury), approve(86-08-21,MCR7514), 1 38* audit(86-11-25,Martinson), install(86-12-04,MR12.0-1235): 1 39* 2/85 to support test nio request. 1 40* 11) change(85-04-01,Fakoury), approve(86-08-21,MCR7514), 1 41* audit(86-11-25,Martinson), install(86-12-04,MR12.0-1235): 1 42* for extended status store. 1 43* 12) change(85-12-21,Fakoury), approve(86-08-21,MCR7514), 1 44* audit(86-11-25,Martinson), install(86-12-04,MR12.0-1235): 1 45* for Colts Responder changes. 1 46* 13) change(86-02-01,Fakoury), approve(86-08-20,MCR7514), 1 47* audit(86-11-25,Martinson), install(86-12-04,MR12.0-1235): 1 48* implement the test nio request. 1 49* support of a Colts responder test request. 1 50* END HISTORY COMMENTS */ 1 51 1 52 1 53 1 54 1 55 1 56 1 57 /* format: style4,ifthenstmt,ifthen,ind3,ll125,lineconind1 */ 1 58 1 59 dcl polt_io_type fixed bin int static options (constant) init (0); 1 60 dcl itr_io_type fixed bin int static options (constant) init (1); 1 61 dcl mdr_io_type fixed bin int static options (constant) init (2); 1 62 dcl mtar_io_type fixed bin int static options (constant) init (3); 1 63 dcl firm_ld_io_type fixed bin int static options (constant) init (4); 1 64 dcl mtc_io_type fixed bin int static options (constant) init (5); 1 65 dcl mtg_io_type fixed bin int static options (constant) init (6); 1 66 dcl mdc_io_type fixed bin int static options (constant) init (7); 1 67 dcl mhp_io_type fixed bin int static options (constant) init (8); 1 68 dcl mca_io_type fixed bin int static options (constant) init (9); 1 69 dcl rspd_io_type fixed bin int static options (constant) init (10); 1 70 1 71 dcl tolts_infop ptr external static; /* ext static ptr to tolts_info structure */ 1 72 dcl colts_info_ptr ptr; /* ptr to individual test page data */ 1 73 dcl io_info_ptr ptr; /* ptr to individual test page data */ 1 74 dcl dmap ptr; /* pointer to dial_manager_arg */ 1 75 dcl 1 tolts_info based (tolts_infop) aligned, /* data structure used for tolts routines */ 1 76 2 cdtptr ptr, 1 77 2 df_iocbp ptr, /* deckfile iocb ptr */ 1 78 2 dm_event fixed bin (71), /* dial_manager event_channel */ 1 79 2 exec char (4), /* executive name (polt, molt, colt etc) */ 1 80 2 exec_dta_cnt fixed bin, /* inter slave request count */ 1 81 2 exec_page_count fixed bin, /* number of test pages active */ 1 82 2 exec_term_io_wait bit (1), /* waiting for io to complete for exec termination */ 1 83 2 execp ptr, /* ptr to slave polt or molt segment */ 1 84 2 file_attach bit (1), /* = "1"b if print file attached */ 1 85 2 file_open bit (1), /* = "1"b if print file open */ 1 86 2 finish_cond bit (1), /* = "1"b if finish condition has been signaled */ 1 87 2 first_request_done bit (1), /* first terminal io request complete */ 1 88 2 gc_date bit (36), /* gcos 6 char bcd date (set at init time, updated at rollover) */ 1 89 2 gewake_active bit (1), /* = "1"b if gewake alarm timer is active */ 1 90 2 gewake_event fixed bin (71), /* gewake alarm timer event channel id */ 1 91 2 glob_int_cnt fixed bin, /* total number of outstanding test IOs */ 1 92 2 hdir char (168), /* users home directory pathname */ 1 93 2 init_time fixed bin (71), /* gcos time of executive initialize (mme poinit) */ 1 94 2 max_to fixed bin (71), /* max ioi timeout ( from rcp_$check_attach) */ 1 95 2 max_wks_sz fixed bin (19), /* max ioi wkspace size (from rcp_$check_attach) */ 1 96 2 micro_time fixed bin (71), /* time at midnight in usecs. (set at init time, updated at rollover */ 1 97 2 optflag fixed bin, /* option request flag */ 1 98 2 padx (2) fixed bin, /* reserved area */ 1 99 2 pf_iocbp ptr, /* print file iocb ptr */ 1 100 2 pf_name char (32), /* seg name of print file */ 1 101 2 process bit (36), /* T & D users process id */ 1 102 2 quith_event fixed bin (71), /* quit handler event call channel id */ 1 103 2 special_fault bit (1), /* error on reconnect after special int */ 1 104 2 term_io_in_prog bit (1), /* terminal io in progress */ 1 105 2 term_io_req_cnt fixed bin, /* outstanding terminal io requests */ 1 106 2 tty_ccc_event fixed bin (71), /* term io courtesy call event call channel id */ 1 107 2 tty_display_event fixed bin (71), /* term io display event channel id */ 1 108 2 tty_issue_event fixed bin (71), /* term io issue event call channel id */ 1 109 2 wks_sz fixed bin, /* workspace size in words (4096 for polts, 6144 for molts) */ 1 110 2 exec_dta (16), /* inter slave request queue */ 1 111 3 word (4) bit (36), /* inter slave data */ 1 112 2 ccc_queue, /* courtesy call queue */ 1 113 3 ccc_requests fixed bin, /* courtesy call requests */ 1 114 3 icivlu (16) bit (36), /* ic and ind of courtesy call routine */ 1 115 2 isc_queue, /* interslave communication queue */ 1 116 3 icivlu bit (36), /* ic and i of queue entry */ 1 117 3 status_add fixed bin, /* :: */ 1 118 3 data_add fixed bin, /* :: */ 1 119 1 120 2 tadio (8), /* T & D user io rqt queue */ 1 121 3 optrd bit (1), /* = "1"b if options are to be read */ 1 122 3 inuse bit (1), /* = "1"b if queue entry in use */ 1 123 3 return_word (3) bit (36), /* data returned from mme tadiod */ 1 124 3 option bit (6 * 84), /* bcd option string */ 1 125 2 wait_list, /* wait list for dispatcher block */ 1 126 3 nchan fixed bin, /* number of event wait channels */ 1 127 3 wait_pad fixed bin, /* will make wait_event_id on even boundary */ 1 128 3 wait_event_id (2) fixed bin (71), /* dispatcher event wait chan id */ 1 129 2 clt_sw char (32), 1 130 2 att_desc char (32), 1 131 2 cdt_pointer ptr, /* save pointer to cdt */ 1 132 2 fnp_exec_cnt fixed bin init (0), 1 133 2 fnp (0:7), 1 134 3 exec_active bit (1) init ("0"b), 1 135 3 exec_chan char (32), 1 136 3 status_word bit (36) init ("0"b), 1 137 3 fnp_execp ptr, 1 138 3 type fixed bin, 1 139 3 exec_type_code bit (6) init ("0"b), 1 140 3 cdt_name (8) char (32) init ("empty"), /* cdt name built from test request */ 1 141 3 dm_arg like dial_manager_arg, 1 142 2 mess_buf, /* terminal io message buffers */ 1 143 3 first ptr, /* ptr to start of message buffer */ 1 144 3 nxt ptr, /* ptr to nxt queue entry */ 1 145 3 term_queue (8192) fixed bin, /* message queu as fixed bin */ 1 146 3 q_end bit (0), /* to find end of queue */ 1 147 3 q_pad (1024) fixed bin, /* padding area */ 1 148 3 mult_ans char (28) varying, /* answer to local Multics question */ 1 149 3 cv_buf char (4000) varying, /* temporary conversion storage */ 1 150 2 colts_pages (8) like colts_info, 1 151 2 pages (8) like io_info, /* test pages (8 posible) */ 1 152 2 firm_buf (10240) fixed bin; /* storage for loading firmware */ 1 153 1 154 1 155 dcl 1 io_info based (io_info_ptr) aligned, /* this maps test pages in tolts_info */ 1 156 2 alloc_wait bit (1), /* = "1"b if waiting for delayed allocation */ 1 157 2 allocated bit (1), /* = "1"b if device allocated to this page */ 1 158 2 alt_dev_flag bit (1), /* = "1"b if 2nd logical device configured (MTAR 500/501 only */ 1 159 2 alt_device_index fixed bin (12), /* ioi device index */ 1 160 2 alt_device_name char (8), /* alternate allocated device name */ 1 161 2 alt_rcp_area (24) fixed bin init (0), /* alternate device rcp */ 1 162 2 alt_rcp_id bit (36) aligned, /* rcp id for alternate attach/check_attach */ 1 163 2 attach_err fixed bin (35), /* error code returned durning attach */ 1 164 2 cata_cycle bit (1), /* cycle check for cata */ 1 165 2 cat_name char (10), /* itr or mdr catalog suffix */ 1 166 2 n_keys fixed bin aligned, /* number of catalog keys below */ 1 167 2 cata_keys (10) char (24) aligned, /* array of catalog keys */ 1 168 2 catp ptr, /* ptr to itr or mdr catalog in deckfile */ 1 169 2 catx fixed bin, /* current cata_info.index */ 1 170 2 ccu_pun bit (1), /* = "1"b if ccu to be used as punch */ 1 171 2 chan_suspended bit (1), /* = "1"b if channel has been suspended */ 1 172 2 chan_time fixed bin (35), /* channel time (in 1/64th miliseconds) */ 1 173 2 con_time fixed bin (35), /* abs time of connect (in 1/64 th miliseconds) */ 1 174 2 cur_wks_sz fixed bin, /* current size of ioi workspace (normally tolts_info.wks_sz) */ 1 175 2 dcw_list (330) bit (36), /* test page dcw list in unaltered form */ 1 176 2 dev_busy bit (1), /* = "1"b if device busy before */ 1 177 2 device_index fixed bin (12), /* ioi device index */ 1 178 2 device_name char (8), /* allocated device name (in ascii) */ 1 179 2 ev_ch_ass bit (1), /* = "1"b if status event chan assigned to this page */ 1 180 2 ext_status_add fixed bin, /* extended status store address */ 1 181 2 fnp_num fixed bin, 1 182 2 fpinfo_ptr ptr, /* ptr to rspd info table */ 1 183 2 ignore_term bit (1), /* = "1"b if term int to be ignored, wait for special (ITR) */ 1 184 2 in_use bit (1), /* = "1"b if this test page in use */ 1 185 2 int_time fixed bin (35), /* abs time of interrupt (in 1/64 th miliseconds) */ 1 186 2 io_in_progress bit (1), /* = "1"b if io in progress for this page */ 1 187 2 io_trc_flag bit (1), /* = "1"b if io is being traced */ 1 188 2 io_type fixed bin, /* 0 = polt, 1 = ITR, 2 = MDR, 3 = MTAR, 4 = firmware load */ 1 189 2 iocp ptr, 1 190 2 ipc_attached bit (1), 1 191 2 ipc_id char (3), 1 192 2 ipc_number fixed bin, 1 193 2 lostit_time fixed bin (35), /* lost interrupt time in 1/64 th miliseconds */ 1 194 2 mca_attach_state fixed bin, 1 195 2 mcata_idx fixed bin, /* mca catalog indexer */ 1 196 2 mcata_nkeys fixed bin aligned, /* no of keys in a mca catalog */ 1 197 2 mcata_keys (100) char (24) aligned, /* mca catalog entries */ 1 198 2 mca_ioi_idx fixed bin, /* ioi index of attached mca / 1 199* 2 mca_iop ptr, /* mca io ptr */ 1 200 2 mca_workspace_ptr ptr, 1 201 2 mpc_dev_cnt fixed bin, /* if urmpc to be booted, # of devices */ 1 202 2 nff bit (1), /* = "1"b new format flag */ 1 203 2 num_connects fixed bin, /* number of connects issued by this page */ 1 204 2 p2_att bit (1), /* ="1"b if alternate device is attached (MTAR 500/501 only) */ 1 205 2 p_att bit (1), /* = "1"b if perp. device attached to this page */ 1 206 2 page_base fixed bin (18) uns, /* base of this test page in slave seg */ 1 207 2 pcwa bit (36), /* pcw */ 1 208 2 rcp_area (24) fixed bin init (0), /* storage for rcp device info */ 1 209 2 rcp_id bit (36) aligned, /* rcp id for attach/check_attach */ 1 210 2 rcp_name char (32), /* rcp name for this device */ 1 211 2 rcp_state fixed bin, /* rcp attach state flag */ 1 212 2 release_chan bit (1), /* = "1"b if ioi_$release devices to be called */ 1 213 2 rew_wait bit (1), /* = "1"b if waiting for special on rewind complete */ 1 214 2 sp_flag bit (1), /* = "1"b if special status available */ 1 215 2 sp_status bit (36), /* special interrupt status storage */ 1 216 2 spare1 bit (1), 1 217 2 status_add fixed bin, /* address to store status in test page */ 1 218 2 status_event fixed bin (71), /* io completion status event call channel id */ 1 219 2 suspend_chan bit (1), /* = "1"b if ioi_$suspend devices to be called */ 1 220 2 tolts_rspd_wksp ptr, 1 221 2 test_hdr char (16), /* test header used for Multics local messages */ 1 222 2 tio_off fixed bin (18), /* dcw list offset for ioi */ 1 223 2 to_no_cc bit (1), /* = "1"b if timeout expected (set after mme ipcw) */ 1 224 2 workspace_ptr ptr, /* ioi workspace ptr */ 1 225 2 altsct, /* sct for MTAR alternate device */ 1 226 (3 w1, /* device sct word 1 */ 1 227 4 type_code bit (6), /* gcos 3 type code (see dd14 app. a) */ 1 228 4 device_no bit (6), /* device number */ 1 229 4 com_prph bit (1), /* = "1"b if common perph. device */ 1 230 4 hi_speed bit (1), /* = "1"b if hi speed printer */ 1 231 4 ll160 bit (1), /* = "1"b if 160 collum printer */ 1 232 4 pad1 bit (2), 1 233 4 cr501_pr54 bit (1), /* either a cr501 or pr54 device */ 1 234 4 icc bit (11), /* iom and channel (true channel index) */ 1 235 4 pad2 bit (7), 1 236 3 w2, /* device sct word 2 */ 1 237 4 ptrain fixed bin (14), /* print train number */ 1 238 4 nmods bit (3), /* not used in Multics */ 1 239 4 pad4 bit (3), 1 240 4 den_cap bit (4), /* density capability for tapes */ 1 241 4 pad5 bit (11)) unaligned, 1 242 2 crcst, /* controller sct */ 1 243 (3 pad1 bit (1), 1 244 3 volatile bit (1), /* reloadable firmware */ 1 245 3 mpc bit (1), /* = "1"b if mpc */ 1 246 3 pad2 bit (4), 1 247 3 ms500 bit (1), /* = "1"b if mss500 device */ 1 248 3 mtp610 bit (1), /* = "1"b if mtp 610 device */ 1 249 3 pad3 bit (27)) unaligned, 1 250 2 dev_firm (4), /* storage for device firmware edit names */ 1 251 3 edit_name char (4), /* for urmpc firmware */ 1 252 3 mask bit (36), /* port mask for this firmware */ 1 253 2 devsct, /* 2 word device sct entry */ 1 254 (3 w1, /* device sct word 1 */ 1 255 4 type_code bit (6), /* gcos 3 type code (see dd14 app. a) */ 1 256 4 device_no bit (6), /* device number */ 1 257 4 com_prph bit (1), /* = "1"b if common perph. device */ 1 258 4 hi_speed bit (1), /* = "1"b if hi speed printer */ 1 259 4 ll160 bit (1), /* = "1"b if 160 collum printer */ 1 260 4 pad1 bit (2), 1 261 4 cr501_pr54 bit (1), /* either a cr501 or pr54 device */ 1 262 4 icc bit (11), /* iom and channel (true channel index) */ 1 263 4 pad2 bit (7), 1 264 3 w2, /* device sct word 2 */ 1 265 4 ptrain fixed bin (14), /* print train number */ 1 266 4 nmods bit (3), /* not used in Multics */ 1 267 4 pad4 bit (3), 1 268 4 den_cap bit (4), /* density capability for tapes */ 1 269 4 pad5 bit (11)) unaligned, 1 270 2 icivlu, /* ic and i for courtesy call on io completion */ 1 271 3 ic bit (18) unaligned, /* instruction counter */ 1 272 3 ind bit (18) unaligned, /* indicator register */ 1 273 2 sct_info, 1 274 (3 cntsct bit (18), /* unchanged from before */ 1 275 3 ioc_type bit (4), /* 0 = IOM, 1 = IMU, 2 = IOX */ 1 276 3 cnt_type bit (4), /* 0 = MPC, 1 = DAU, 2 = EURC, 3 = FIPS */ 1 277 3 pad1 bit (1), 1 278 3 xioc_type bit (4), /* not used in Multics */ 1 279 3 xcnt_type bit (4), /* not used in Multics */ 1 280 3 pad2 bit (1)) unaligned, 1 281 2 test_req aligned, 1 282 (3 fnccss bit (18), 1 283 3 tt bit (6), 1 284 3 pad1 bit (6)) unaligned; 1 285 1 286 1 287 dcl 1 colts_info aligned based (colts_info_ptr), 1 288 2 cdt_name char (32), 1 289 2 chanp pointer, /* iox pointer to chan under test */ 1 290 2 dm_arg aligned like dial_manager_arg, 1 291 2 fnp_num fixed bin (4), 1 292 2 in_use bit (1) unaligned init ("0"b), 1 293 2 status_word bit (36) aligned init ("0"b), 1 294 2 type_code bit (6) unaligned init ("0"b); 1 295 1 296 1 297 1 298 2 1 /* BEGIN INCLUDE FILE ... dial_manager_arg.incl.pl1 */ 2 2 2 3 /* Modified by E. N. Kittlitz 11/80 to add reservation string, move dial-out 2 4* destination from dial_qualifier, add dial_message. 2 5* Modified by Robert Coren 4/83 to add required access class stuff. 2 6* Modified 1984-08-27 BIM for V4, privileged_operation. 2 7**/ 2 8 2 9 2 10 dcl dial_manager_arg_version_2 fixed bin internal static initial (2) options (constant); 2 11 dcl dial_manager_arg_version_3 fixed bin internal static initial (3) options (constant); 2 12 dcl dial_manager_arg_version_4 fixed bin internal static initial (4) options (constant); 2 13 2 14 dcl 1 dial_manager_arg based aligned, 2 15 2 version fixed bin, /* = 4 */ 2 16 2 dial_qualifier char (22), /* identify different processes with same process group id */ 2 17 2 dial_channel fixed bin (71), /* event wait channel */ 2 18 2 channel_name char (32), /* channel name for privileged attach */ 2 19 /* limit of version 1 structure */ 2 20 2 dial_out_destination char (32), /* dial-out destination (e.g. phone_no) */ 2 21 2 reservation_string char (256), /* reservation string */ 2 22 2 dial_message fixed bin (71), /* OUTPUT: A.S. message received by dial_manager_ */ 2 23 /* limit of version 2 structure */ 2 24 2 access_class bit (72), /* access class to be associated with the attachment */ 2 25 2 flags aligned, 2 26 3 access_class_required bit (1) unaligned, /* indicates whether to enforce access_class */ 2 27 3 privileged_operation bit (1) unaligned, /* for accept_dials, accepts dials from */ 2 28 /* system_low:access_class */ 2 29 /* no effect on other operations yet. */ 2 30 3 mbz bit (34) unaligned; /* must be zero */ 2 31 2 32 /* END INCLUDE FILE ... dial_manager_arg.incl.pl1 */ 1 299 1 300 1 301 1 302 1 303 1 304 /* END INCLUDE FILE tolts_info.incl.pl1 */ 250 3 1 3 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 3 3 3 4 dcl dcwp ptr, /* pointer to DCW */ 3 5 tdcwp ptr; /* pointer to TDCW */ 3 6 3 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 3 8 (2 address bit (18), /* address for data transfer */ 3 9 2 char_pos bit (3), /* character position */ 3 10 2 m64 bit (1), /* non-zero for mod 64 address */ 3 11 2 type bit (2), /* DCW type */ 3 12 2 tally bit (12)) unal; /* tally for data transfer */ 3 13 3 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 3 15 (2 address bit (18), /* address to transfer to */ 3 16 2 mbz1 bit (4), 3 17 2 type bit (2), /* should be "10"b for TDCW */ 3 18 2 mbz2 bit (9), 3 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 3 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 3 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 3 22 3 23 /* End of include file ...... iom_dcw.incl.pl1 */ 3 24 251 252 253 end tolts_qttyio_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 12/09/86 1522.8 tolts_qttyio_.pl1 >special_ldd>install>MR12.0-1235>tolts_qttyio_.pl1 250 1 12/09/86 1521.3 tolts_info.incl.pl1 >special_ldd>install>MR12.0-1235>tolts_info.incl.pl1 1-299 2 09/13/84 0921.5 dial_manager_arg.incl.pl1 >ldd>include>dial_manager_arg.incl.pl1 251 3 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.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. NLFF 000117 automatic char(2) unaligned dcl 44 set ref 194 201 219* a_dcwp parameter pointer dcl 36 ref 98 101 117 121 145 149 a_page parameter fixed bin(17,0) dcl 35 ref 12 84 98 100 117 119 129 131 add based fixed bin(18,0) level 2 packed unsigned unaligned dcl 68 ref 104 addr builtin function dcl 81 ref 91 91 138 138 156 156 157 172 172 233 234 244 244 addrel builtin function dcl 81 ref 110 156 156 172 172 174 address based bit(18) level 2 packed unaligned dcl 3-7 ref 152 169 argp 000102 automatic pointer dcl 40 set ref 136* 137* bcd_str based bit unaligned dcl 49 set ref 171* c_len 000113 automatic fixed bin(17,0) dcl 42 set ref 90* 91* 137* 138* 150* 153 170* 171 171 171* cline 2 based fixed bin(17,0) level 2 dcl 55 set ref 222* colts_info based structure level 1 dcl 1-287 com_err_ 000012 constant entry external dcl 26 ref 242 cu_$arg_list_ptr 000016 constant entry external dcl 28 ref 136 cv_buf 25350 based varying char(4000) level 3 dcl 1-75 set ref 155* 156 156 156 156 171* 172 172 172 172 data 1 based bit level 2 packed unaligned dcl 62 set ref 155* dcw based structure level 1 dcl 3-7 dcw_lp based structure level 1 dcl 68 dcwp 000164 automatic pointer dcl 3-4 set ref 104* 121* 149* 150 152 152 169 169 170 173 174* 174 dcwptr 000104 automatic pointer dcl 40 set ref 101* 104 104 105 105 110* 110 dial_manager_arg based structure level 1 dcl 2-14 dlen based fixed bin(17,0) level 2 packed unaligned dcl 62 ref 154 155 155 155 157 e 0(18) based bit(1) level 3 packed unaligned dcl 68 ref 105 fatal_code 1 000162 automatic fixed bin(35,0) level 2 dcl 51 set ref 240* 241 242* fatal_desc 000162 automatic structure level 1 dcl 51 set ref 244 244 file_attach 14 based bit(1) level 2 dcl 1-75 ref 87 105 133 first 3334 based pointer level 3 dcl 1-75 ref 234 found 000115 automatic bit(1) unaligned dcl 43 set ref 167* 168 173* genp 000100 automatic pointer dcl 40 set ref 152* 154 155 155 155 155 157* 157 157 169* 171 hcs_$wakeup 000010 constant entry external dcl 24 ref 240 i 000114 automatic fixed bin(17,0) dcl 42 set ref 102* 151* 153 154* 154 io_info based structure level 1 dcl 1-155 ioa_$general_rs 000020 constant entry external dcl 29 ref 137 lb 000112 automatic fixed bin(17,0) dcl 42 set ref 194* 195 200 201* 202 202* 204* 204 205 206 length builtin function dcl 81 ref 90 156 156 172 172 lines 3 based char(136) array level 2 dcl 55 set ref 192* 205* lp 000111 automatic fixed bin(17,0) dcl 42 set ref 187* 189* 190 194 194 196* 196 196 200* 200 201 202 205 206* 206 209* mep 000106 automatic pointer dcl 41 set ref 191 191 192 192 197 197 205 205 220* 221 222 222 231 231 233 233 240* mes_buf based structure level 1 dcl 55 mesp parameter pointer dcl 183 ref 181 194 201 205 mess_buf 3334 based structure level 2 dcl 1-75 message parameter char unaligned dcl 34 set ref 12 90 91 91 nlines 1 based fixed bin(17,0) level 2 dcl 55 set ref 191* 191 192 197* 197 205 222* 233 np parameter fixed bin(17,0) dcl 35 ref 98 102 nxt 3336 based pointer level 3 dcl 1-75 set ref 220 233* 234 234* nxt_mes based char(1) level 2 dcl 55 set ref 233 nxt_rcw based bit level 2 packed unaligned dcl 62 set ref 157 p 0(23) based bit(1) level 3 packed unaligned dcl 68 ref 105 page 000110 automatic fixed bin(17,0) dcl 42 in procedure "tolts_qttyio_" set ref 84* 85 87 87 87 100* 119* 131* 133 133 133 147* 221 page based fixed bin(17,0) level 2 in structure "mes_buf" dcl 55 in procedure "tolts_qttyio_" set ref 221* 231* 231 pline 000116 automatic bit(1) unaligned dcl 43 set ref 87* 105* 133* 223* 231 process 126 based bit(36) level 2 dcl 1-75 set ref 240* q_end 23340 based bit level 3 dcl 1-75 set ref 234 rcw based structure level 1 packed unaligned dcl 62 rel builtin function dcl 81 ref 234 234 rmess based char unaligned dcl 185 ref 194 201 205 rs_data 000120 automatic char(136) unaligned dcl 45 set ref 137* 138 138 rtrim builtin function dcl 81 ref 90 search builtin function dcl 81 ref 201 slen parameter fixed bin(17,0) dcl 184 ref 181 187 190 193 194 194 196 201 202 205 substr builtin function dcl 81 ref 194 201 205 tally 0(24) based bit(12) level 2 packed unaligned dcl 3-7 ref 150 170 term_io_in_prog 133 based bit(1) level 2 dcl 1-75 set ref 85* term_io_req_cnt 134 based fixed bin(17,0) level 2 dcl 1-75 set ref 236* 236 terminate_process_ 000014 constant entry external dcl 27 ref 244 tolts_info based structure level 1 dcl 1-75 tolts_infop 000024 external static pointer dcl 1-71 ref 85 87 105 133 155 156 156 156 156 171 172 172 172 172 220 233 234 234 234 234 236 236 240 240 tolts_util_$bci_to_ascii 000022 constant entry external dcl 30 ref 155 171 tty_issue_event 142 based fixed bin(71,0) level 2 dcl 1-75 set ref 240* type 0(18) based structure level 2 in structure "dcw_lp" packed unaligned dcl 68 in procedure "tolts_qttyio_" type 0(22) based bit(2) level 2 in structure "dcw" packed unaligned dcl 3-7 in procedure "tolts_qttyio_" ref 173 unspec builtin function dcl 81 set ref 219* verify builtin function dcl 81 ref 194 version 000162 automatic fixed bin(17,0) level 2 dcl 51 set ref 243* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. colts_info_ptr automatic pointer dcl 1-72 dial_manager_arg_version_2 internal static fixed bin(17,0) initial dcl 2-10 dial_manager_arg_version_3 internal static fixed bin(17,0) initial dcl 2-11 dial_manager_arg_version_4 internal static fixed bin(17,0) initial dcl 2-12 dmap automatic pointer dcl 1-74 firm_ld_io_type internal static fixed bin(17,0) initial dcl 1-63 io_info_ptr automatic pointer dcl 1-73 itr_io_type internal static fixed bin(17,0) initial dcl 1-60 mca_io_type internal static fixed bin(17,0) initial dcl 1-68 mdc_io_type internal static fixed bin(17,0) initial dcl 1-66 mdr_io_type internal static fixed bin(17,0) initial dcl 1-61 mhp_io_type internal static fixed bin(17,0) initial dcl 1-67 mtar_io_type internal static fixed bin(17,0) initial dcl 1-62 mtc_io_type internal static fixed bin(17,0) initial dcl 1-64 mtg_io_type internal static fixed bin(17,0) initial dcl 1-65 polt_io_type internal static fixed bin(17,0) initial dcl 1-59 rspd_io_type internal static fixed bin(17,0) initial dcl 1-69 tdcw based structure level 1 dcl 3-14 tdcwp automatic pointer dcl 3-4 NAMES DECLARED BY EXPLICIT CONTEXT. dcw_list 000213 constant entry external dcl 117 dcw_ptr 000131 constant entry external dcl 98 parse_mess 000604 constant entry internal dcl 181 ref 91 138 156 172 pdcw_list 000504 constant entry internal dcl 165 ref 108 122 que_setup 000725 constant entry internal dcl 217 ref 86 103 120 132 148 rcw 000354 constant entry external dcl 145 rs 000240 constant entry external dcl 129 tolts_qttyio_ 000036 constant entry external dcl 12 wakeup 000743 constant entry internal dcl 229 ref 92 109 123 139 159 NAMES DECLARED BY CONTEXT OR IMPLICATION. fixed builtin function ref 150 169 170 ptr builtin function ref 104 152 169 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1262 1310 1122 1272 Length 1562 1122 26 235 137 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tolts_qttyio_ 250 external procedure is an external procedure. pdcw_list internal procedure shares stack frame of external procedure tolts_qttyio_. parse_mess internal procedure shares stack frame of external procedure tolts_qttyio_. que_setup internal procedure shares stack frame of external procedure tolts_qttyio_. wakeup internal procedure shares stack frame of external procedure tolts_qttyio_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tolts_qttyio_ 000100 genp tolts_qttyio_ 000102 argp tolts_qttyio_ 000104 dcwptr tolts_qttyio_ 000106 mep tolts_qttyio_ 000110 page tolts_qttyio_ 000111 lp tolts_qttyio_ 000112 lb tolts_qttyio_ 000113 c_len tolts_qttyio_ 000114 i tolts_qttyio_ 000115 found tolts_qttyio_ 000116 pline tolts_qttyio_ 000117 NLFF tolts_qttyio_ 000120 rs_data tolts_qttyio_ 000162 fatal_desc tolts_qttyio_ 000164 dcwp tolts_qttyio_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac mpfx2 ext_entry ext_entry_desc verify_eis search_eis THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_list_ptr hcs_$wakeup ioa_$general_rs terminate_process_ tolts_util_$bci_to_ascii THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. tolts_infop LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 000032 84 000054 85 000056 86 000064 87 000065 90 000102 91 000117 92 000123 93 000124 98 000125 100 000141 101 000143 102 000147 103 000157 104 000160 105 000165 108 000177 109 000200 110 000201 111 000204 112 000206 117 000207 119 000223 120 000225 121 000226 122 000232 123 000233 124 000234 129 000235 131 000250 132 000252 133 000253 136 000270 137 000276 138 000343 139 000347 140 000350 145 000351 147 000361 148 000362 149 000363 150 000367 151 000372 152 000373 153 000400 154 000403 155 000415 156 000450 157 000466 158 000501 159 000502 160 000503 165 000504 167 000505 168 000506 169 000510 170 000515 171 000524 172 000553 173 000571 174 000577 175 000602 177 000603 181 000604 187 000606 189 000612 190 000614 191 000620 192 000622 193 000630 194 000633 195 000650 196 000651 197 000655 198 000657 200 000660 201 000662 202 000677 204 000705 205 000707 206 000716 208 000720 209 000721 210 000723 212 000724 217 000725 219 000726 220 000730 221 000735 222 000737 223 000741 225 000742 229 000743 231 000744 233 000750 234 000760 236 000777 240 001002 241 001017 242 001021 243 001051 244 001052 247 001076 ----------------------------------------------------------- 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