COMPILATION LISTING OF SEGMENT gcos_mme_save_ Compiled by: Multics PL/I Compiler, Release 28b, of April 11, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 09/09/83 1155.5 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 gcos_mme_save_: proc (mcp, increment); 7 8 /* 9* MME GESAVE is used to write out a program in system loadable format (loadable 10* by a MME GECALL). 11* 12* CALLING SEQUENCE: 13* 14* MME GESAVE 15* BCI 1,XXXXXX BCD PROGRAM NAME 16* ZERO L(FIRST WORD),NO OF WORDS FIRST WORD AND NUMBER OF WORDS TO SAVE 17* ZERO XFER ADDR,LOAD INCREMENT PLACE TO GO WHEN RELOADED,NUMBER TO 18* BE SUBTRACTED FROM LOC OF FIRST WORD 19* AND XFER ADDR WHEN RELOADED 20* RETURN 21* 22* IN ADDITION, THE Q REQ MUST CONTAIN THE FILE CODE OF THE FILE ON WHICH 23* THE SAVE IS TO BE DONE. THIS FILE MUST BE RANDOM DRUM OR DISK. 24* Q upper can also contain an error return location. 25* 26* Author: DICK SNYDER OCTOBER 9,1971 27* Change: D. KAYDEN APRIL 1974 28* Change: M. R. Jordan, October 1977 29* Change: Dave Ward 06/30/81 Revised instituted, fixed bin(24)unsigned instituted, bugs corrected. 30**/ 31 scup = addr (mc.scu); /* get addr of scu data */ 32 i = instruction_counter+1; /* offset to MME GECALL parameter location. */ 33 callp = addrel (gcos_ext_stat_$gcos_slave_area_seg, i); /* get pointer to params */ 34 call gcos_cv_gebcd_ascii_ (addr (mc.regs.q), 6, addr (fc)); /* get file code in ascii */ 35 36 do i = 1 to hbound (save_data.fibs, 1); 37 if fct.filecode (i) = substr (fc, 5, 2) then go to hit; /* look for file */ 38 end; 39 40 message = "No device assigned to file code ""^a""."; 41 ecode = gcos_et_$bad_call_save_device; 42 die: ; 43 if substr (mc.regs.q, 1, 18) ^= (18)"0"b then do; 44 return_code: ; 45 increment = q_reg_left_half + instruction_counter; 46 fb35 = gcos_mme_bort_$abort_number (ecode); 47 q_reg_right_half = addr (fb35) -> word.r18; 48 return; 49 end; 50 else 51 call gcos_mme_bort_$system (ecode, message, substr (fc, 5, 2)); 52 53 hit: if fct.sysout (i) then go to not_rand; 54 fibptr = fct.fibptr (i); 55 fib.iocount = fib.iocount + 1; 56 if ^fib.type then do; /* not random disk */ 57 not_rand: 58 message = "File code ""^a"" is not assigned to a random mass-storage file."; 59 ecode = gcos_et_$bad_call_save_device; 60 goto die; 61 end; 62 63 if (gesave.first+gesave.count) > gcos_ext_stat_$storage_limit then do; 64 ecode = gcos_et_$io_lim_call_save; 65 message = ""; 66 goto die; 67 end; 68 69 if gesave.count = 0 then do; 70 ecode = gcos_et_$zero_save_word_cnt; 71 message = ""; 72 goto die; 73 end; 74 75 if substr (save_data.psw, 16, 1) then do; /* first time save on this file */ 76 77 call ios_$seek (fib.stream, "last", "first", 1000, status); /* seek just after catalog */ 78 if code ^= 0 then do; /* ios error? */ 79 ioerror: call check_fs_errcode_ (code, "xxxxxxxx", longerror); /* get error message equivalent to code */ 80 if substr (mc.regs.q, 1, 18) ^= (18)"0"b then goto return_code; 81 else 82 call gcos_mme_bort_$system (code, "file code=""^a""^/^a", substr (fc, 5, 2), longerror); 83 end; 84 85 call ios_$seek (fib.stream, "write", "first", 1000, status); /* seek write also */ 86 if code ^= 0 then go to ioerror; 87 88 end; 89 90 preface.name = gesave.prog_name; /* set up preface data */ 91 preface.rel_check, preface.rel_abs = 0; 92 preface.reloc_words = 0; 93 preface.entry = gesave.xfer_addr - gesave.load_incr; 94 preface.origin = gesave.first - gesave.load_incr; 95 preface.data_words = gesave.count; 96 97 /* Calculate checksum. */ 98 99 checker_ptr = addrel (gcos_ext_stat_$gcos_slave_area_seg, gesave.first); /* point at it */ 100 accum = 0; 101 do i = 1 to gesave.count; 102 accum = accum + checker (i); 103 if accum > 68719476735 then /* test for 36 bit overflow */ 104 accum = accum-68719476736+1; /* preform end around carry and add */ 105 end; 106 preface.data_check = substr (unspec (accum), 37, 36); /* Save checksum. */ 107 108 add = gesave.first - gesave.load_incr; 109 cnt = gesave.count; 110 ndcw = 0; 111 112 loop: ; 113 ndcw = ndcw+1; 114 preface.dcws (ndcw).data_addr = add + 1024; 115 116 if cnt <= 4096 then do; /* last one */ 117 if cnt = 4096 then 118 preface.dcws (ndcw).count = 0; 119 else 120 preface.dcws (ndcw).count = cnt; 121 preface.dcws (ndcw).action = "0"b; /* indicate that this is last dcw */ 122 go to done; /* fini */ 123 end; 124 125 preface.dcws (ndcw).count = 0; /* max count of 4096 */ 126 cnt = cnt-4096; /* subtract this from count */ 127 preface.dcws (ndcw).data_addr = add +1024; 128 add = add+4096; /* kick up address */ 129 preface.dcws (ndcw).action = "001"b; /* this isn't the last */ 130 go to loop; /* so do more */ 131 132 done: call ios_$tell (fib.stream, "write", "first", seek_save, status); /* find out where preface will go */ 133 if code ^= 0 then go to ioerror; 134 135 call ios_$write (fib.stream, addr (preface), 0, 6+ndcw, i, status); /* write out preface */ 136 j = gesave.count; /* get count of words to write */ 137 if code ^= 0 then go to ioerror; /* io error, die */ 138 139 fib.last = seek_save + 6 + ndcw + j; /* update end of valid data */ 140 call ios_$write (fib.stream, checker_ptr, 0, j, i, status); /* write out prog */ 141 if code ^= 0 then go to ioerror; /* die */ 142 143 144 /* Fill in the catalog. */ 145 call ios_$seek (fib.stream, "read", "first", 0, status); /* set up to read catalog */ 146 if code ^= 0 then go to ioerror; /* oops */ 147 148 call ios_$read (fib.stream, addr (catblk), 0, 1000, i, status); /* read catalog */ 149 if code ^= 0 then go to ioerror; 150 151 if substr (save_data.psw, 16, 1) then catblk.no_ent = 0; /* init catalog if first time */ 152 substr (save_data.psw, 16, 1) = "0"b; /* turn off flag */ 153 i, catblk.no_ent = catblk.no_ent+1; /* bump no of entries */ 154 catblk.elblock (i).element = gesave.prog_name; /* put name in catalog */ 155 catblk.elblock (i).address = seek_save; /* put in seek address */ 156 157 /* Write out the catalog. */ 158 call ios_$seek (fib.stream, "write", "first", 0, status); /* seek to start of file */ 159 if code ^= 0 then go to ioerror; /* lose */ 160 161 call ios_$write (fib.stream, addr (catblk), 0, 1000, i, status); /* write out catalog */ 162 if code ^= 0 then go to ioerror; 163 164 call ios_$seek (fib.stream, "write", "last", 0, status); /* reset write pointer */ 165 if code ^= 0 then go to ioerror; 166 167 increment = 3; /* skip 3 param words */ 168 return; 169 170 /* Variables for gcos_mme_save_: */ 171 /* IDENTIFIER ATTRIBUTES */ 172 dcl accum fixed bin(71) /* accumulator for checksum */; 173 dcl add fixed bin(24); 174 dcl addr builtin; 175 dcl addrel builtin; 176 dcl bit builtin; 177 dcl callp ptr; 178 dcl checker (gesave.count) fixed bin(36)unsigned unal based (checker_ptr) /* overlay for computing chksum */; 179 dcl checker_ptr ptr; 180 dcl check_fs_errcode_ entry (fixed bin(35), char(8) aligned, char(100) aligned); 181 dcl cnt fixed bin(24); 182 dcl ecode fixed bin(35); 183 dcl fb35 fixed bin(35); 184 dcl fc char (6); 185 dcl fixed builtin; 186 dcl gcos_cv_gebcd_ascii_ ext entry (pointer, fixed bin(24), pointer); 187 dcl gcos_et_$bad_call_save_device fixed bin(35) ext; 188 dcl gcos_et_$io_lim_call_save fixed bin(35) ext; 189 dcl gcos_et_$zero_save_word_cnt fixed bin(35) ext; 190 dcl gcos_mme_bort_$abort_number entry (fixed bin(35)) returns (fixed bin); 191 dcl gcos_mme_bort_$system entry options(variable); 192 dcl i fixed bin(21); 193 dcl increment fixed bin(24); 194 dcl instruction_counter fixed bin(18)unsigned unal based(addr(scu.ilc)); 195 dcl ioa_ entry() options(variable); 196 dcl j fixed bin(21); 197 dcl k fixed bin(24); 198 dcl longerror char (100)aligned; 199 dcl message char (62); 200 dcl ndcw fixed bin(24); 201 dcl prog_name char (6); 202 dcl seek_save fixed bin(21); 203 dcl substr builtin; 204 dcl unspec builtin; 205 206 dcl 1 word aligned based 207 ,2 l18 bit(18)unal 208 ,2 r18 bit(18)unal 209 ; 210 211 dcl 1 q_register aligned based(addr(mc.regs.q)) 212 ,2 q_reg_left_half fixed bin(18)unsigned unal 213 ,2 q_reg_right_half bit(18)unal 214 ; 215 216 dcl 1 gesave aligned based (callp), /* overlay for gesave parameters */ 217 2 prog_name bit(36) unal, /* name under whcih file to be saved */ 218 2 first fixed bin(18)unsigned unal, /* addr of first word to be saved */ 219 2 count fixed bin(18)unsigned unal, /* no. of words to be saved */ 220 2 xfer_addr fixed bin(18)unsigned unal, /* transfer address */ 221 2 load_incr fixed bin(18)unsigned unal /* loading increment */ 222 ; 223 224 dcl 1 preface aligned, /* model of preface record */ 225 2 data_check bit(36), /* checksum of following data words */ 226 2 rel_check fixed bin(24), /* checksum of following reloc. words */ 227 2 rel_abs fixed bin(24), /* 0=absolute|^0=relocatable */ 228 2 name bit(36) unal, /* name of pgm */ 229 2 entry fixed bin(18)unsigned unal, /* entry address */ 230 2 origin fixed bin(18)unsigned unal, /* origin */ 231 2 reloc_words fixed bin(18)unsigned unal, /* no. of relocation words */ 232 2 data_words fixed bin(18)unsigned unal, /* no. of data words */ 233 2 dcws (64) like dcw_model /* dcw(s) to load following data records */ 234 ; 235 236 dcl 1 dcw_model aligned based, /* model of dcw */ 237 2 data_addr fixed bin(18)unsigned unal, 238 2 zero bit(3) unal, 239 2 action bit(3) unal, 240 2 count fixed bin(12)unsigned unal; /* number of words to xfer */ 241 242 dcl 1 catblk aligned, 243 2 nxt fixed bin(24), /* pointer to next calalog block */ 244 2 no_ent fixed bin(24), /* number of entries in catalog */ 245 2 elblock (499), /* room for 499 entries */ 246 3 element bit(36) unal, /* prog name */ 247 3 address fixed bin(24) /* offset in file of preface data */ 248 ; 249 1 1 /* BEGIN INCLUDE FILE gcos_dcl_ios_.incl.pl1 (Wardd Multics) 06/16/81 1040.9 mst Tue */ 1 2 1 3 dcl ios_$attach entry ( 1 4 char(*) 1 5 , char(*) 1 6 , char(*) 1 7 , char(*) 1 8 , 1, 2 fixed bin(35) aligned, 2 bit(36) aligned 1 9 ); 1 10 1 11 dcl ios_$detach entry ( 1 12 char(*) 1 13 , char(*) 1 14 , char(*) 1 15 , 1, 2 fixed bin(35) aligned, 2 bit(36) aligned 1 16 ); 1 17 1 18 dcl ios_$order entry ( 1 19 char(*) 1 20 , char(*) 1 21 , ptr 1 22 , 1, 2 fixed bin(35) aligned, 2 bit(36) aligned 1 23 ); 1 24 1 25 dcl ios_$read entry ( 1 26 char(*) 1 27 , ptr 1 28 , fixed bin(21) 1 29 , fixed bin(21) 1 30 , fixed bin(21) 1 31 , 1, 2 fixed bin(35) aligned, 2 bit(36) aligned 1 32 ); 1 33 1 34 dcl ios_$read_ptr entry ( 1 35 ptr 1 36 , fixed bin(21) 1 37 , fixed bin(21) 1 38 ); 1 39 dcl ios_$setsize entry ( 1 40 char(*) 1 41 , fixed bin(21) 1 42 , 1, 2 fixed bin(35) aligned, 2 bit(36) aligned 1 43 ); 1 44 1 45 dcl ios_$seek entry ( 1 46 char(*) 1 47 , char(*) 1 48 , char(*) 1 49 , fixed bin(21) 1 50 , 1, 2 fixed bin(35) aligned, 2 bit(36) aligned 1 51 ); 1 52 1 53 dcl ios_$tell entry ( 1 54 char(*) 1 55 , char(*) 1 56 , char(*) 1 57 , fixed bin(21) 1 58 , 1, 2 fixed bin(35) aligned, 2 bit(36) aligned 1 59 ); 1 60 1 61 dcl ios_$write entry ( 1 62 char(*) 1 63 , ptr 1 64 , fixed bin(21) 1 65 , fixed bin(21) 1 66 , fixed bin(21) 1 67 , 1, 2 fixed bin(35) aligned, 2 bit(36) aligned 1 68 ); 1 69 1 70 dcl ios_$write_ptr entry ( 1 71 ptr 1 72 , fixed bin(21) 1 73 , fixed bin(21) 1 74 ); 1 75 1 76 dcl 1 status /* Return status code. */ 1 77 , 2 code fixed bin(35)aligned 1 78 , 2 word2 bit(36)aligned 1 79 ; 1 80 1 81 /* END INCLUDE FILE gcos_dcl_ios_.incl.pl1 */ 250 251 2 1 /* BEGIN INCLUDE FILE gcos_ext_stat_.incl.pl1 */ 2 2 /* 2 3* Changes to gcos_ext_stat_ must be made here AND gcos_ext_stat_.cds 2 4**/ 2 5 /* July 77 (MRJ) Mike Jordan. */ 2 6 /* Change: Mel Wilson Oct 1979 for gtss compatibility (Bell Canada). */ 2 7 /* Change: A. N. Kepner, March, 1978 to allow courtesy call i/o within cc routines. */ 2 8 /* Change: Dave Ward 06/01/81 Reorganized to eliminate alm object (using cds). Use of like structures. */ 2 9 /* Change: Scott C. Akers 01/26/82 Add tape_buffer_size for GEINOS processing. */ 2 10 /* Change: Ron Barstad 83-08-02 Added activity_card_num for execution report */ 2 11 /* Increased size of statistics for 4js3 MMEs */ 2 12 2 13 dcl gcos_ext_stat_$abort_reason char(128) varying /* abort reason from gcos pgm */ ext; 2 14 dcl gcos_ext_stat_$abort_return label /* abort return point */ ext; 2 15 dcl gcos_ext_stat_$activity_card_num pic "9999" ext; /* card number defining current activity */ 2 16 dcl gcos_ext_stat_$activity_name char(8) /* name of activity to be run */ ext; 2 17 dcl gcos_ext_stat_$activity_start_time fixed bin(71) /* TOD start of activity */ ext; 2 18 dcl gcos_ext_stat_$card_num pic "9999" /* ordinal number of card in input stream */ ext; 2 19 dcl gcos_ext_stat_$dbs (36)bit(1) /* Debugging switch. */ ext; 2 20 dcl gcos_ext_stat_$default_nondollar char(2) /* filecode where nondollar cards go by default */ ext; 2 21 dcl gcos_ext_stat_$dir_rings (3) fixed bin(3) /* ring brackets for created catalogs */ ext; 2 22 dcl gcos_ext_stat_$dpno char(100) varying /* arguments for call to dpunch */ ext; 2 23 dcl gcos_ext_stat_$dpo char(100) varying /* arguments for call to dprint */ ext; 2 24 dcl gcos_ext_stat_$endfc char(2) /* endfc value for endcopy processing */ ext; 2 25 dcl gcos_ext_stat_$er ptr /* fib pointer for *er */ ext; 2 26 dcl gcos_ext_stat_$etc_filecode char(2) /* filecode where $ ETC cards should be written */ ext; 2 27 dcl gcos_ext_stat_$gcos_slave_area_seg ptr /* pointer to gcos slave area segment */ ext; 2 28 dcl gcos_ext_stat_$gf fixed bin(24)/* sw used by getfield rtn */ ext; 2 29 dcl gcos_ext_stat_$incode fixed bin(24) /* switches to control incode processing */ ext; 2 30 dcl gcos_ext_stat_$increment_hold fixed bin(24) /* Holds increment for courtesy call returns. */ ext; 2 31 dcl gcos_ext_stat_$initial_cpu_time fixed bin(71) /* vcu time at activity start */ ext; 2 32 dcl gcos_ext_stat_$input_segment_path char(168) varying /* pathname of input segment */ ext; 2 33 dcl gcos_ext_stat_$jcl_warnings fixed bin(24) /* number warnings issued processing control cards */ ext; 2 34 dcl gcos_ext_stat_$job_cpu_time fixed bin(71) /* cpu usage at job start */ ext; 2 35 dcl gcos_ext_stat_$job_id char(18) varying /* unique job id for file naming */ ext; 2 36 dcl gcos_ext_stat_$job_real_time fixed bin(71) /* job start time in microseconds */ ext; 2 37 dcl gcos_ext_stat_$last_mme fixed bin(24)/* number of last mme executed */ ext; 2 38 dcl gcos_ext_stat_$ldrss fixed bin(24) /* loader shared stg. */ ext; 2 39 dcl gcos_ext_stat_$max_activities fixed bin(24)/* max activities in a job */ ext; 2 40 dcl gcos_ext_stat_$max_mem fixed bin(19) /* maximum memory available to an activity */ ext; 2 41 dcl gcos_ext_stat_$mme_rtrn label /* where to return at activity end */ ext; 2 42 dcl gcos_ext_stat_$nondollar char(2) /* non-dollar card file code */ ext; 2 43 dcl gcos_ext_stat_$nongcos char(2) /* filecode where nongcos dollar cards go */ ext; 2 44 dcl gcos_ext_stat_$normal_return label /* nonlocal goto for normal termination */ ext; 2 45 dcl gcos_ext_stat_$patchfile_ptr ptr /* pointer to patchfile */ ext; 2 46 dcl gcos_ext_stat_$pathname_prefix char(168)var ext; 2 47 dcl gcos_ext_stat_$pch ptr /* pointer to fib for syspunch collector file */ ext; 2 48 dcl gcos_ext_stat_$pdir char(168) varying /* pathname of process directory */ ext; 2 49 dcl gcos_ext_stat_$prt ptr /* pointer to fib for sysprint collector file */ ext; 2 50 dcl gcos_ext_stat_$rs ptr /* pointer to fib for geload r* collector file */ ext; 2 51 dcl gcos_ext_stat_$saveseg_ptr ptr /* pointer to save segment used by save/restart */ ext; 2 52 dcl gcos_ext_stat_$save_dir char(168) varying /* pathname of temp save directory */ ext; 2 53 dcl gcos_ext_stat_$seg_rings (3) fixed bin(3) /* ring brackets for created files */ ext; 2 54 dcl gcos_ext_stat_$sig_ptr ptr /* saved pointer to signal_ */ ext; 2 55 dcl gcos_ext_stat_$skip_umc bit(1) ext; 2 56 dcl gcos_ext_stat_$snumb bit (30) aligned /* snumb of the current job */ ext; 2 57 dcl gcos_ext_stat_$sought_label char(8) /* Label from GOTO, IF, or WHEN card */ ext; 2 58 dcl gcos_ext_stat_$statistics (3*44) fixed bin(24) /* mme usage statistics- 3 per mme */ ext; 2 59 dcl gcos_ext_stat_$stop_code fixed bin(24) /* debugging, print results and stop. */ ext; 2 60 dcl gcos_ext_stat_$storage_limit fixed bin(19) /* activity storage limit */ ext; 2 61 dcl gcos_ext_stat_$sysout_limit fixed bin(35) /* sysout line limit */ ext; 2 62 dcl gcos_ext_stat_$sysout_lines fixed bin(35) /* sysout lines used */ ext; 2 63 dcl gcos_ext_stat_$system_free_pointer ptr /* pointer to area for allocating in ext; set by gcos */ ext; 2 64 dcl gcos_ext_stat_$tape_buffer_size fixed bin(35) external static; /* tape buffer size for GEINOS. */ 2 65 dcl gcos_ext_stat_$temp_dir char(168) varying /* pathname of directory to hold temp files */ ext; 2 66 dcl gcos_ext_stat_$temp_seg_ptr ptr ext; 2 67 dcl gcos_ext_stat_$termination_code bit (18) /* termination code from gcos_mme_bort_ */ ext; 2 68 dcl gcos_ext_stat_$time_limit fixed bin(71) /* activity time limit */ ext; 2 69 dcl gcos_ext_stat_$userid char(12) /* the USERID */ ext; 2 70 dcl gcos_ext_stat_$validation_level fixed bin(3) /* current ring of execution */ ext; 2 71 2 72 /* Courtesy Call Queue 2 73* A queue for courtesy call addresses which must be saved during 2 74* execution of courtesy call routines. A courtesy call address is 2 75* saved each time a MME GEROUT or MME GEINOS, which specifies a 2 76* courtesy call, is executed within a courtesy call routine. Each 2 77* time a MME GEENDC is executed a courtesy call address will be 2 78* removed from this FIFO queue and the corresponding courtesy call 2 79* routine executed until the queue is empty. The FIFO "queue" is 2 80* implemented in a circular fashion. "next_avail" points to the 2 81* next empty location in the queue. "next_out" points to the 2 82* entry in the queue which has been in the queue longest. When 2 83* entering or removing entries from the queue the appropriate index 2 84* is incremented modulo the length of the queue. By convention the 2 85* queue is empty when "next_avail" equals "next_out". A 2 86* second convention is that the queue is considered to overflow 2 87* during an attempt to add an entry to the queue which would force 2 88* "next_avail" to "catch up" with "next_out". This means that 2 89* the last empty position in the queue will never be used. 2 90**/ 2 91 2 92 dcl 1 gcos_ext_stat_$courtesy_call_control aligned ext 2 93 , 3 courtesy_call 2 94 , 4 hold like save_machine_conditions /* Mach. conds. restored on courtesy call returns. */ 2 95 , 4 next_avail fixed bin(24) /* next available empty location in cc_queue. */ 2 96 , 4 next_out fixed bin(24) /* next entry to remove from cc_queue. */ 2 97 , 4 queue (6) fixed bin(24) 2 98 ; 2 99 3 1 /* BEGIN INCLUDE FILE gcos_save_mc.incl.pl1 (Wardd Multics) 09/12/81 0905.9 mst Sat */ 3 2 3 3 /* Structure to isolate the definition of the size of the 3 4*space needed to store he machine conditions structure (mc). 3 5**/ 3 6 dcl 1 save_machine_conditions based 3 7 , 3 save_space bit(1728) 3 8 ; 3 9 3 10 /* END INCLUDE FILE gcos_save_mc.incl.pl1 */ 2 100 2 101 2 102 dcl 1 gcos_ext_stat_$fct aligned ext, 2 103 3 fct (40) like fct_entry; 4 1 /* BEGIN INCLUDE FILE gcos_fct_entry.incl.pl1 (Wardd Multics) 05/30/81 1758.6 mst Sat */ 4 2 4 3 dcl 1 fct_entry aligned based, 4 4 2 filecode char(2) aligned, /* file code (or blank) */ 4 5 /* flags */ 4 6 2 sysout bit(1) unaligned, /* 1=file is sysout or dac */ 4 7 2 dac bit(1) unaligned, /* 1=file is dac,0=file is sysout */ 4 8 2 pad bit(34) unaligned, /* unused */ 4 9 2 fibptr ptr aligned /* ptr to fib for this file */ 4 10 ; 4 11 4 12 /* END INCLUDE FILE gcos_fct_entry.incl.pl1 */ 2 104 2 105 2 106 dcl 1 gcos_ext_stat_$save_data aligned ext, 2 107 3 save_data like save_data_entry; 5 1 /* BEGIN INCLUDE FILE gcos_save_data_entry.incl.pl1 (Wardd Multics) 07/01/81 1339.9 mst Wed */ 5 2 /* Change: Dave Ward 07/01/81 include gcos_flags_. */ 5 3 /* Change: Dave Ward 09/10/81 fib changed to fibs & likened to fib. */ 5 4 5 5 dcl 1 save_data_entry aligned based 5 6 ,3 flgs like flags /* system wide flgs */ 5 7 ,3 actid char(8) /* activity no. and accnt i.d. */ 5 8 ,3 short_actid bit(36) aligned /* short form of activity id */ 5 9 ,3 ident char(60) /* holds ident info from snumb card */ 5 10 ,3 psw bit(36) aligned /* program switch word */ 5 11 ,3 last_execute_act_no fixed bin(24)/* activity number of last $ EXECUTE card in job */ 5 12 ,3 activity_no fixed bin(24)/* activity number */ 5 13 ,3 job_time_limit fixed bin(71) /* job time limit */ 5 14 ,3 job_sysout_limit fixed bin(24)/* job sysout line limit */ 5 15 ,3 sysout_queue (10) char(32) /* sysout queue */ 5 16 ,3 sysout_queue_media (10) fixed bin(24)/* medium (print,punch) of each file on queue */ 5 17 ,3 sqindex fixed bin(24)/* curr offset in sysout queue */ 5 18 ,3 pathname_prefix char(168)varying /* prefix for gcos cfdescs */ 5 19 ,3 skip_umc aligned bit(1) /* flag to tell if we should skip umc names */ 5 20 ,3 job_deck pointer /* pointer to seg holding canonicalized job deck */ 5 21 ,3 jd_size fixed bin(24)/* size in words of job deck */ 5 22 ,3 jd_position fixed bin(24) /* position of current block of job deck */ 5 23 ,3 jd_rem_block_len fixed bin(24)/* words remaining in current block of job deck */ 5 24 ,3 syot_dir char(168)varying /* pathname of directory to hold sysout files */ 5 25 ,3 fibs (40) like fib 5 26 ,3 param (32) char(57)varying /* parameters */ 5 27 ; 5 28 6 1 /* BEGIN INCLUDE FILE gcos_flags.incl.pl1 (Wardd Multics) 07/01/81 1344.7 mst Wed */ 6 2 /* Change: Mel Wilson 03/01/79 to add gtssflag & identflag */ 6 3 /* Change: Dave Ward 07/01/81 revised, mad apart of gcos_ext_stat_. */ 6 4 6 5 6 6 /* Declaration of Simulator Wide Flags */ 6 7 6 8 dcl 1 flags aligned based, 6 9 2 ( 6 10 pad1, /* no longer used */ 6 11 copy, /* 1=copy option on|0=off */ 6 12 snumb, /* 1=snumb card read|0=not */ 6 13 ident, /* 1=ident card read|0=not */ 6 14 activ, /* 1=activity being defined|0=not */ 6 15 cc, /* 1=courtesy call active|0=not */ 6 16 pad2, /* no longer used */ 6 17 cksum, /* 1=don't check checksums|0=do */ 6 18 pad3, /* no longer used */ 6 19 wrapup, /* 1=processing wrapup after abort */ 6 20 6 21 /* FOLLOWING ADDED AFTER MARCH 73 */ 6 22 6 23 nosave, /* 1=disable save/restart function,0=not */ 6 24 pad4, /* no longer used */ 6 25 gcos, /* 1=job deck segment in gcos file format */ 6 26 raw, /* 1=sysout punch files to be converted to raw bit strings */ 6 27 list, /* 1=sysout print files to be converted to ascii */ 6 28 brief, /* 1=print nothing but fatal error messages on terminal */ 6 29 debug, /* 1=give option to call debug before aborting */ 6 30 no_canonicalize, /* 1=do NOT canonicalize job deck */ 6 31 6 32 /* 18 bits into first word */ 6 33 6 34 pad5, /* no longer used */ 6 35 dpunch, /* 1=dpunch sysout punch files;0=don't */ 6 36 dprint, /* 1=dprint sysout print files,0=don't */ 6 37 userid, /* 1=userid card read,0=not */ 6 38 userlib, /* 1= -userlib ctl arg given, see gcos_gein_ */ 6 39 dstar, /* 1=current activity card written on d* */ 6 40 write_etc, /* 1 tells get_cc_field to write $ ETC cards on etc_filecode */ 6 41 prev_act_abort, /* turned on by abort and off by $ BREAK */ 6 42 this_act_abort, /* turned on by abort to select abort disp codes */ 6 43 abort_subact, /* 1=processing abort subactivity */ 6 44 dump, /* 1=dump option given on activity card */ 6 45 nondollar, /* 1=reading nondollar card deck in gein */ 6 46 endjob, /* 1=cc_endjob already called once in this job */ 6 47 abort_card, /* 1=the terminator for this activity was a $ ABORT card */ 6 48 truncate, /* 1=truncate option given:truncate long ascii input lines */ 6 49 continue, /* 1=continue option given:continue after nonfatal errors */ 6 50 rout, /* 1=gcos_mme_rout_ was called in this activity */ 6 51 seeking, /* 1=gein is looking for a label and/or terminator */ 6 52 6 53 /* end of first word */ 6 54 6 55 seeking_terminator, /* 1=gein is looking for a terminator */ 6 56 lower_case, /* 1=lower case print conversion wanted */ 6 57 no_bar, /* 1=do not run slave program in BAR mode */ 6 58 long, /* 1=print some lines from execution reort on terminal */ 6 59 endfc, /* 1=process endfc option on endcopy card */ 6 60 gtssflag, /* 1=update gtss_user_state_ during execution */ 6 61 identflag, /* 1= use $ident banner info for print & punch */ 6 62 spawnflag, /* 1= entry due to tss spawn */ 6 63 taskflag /* 1= entry due to tss drl task */ 6 64 ) bit(1) unal, 6 65 2 pad6 bit(27)unal 6 66 ; 6 67 6 68 /* END INCLUDE FILE gcos_flags.incl.pl1 */ 5 29 5 30 5 31 /* END INCLUDE FILE gcos_save_data_entry.incl.pl1 */ 2 108 2 109 7 1 /* BEGIN INCLUDE FILE gcos_file_info_block_.incl.pl1 DAK - APRIL 74 */ 7 2 7 3 /* Declaration of File Information Block (fib) 7 4* 7 5* Change: Mel Wilson 11/01/79 for gtss compatibility 7 6* Change: Dave Ward 05/20/81 *_file constants. 7 7* Change: Dave Ward 05/29/81 separated fct structures. 7 8* Change: Dave Ward 09/02/81 provision for tape density 6250, dens_hist 2 bits (not 3). 7 9**/ 7 10 dcl 1 fib aligned based (fibptr) /* fib structure */ 7 11 7 12 , 2 buffer ptr aligned /* pointer to current buffer (gcos_write_) */ 7 13 , 2 buffer_indx fixed bin /* Index to buffer in use. */ 7 14 , 2 stream char(8)unal /* stream name for attaching this file */ 7 15 , 2 pathnm char(168)unal /* pathname (for disk, print or punch files) */ 7 16 , 2 unique_file_id bit(36) /* multics unique segment id for file */ 7 17 , 2 indicators /* five words of flags */ 7 18 7 19 , 3 indicators_word_1 7 20 , 4 used bit(1) unal /* 1=fib used, 0=fib used */ 7 21 , 4 attached bit(1) unal /* 1=stream is attached */ 7 22 , 4 type bit(1) unal /* 1=random, 0=linked */ 7 23 , 4 perm bit(1) unal /* 1=permanent file, 0=not */ 7 24 , 4 print bit(1) unal /* 1=file type is printer */ 7 25 , 4 punch bit(1) unal /* 1=file type is punch */ 7 26 , 4 reader bit(1) unal /* 1=file type is card reader */ 7 27 , 4 tape bit(1) unal /* 1=file type is tape */ 7 28 , 4 console bit(1) unal /* 1=file type is console typewriter */ 7 29 , 4 read bit(1) unal /* 1=read access permitted */ 7 30 , 4 write bit(1) unal /* 1=write access permitted */ 7 31 , 4 null bit(1) unal /* 1=file is null */ 7 32 , 4 purge bit(1) unal /* 1=purge file at time on release */ 7 33 , 4 gein bit(1) unal /* 1 = this file contains data cards from the job deck */ 7 34 , 4 disp bit(2) unal /* disposition code: 7 35* 00 = dismount 7 36* 01 = release 7 37* 10 = save 7 38* 11 = continue */ 7 39 , 4 adisp bit(2) unal /* abort disp - same codes as disp */ 7 40 , 4 order bit(1) unal /* 1 = write, 0 = read or other */ 7 41 , 4 mode bit(2) unal /* tape i/o mode 7 42* 00 = binary 7 43* 01 = decimal 7 44* 10 = nine */ 7 45 , 4 tracks bit(2) unal /* tape request code: 7 46* 00 = installation default 7 47* 01 = 7 track 7 48* 10 = 9 track */ 7 49 , 4 density bit(4) unal /* tape density from $ TAPE card 7 50* 0000 = site standard high 7 51* 0001 = 200 bpi 7 52* 0010 = 556 bpi 7 53* 0100 = 800 bpi 7 54* 1001 = 1600 bpi 7 55* 1100 = 6250 bpi 7 56* 1111 = handler capable of any appropriate denisty */ 7 57 , 4 dens_hist bit(2) unal /* density history for MME GEFADD */ 7 58 , 4 forced_acl_flag bit(1) unal /* 1 => acl forced for gtss file (2.4) */ 7 59 , 4 fill bit(6) unal /* reserved for future use */ 7 60 , 3 indicators_word_2 7 61 , 4 plud bit(18) unal /* primary log unit designator */ 7 62 /* bcd channel and channel number */ 7 63 7 64 , 4 slud bit(18) unal /* secondary log. unit designator */ 7 65 /* bcd channel and channel number */ 7 66 , 3 indicators_word_3 7 67 , 4 serial_no bit(30) unal /* tape serial number */ 7 68 , 4 pad bit( 6) unal /* unused */ 7 69 , 3 indicators_word_4 7 70 , 4 tape_name bit(72) unal /* tape name */ 7 71 7 72 , 2 current fixed bin(21) /* current file position */ 7 73 , 2 last fixed bin(21) /* eof for sequential disk files */ 7 74 , 2 size fixed bin(24) /* offset of end of file in words */ 7 75 , 2 init_size fixed bin(24) /* file size at start of activity */ 7 76 , 2 init_posit fixed bin(24) /* file position at start of activity */ 7 77 , 2 iocount fixed bin(35) /* total no. of i/o operations */ 7 78 , 2 rec_len fixed bin(24) /* length of current record (gcos_write_) */ 7 79 , 2 command_count fixed bin(17) unal /* size of command table for device (gcos_mme_inos_) */ 7 80 , 2 command_index fixed bin(17) unal /* pointer to command table entry (gcos_mme_inos_) */ 7 81 , 2 error_retry fixed bin(17) unal /* error retry counter */ 7 82 , 2 seq_no fixed bin(17) unal /* tape reel sequence no */ 7 83 ; 7 84 dcl fibptr ptr /* pointer to current fib in gcos_ext_stat_ */; 7 85 7 86 /* File usage classification constants: */ 7 87 dcl linked_file bit(1)static int options(constant)init("0"b); 7 88 dcl random_file bit(1)static int options(constant)init("1"b); 7 89 dcl read_file bit(1)static int options(constant)init("0"b); 7 90 dcl write_file bit(1)static int options(constant)init("1"b); 7 91 7 92 /* END INCLUDE FILE gcos_file_info_block_.incl.pl1 */ 2 110 2 111 2 112 dcl 1 gcos_ext_stat_$mc like mc /* machine condition from abort or fault */ ext; 8 1 /* */ 8 2 /* BEGIN INCLUDE FILE mc.incl.pl1 Created Dec 72 for 6180 - WSS. */ 8 3 /* Modified 06/07/76 by Greenberg for mc.resignal */ 8 4 /* Modified 07/07/76 by Morris for fault register data */ 8 5 /* Modified 08/28/80 by J. A. Bush for the DPS8/70M CVPU */ 8 6 /* Modified '82 to make values constant */ 8 7 8 8 /* words 0-15 pointer registers */ 8 9 8 10 dcl mcp ptr; 8 11 8 12 dcl 1 mc based (mcp) aligned, 8 13 2 prs (0:7) ptr, /* POINTER REGISTERS */ 8 14 (2 regs, /* registers */ 8 15 3 x (0:7) bit (18), /* index registers */ 8 16 3 a bit (36), /* accumulator */ 8 17 3 q bit (36), /* q-register */ 8 18 3 e bit (8), /* exponent */ 8 19 3 pad1 bit (28), 8 20 3 t bit (27), /* timer register */ 8 21 3 pad2 bit (6), 8 22 3 ralr bit (3), /* ring alarm register */ 8 23 8 24 2 scu (0:7) bit (36), 8 25 8 26 2 mask bit (72), /* mem controller mask at time of fault */ 8 27 2 ips_temp bit (36), /* Temporary storage for IPS info */ 8 28 2 errcode fixed bin (35), /* fault handler's error code */ 8 29 2 fim_temp, 8 30 3 unique_index bit (18) unal, /* unique index for restarting faults */ 8 31 3 resignal bit (1) unal, /* recompute signal name with fcode below */ 8 32 3 fcode bit (17) unal, /* fault code used as index to FIM table and SCT */ 8 33 2 fault_reg bit (36), /* fault register */ 8 34 2 pad2 bit (1), 8 35 2 cpu_type fixed bin (2) unsigned, /* L68 = 0, DPS8/70M = 1 */ 8 36 2 ext_fault_reg bit (15), /* extended fault reg for DPS8/70M CPU */ 8 37 2 fault_time bit (54), /* time of fault */ 8 38 8 39 2 eis_info (0:7) bit (36)) unaligned; 8 40 8 41 8 42 dcl (apx fixed bin init (0), 8 43 abx fixed bin init (1), 8 44 bpx fixed bin init (2), 8 45 bbx fixed bin init (3), 8 46 lpx fixed bin init (4), 8 47 lbx fixed bin init (5), 8 48 spx fixed bin init (6), 8 49 sbx fixed bin init (7)) internal static options (constant); 8 50 8 51 8 52 8 53 8 54 dcl scup ptr; 8 55 8 56 dcl 1 scu based (scup) aligned, /* SCU DATA */ 8 57 8 58 8 59 /* WORD (0) */ 8 60 8 61 (2 ppr, /* PROCEDURE POINTER REGISTER */ 8 62 3 prr bit (3), /* procedure ring register */ 8 63 3 psr bit (15), /* procedure segment register */ 8 64 3 p bit (1), /* procedure privileged bit */ 8 65 8 66 2 apu, /* APPENDING UNIT STATUS */ 8 67 3 xsf bit (1), /* ext seg flag - IT modification */ 8 68 3 sdwm bit (1), /* match in SDW Ass. Mem. */ 8 69 3 sd_on bit (1), /* SDW Ass. Mem. ON */ 8 70 3 ptwm bit (1), /* match in PTW Ass. Mem. */ 8 71 3 pt_on bit (1), /* PTW Ass. Mem. ON */ 8 72 3 pi_ap bit (1), /* Instr Fetch or Append cycle */ 8 73 3 dsptw bit (1), /* Fetch of DSPTW */ 8 74 3 sdwnp bit (1), /* Fetch of SDW non paged */ 8 75 3 sdwp bit (1), /* Fetch of SDW paged */ 8 76 3 ptw bit (1), /* Fetch of PTW */ 8 77 3 ptw2 bit (1), /* Fetch of pre-paged PTW */ 8 78 3 fap bit (1), /* Fetch of final address paged */ 8 79 3 fanp bit (1), /* Fetch of final address non-paged */ 8 80 3 fabs bit (1), /* Fetch of final address absolute */ 8 81 8 82 2 fault_cntr bit (3), /* number of retrys of EIS instructions */ 8 83 8 84 8 85 /* WORD (1) */ 8 86 8 87 2 fd, /* FAULT DATA */ 8 88 3 iro bit (1), /* illegal ring order */ 8 89 3 oeb bit (1), /* out of execute bracket */ 8 90 3 e_off bit (1), /* no execute */ 8 91 3 orb bit (1), /* out of read bracket */ 8 92 3 r_off bit (1), /* no read */ 8 93 3 owb bit (1), /* out of write bracket */ 8 94 3 w_off bit (1), /* no write */ 8 95 3 no_ga bit (1), /* not a gate */ 8 96 3 ocb bit (1), /* out of call bracket */ 8 97 3 ocall bit (1), /* outward call */ 8 98 3 boc bit (1), /* bad outward call */ 8 99 3 inret bit (1), /* inward return */ 8 100 3 crt bit (1), /* cross ring transfer */ 8 101 3 ralr bit (1), /* ring alarm register */ 8 102 3 am_er bit (1), /* associative memory fault */ 8 103 3 oosb bit (1), /* out of segment bounds */ 8 104 3 paru bit (1), /* processor parity upper */ 8 105 3 parl bit (1), /* processor parity lower */ 8 106 3 onc_1 bit (1), /* op not complete type 1 */ 8 107 3 onc_2 bit (1), /* op not complete type 2 */ 8 108 8 109 2 port_stat, /* PORT STATUS */ 8 110 3 ial bit (4), /* illegal action lines */ 8 111 3 iac bit (3), /* illegal action channel */ 8 112 3 con_chan bit (3), /* connect channel */ 8 113 8 114 2 fi_num bit (5), /* (fault/interrupt) number */ 8 115 2 fi_flag bit (1), /* 1 => fault, 0 => interrupt */ 8 116 8 117 8 118 /* WORD (2) */ 8 119 8 120 2 tpr, /* TEMPORARY POINTER REGISTER */ 8 121 3 trr bit (3), /* temporary ring register */ 8 122 3 tsr bit (15), /* temporary segment register */ 8 123 8 124 2 pad2 bit (9), 8 125 8 126 2 cpu_no bit (3), /* CPU number */ 8 127 8 128 2 delta bit (6), /* tally modification DELTA */ 8 129 8 130 8 131 /* WORD (3) */ 8 132 8 133 2 word3 bit (18), 8 134 8 135 2 tsr_stat, /* TSR STATUS for 1,2,&3 word instructions */ 8 136 3 tsna, /* Word 1 status */ 8 137 4 prn bit (3), /* Word 1 PR number */ 8 138 4 prv bit (1), /* Word 1 PR valid bit */ 8 139 3 tsnb, /* Word 2 status */ 8 140 4 prn bit (3), /* Word 2 PR number */ 8 141 4 prv bit (1), /* Word 2 PR valid bit */ 8 142 3 tsnc, /* Word 3 status */ 8 143 4 prn bit (3), /* Word 3 PR number */ 8 144 4 prv bit (1), /* Word 3 PR valid bit */ 8 145 8 146 2 tpr_tbr bit (6), /* TPR.TBR field */ 8 147 8 148 8 149 /* WORD (4) */ 8 150 8 151 2 ilc bit (18), /* INSTRUCTION COUNTER */ 8 152 8 153 2 ir, /* INDICATOR REGISTERS */ 8 154 3 zero bit (1), /* zero indicator */ 8 155 3 neg bit (1), /* negative indicator */ 8 156 3 carry bit (1), /* carryry indicator */ 8 157 3 ovfl bit (1), /* overflow indicator */ 8 158 3 eovf bit (1), /* eponent overflow */ 8 159 3 eufl bit (1), /* exponent underflow */ 8 160 3 oflm bit (1), /* overflow mask */ 8 161 3 tro bit (1), /* tally runout */ 8 162 3 par bit (1), /* parity error */ 8 163 3 parm bit (1), /* parity mask */ 8 164 3 bm bit (1), /* ^bar mode */ 8 165 3 tru bit (1), /* truncation mode */ 8 166 3 mif bit (1), /* multi-word instruction mode */ 8 167 3 abs bit (1), /* absolute mode */ 8 168 3 pad bit (4), 8 169 8 170 8 171 /* WORD (5) */ 8 172 8 173 2 ca bit (18), /* COMPUTED ADDRESS */ 8 174 8 175 2 cu, /* CONTROL UNIT STATUS */ 8 176 3 rf bit (1), /* on first cycle of repeat instr */ 8 177 3 rpt bit (1), /* repeat instruction */ 8 178 3 rd bit (1), /* repeat double instruction */ 8 179 3 rl bit (1), /* repeat link instruciton */ 8 180 3 pot bit (1), /* IT modification */ 8 181 3 pon bit (1), /* return type instruction */ 8 182 3 xde bit (1), /* XDE from Even location */ 8 183 3 xdo bit (1), /* XDE from Odd location */ 8 184 3 poa bit (1), /* operation preparation */ 8 185 3 rfi bit (1), /* tells CPU to refetch instruction */ 8 186 3 its bit (1), /* ITS modification */ 8 187 3 if bit (1), /* fault occured during instruction fetch */ 8 188 8 189 2 cpu_tag bit (6)) unaligned, /* computed tag field */ 8 190 8 191 8 192 /* WORDS (6,7) */ 8 193 8 194 2 even_inst bit (36), /* even instruction of faulting pair */ 8 195 8 196 2 odd_inst bit (36); /* odd instruction of faulting pair */ 8 197 8 198 8 199 8 200 8 201 8 202 8 203 /* ALTERNATE SCU DECLARATION */ 8 204 8 205 8 206 dcl 1 scux based (scup) aligned, 8 207 8 208 (2 pad0 bit (36), 8 209 8 210 2 fd, /* GROUP II FAULT DATA */ 8 211 3 isn bit (1), /* illegal segment number */ 8 212 3 ioc bit (1), /* illegal op code */ 8 213 3 ia_am bit (1), /* illegal address - modifier */ 8 214 3 isp bit (1), /* illegal slave procedure */ 8 215 3 ipr bit (1), /* illegal procedure */ 8 216 3 nea bit (1), /* non existent address */ 8 217 3 oobb bit (1), /* out of bounds */ 8 218 3 pad bit (29), 8 219 8 220 2 pad2 bit (36), 8 221 8 222 2 pad3a bit (18), 8 223 8 224 2 tsr_stat (0:2), /* TSR STATUS as an ARRAY */ 8 225 3 prn bit (3), /* PR number */ 8 226 3 prv bit (1), /* PR valid bit */ 8 227 8 228 2 pad3b bit (6)) unaligned, 8 229 8 230 2 pad45 (0:1) bit (36), 8 231 8 232 2 instr (0:1) bit (36); /* Instruction ARRAY */ 8 233 8 234 8 235 8 236 /* END INCLUDE FILE mc.incl.pl1 */ 2 113 2 114 2 115 dcl 1 gcos_ext_stat_$gcos_gtss ext 2 116 , 3 gcos_gtss_ext 2 117 , 4 u_state_ptr ptr 2 118 , 4 snumb_index fixed bin(24) 2 119 , 4 home_path char(168) 2 120 ; 2 121 2 122 /* END INCLUDE FILE gcos_ext_stat_.incl.pl1 */ 252 253 end gcos_mme_save_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/09/83 1007.6 gcos_mme_save_.pl1 >spec>on>09/07/83-gcos>gcos_mme_save_.pl1 250 1 03/27/82 0424.8 gcos_dcl_ios_.incl.pl1 >ldd>include>gcos_dcl_ios_.incl.pl1 252 2 09/08/83 1229.3 gcos_ext_stat_.incl.pl1 >spec>on>09/07/83-gcos>gcos_ext_stat_.incl.pl1 2-100 3 03/27/82 0424.8 gcos_save_mc.incl.pl1 >ldd>include>gcos_save_mc.incl.pl1 2-104 4 03/27/82 0424.8 gcos_fct_entry.incl.pl1 >ldd>include>gcos_fct_entry.incl.pl1 2-108 5 03/27/82 0424.8 gcos_save_data_entry.incl.pl1 >ldd>include>gcos_save_data_entry.incl.pl1 5-29 6 09/08/83 1230.3 gcos_flags.incl.pl1 >spec>on>09/07/83-gcos>gcos_flags.incl.pl1 2-110 7 03/27/82 0424.8 gcos_file_info_block_.incl.pl1 >ldd>include>gcos_file_info_block_.incl.pl1 2-113 8 08/17/83 1135.7 mc.incl.pl1 >ldd>include>mc.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. accum 000100 automatic fixed bin(71,0) dcl 172 set ref 100* 102* 102 103 103* 103 106 action 6(21) 000173 automatic bit(3) array level 3 packed unaligned dcl 224 set ref 121* 129* add 000102 automatic fixed bin(24,0) dcl 173 set ref 108* 114 127 128* 128 addr builtin function dcl 174 ref 31 32 34 34 34 34 45 45 47 47 135 135 148 148 161 161 addrel builtin function dcl 175 ref 33 99 address 3 000301 automatic fixed bin(24,0) array level 3 dcl 242 set ref 155* callp 000104 automatic pointer dcl 177 set ref 33* 63 63 69 90 93 93 94 94 95 99 101 108 108 109 136 154 catblk 000301 automatic structure level 1 dcl 242 set ref 148 148 161 161 check_fs_errcode_ 000010 constant entry external dcl 180 ref 79 checker based fixed bin(36,0) array unsigned unaligned dcl 178 ref 102 checker_ptr 000106 automatic pointer dcl 179 set ref 99* 102 140* cnt 000110 automatic fixed bin(24,0) dcl 181 set ref 109* 116 117 119 126* 126 code 002252 automatic fixed bin(35,0) level 2 dcl 1-76 set ref 78 79* 81* 86 133 137 141 146 149 159 162 165 count 6(24) 000173 automatic fixed bin(12,0) array level 3 in structure "preface" packed unsigned unaligned dcl 224 in procedure "gcos_mme_save_" set ref 117* 119* 125* count 1(18) based fixed bin(18,0) level 2 in structure "gesave" packed unsigned unaligned dcl 216 in procedure "gcos_mme_save_" ref 63 69 95 101 109 136 data_addr 6 000173 automatic fixed bin(18,0) array level 3 packed unsigned unaligned dcl 224 set ref 114* 127* data_check 000173 automatic bit(36) level 2 dcl 224 set ref 106* data_words 5(18) 000173 automatic fixed bin(18,0) level 2 packed unsigned unaligned dcl 224 set ref 95* dcw_model based structure level 1 dcl 236 dcws 6 000173 automatic structure array level 2 dcl 224 ecode 000111 automatic fixed bin(35,0) dcl 182 set ref 41* 46* 50* 59* 64* 70* elblock 2 000301 automatic structure array level 2 dcl 242 element 2 000301 automatic bit(36) array level 3 packed unaligned dcl 242 set ref 154* entry 4 000173 automatic fixed bin(18,0) level 2 packed unsigned unaligned dcl 224 set ref 93* fb35 000112 automatic fixed bin(35,0) dcl 183 set ref 46* 47 fc 000114 automatic char(6) unaligned dcl 184 set ref 34 34 37 50 50 81 81 fct 000042 external static structure array level 2 dcl 2-102 fct_entry based structure level 1 dcl 4-3 fib based structure level 1 dcl 7-10 fibptr 2 000042 external static pointer array level 3 in structure "gcos_ext_stat_$fct" dcl 2-102 in procedure "gcos_mme_save_" ref 54 fibptr 002254 automatic pointer dcl 7-84 in procedure "gcos_mme_save_" set ref 54* 55 55 56 77 85 132 135 139 140 145 148 158 161 164 fibs 322 000044 external static structure array level 3 dcl 2-106 ref 36 filecode 000042 external static char(2) array level 3 dcl 2-102 ref 37 first 1 based fixed bin(18,0) level 2 packed unsigned unaligned dcl 216 ref 63 94 99 108 flags based structure level 1 dcl 6-8 gcos_cv_gebcd_ascii_ 000012 constant entry external dcl 186 ref 34 gcos_et_$bad_call_save_device 000014 external static fixed bin(35,0) dcl 187 ref 41 59 gcos_et_$io_lim_call_save 000016 external static fixed bin(35,0) dcl 188 ref 64 gcos_et_$zero_save_word_cnt 000020 external static fixed bin(35,0) dcl 189 ref 70 gcos_ext_stat_$fct 000042 external static structure level 1 dcl 2-102 gcos_ext_stat_$gcos_slave_area_seg 000036 external static pointer dcl 2-27 ref 33 99 gcos_ext_stat_$save_data 000044 external static structure level 1 dcl 2-106 gcos_ext_stat_$storage_limit 000040 external static fixed bin(19,0) dcl 2-60 ref 63 gcos_mme_bort_$abort_number 000022 constant entry external dcl 190 ref 46 gcos_mme_bort_$system 000024 constant entry external dcl 191 ref 50 81 gesave based structure level 1 dcl 216 i 000116 automatic fixed bin(21,0) dcl 192 set ref 32* 33 36* 37* 53 54 101* 102* 135* 140* 148* 153* 154 155 161* ilc 4 based bit(18) level 2 packed unaligned dcl 8-56 set ref 32 45 increment parameter fixed bin(24,0) dcl 193 set ref 6 45* 167* indicators 60 based structure level 2 dcl 7-10 indicators_word_1 60 based structure level 3 dcl 7-10 instruction_counter based fixed bin(18,0) unsigned unaligned dcl 194 ref 32 45 iocount 72 based fixed bin(35,0) level 2 dcl 7-10 set ref 55* 55 ios_$read 000026 constant entry external dcl 1-25 ref 148 ios_$seek 000030 constant entry external dcl 1-45 ref 77 85 145 158 164 ios_$tell 000032 constant entry external dcl 1-53 ref 132 ios_$write 000034 constant entry external dcl 1-61 ref 135 140 161 j 000117 automatic fixed bin(21,0) dcl 196 set ref 136* 139 140* last 66 based fixed bin(21,0) level 2 dcl 7-10 set ref 139* load_incr 2(18) based fixed bin(18,0) level 2 packed unsigned unaligned dcl 216 ref 93 94 108 longerror 000120 automatic char(100) dcl 198 set ref 79* 81* mc based structure level 1 dcl 8-12 mcp parameter pointer dcl 8-10 ref 6 31 34 34 43 45 47 80 message 000151 automatic char(62) unaligned dcl 199 set ref 40* 50* 57* 65* 71* name 3 000173 automatic bit(36) level 2 packed unaligned dcl 224 set ref 90* ndcw 000171 automatic fixed bin(24,0) dcl 200 set ref 110* 113* 113 114 117 119 121 125 127 129 135 139 no_ent 1 000301 automatic fixed bin(24,0) level 2 dcl 242 set ref 151* 153 153* origin 4(18) 000173 automatic fixed bin(18,0) level 2 packed unsigned unaligned dcl 224 set ref 94* preface 000173 automatic structure level 1 dcl 224 set ref 135 135 prog_name based bit(36) level 2 packed unaligned dcl 216 ref 90 154 psw 24 000044 external static bit(36) level 3 dcl 2-106 set ref 75 151 152* q 25 based bit(36) level 3 packed unaligned dcl 8-12 set ref 34 34 43 45 47 80 q_reg_left_half based fixed bin(18,0) level 2 packed unsigned unaligned dcl 211 ref 45 q_reg_right_half 0(18) based bit(18) level 2 packed unaligned dcl 211 set ref 47* q_register based structure level 1 dcl 211 r18 0(18) based bit(18) level 2 packed unaligned dcl 206 ref 47 regs 20 based structure level 2 packed unaligned dcl 8-12 rel_abs 2 000173 automatic fixed bin(24,0) level 2 dcl 224 set ref 91* rel_check 1 000173 automatic fixed bin(24,0) level 2 dcl 224 set ref 91* reloc_words 5 000173 automatic fixed bin(18,0) level 2 packed unsigned unaligned dcl 224 set ref 92* save_data 000044 external static structure level 2 dcl 2-106 save_data_entry based structure level 1 dcl 5-5 save_machine_conditions based structure level 1 packed unaligned dcl 3-6 scu 30 based bit(36) array level 2 in structure "mc" packed unaligned dcl 8-12 in procedure "gcos_mme_save_" set ref 31 scu based structure level 1 dcl 8-56 in procedure "gcos_mme_save_" scup 002256 automatic pointer dcl 8-54 set ref 31* 32 45 seek_save 000172 automatic fixed bin(21,0) dcl 202 set ref 132* 139 155 status 002252 automatic structure level 1 unaligned dcl 1-76 set ref 77* 85* 132* 135* 140* 145* 148* 158* 161* 164* stream 3 based char(8) level 2 packed unaligned dcl 7-10 set ref 77* 85* 132* 135* 140* 145* 148* 158* 161* 164* substr builtin function dcl 203 set ref 37 43 50 50 75 80 81 81 106 151 152* sysout 1 000042 external static bit(1) array level 3 packed unaligned dcl 2-102 ref 53 type 60(02) based bit(1) level 4 packed unaligned dcl 7-10 ref 56 unspec builtin function dcl 204 ref 106 word based structure level 1 dcl 206 xfer_addr 2 based fixed bin(18,0) level 2 packed unsigned unaligned dcl 216 ref 93 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. abx internal static fixed bin(17,0) initial dcl 8-42 apx internal static fixed bin(17,0) initial dcl 8-42 bbx internal static fixed bin(17,0) initial dcl 8-42 bit builtin function dcl 176 bpx internal static fixed bin(17,0) initial dcl 8-42 fixed builtin function dcl 185 gcos_ext_stat_$abort_reason external static varying char(128) dcl 2-13 gcos_ext_stat_$abort_return external static label variable dcl 2-14 gcos_ext_stat_$activity_card_num external static picture(4) unaligned dcl 2-15 gcos_ext_stat_$activity_name external static char(8) unaligned dcl 2-16 gcos_ext_stat_$activity_start_time external static fixed bin(71,0) dcl 2-17 gcos_ext_stat_$card_num external static picture(4) unaligned dcl 2-18 gcos_ext_stat_$courtesy_call_control external static structure level 1 dcl 2-92 gcos_ext_stat_$dbs external static bit(1) array unaligned dcl 2-19 gcos_ext_stat_$default_nondollar external static char(2) unaligned dcl 2-20 gcos_ext_stat_$dir_rings external static fixed bin(3,0) array dcl 2-21 gcos_ext_stat_$dpno external static varying char(100) dcl 2-22 gcos_ext_stat_$dpo external static varying char(100) dcl 2-23 gcos_ext_stat_$endfc external static char(2) unaligned dcl 2-24 gcos_ext_stat_$er external static pointer dcl 2-25 gcos_ext_stat_$etc_filecode external static char(2) unaligned dcl 2-26 gcos_ext_stat_$gcos_gtss external static structure level 1 unaligned dcl 2-115 gcos_ext_stat_$gf external static fixed bin(24,0) dcl 2-28 gcos_ext_stat_$incode external static fixed bin(24,0) dcl 2-29 gcos_ext_stat_$increment_hold external static fixed bin(24,0) dcl 2-30 gcos_ext_stat_$initial_cpu_time external static fixed bin(71,0) dcl 2-31 gcos_ext_stat_$input_segment_path external static varying char(168) dcl 2-32 gcos_ext_stat_$jcl_warnings external static fixed bin(24,0) dcl 2-33 gcos_ext_stat_$job_cpu_time external static fixed bin(71,0) dcl 2-34 gcos_ext_stat_$job_id external static varying char(18) dcl 2-35 gcos_ext_stat_$job_real_time external static fixed bin(71,0) dcl 2-36 gcos_ext_stat_$last_mme external static fixed bin(24,0) dcl 2-37 gcos_ext_stat_$ldrss external static fixed bin(24,0) dcl 2-38 gcos_ext_stat_$max_activities external static fixed bin(24,0) dcl 2-39 gcos_ext_stat_$max_mem external static fixed bin(19,0) dcl 2-40 gcos_ext_stat_$mc external static structure level 1 unaligned dcl 2-112 gcos_ext_stat_$mme_rtrn external static label variable dcl 2-41 gcos_ext_stat_$nondollar external static char(2) unaligned dcl 2-42 gcos_ext_stat_$nongcos external static char(2) unaligned dcl 2-43 gcos_ext_stat_$normal_return external static label variable dcl 2-44 gcos_ext_stat_$patchfile_ptr external static pointer dcl 2-45 gcos_ext_stat_$pathname_prefix external static varying char(168) dcl 2-46 gcos_ext_stat_$pch external static pointer dcl 2-47 gcos_ext_stat_$pdir external static varying char(168) dcl 2-48 gcos_ext_stat_$prt external static pointer dcl 2-49 gcos_ext_stat_$rs external static pointer dcl 2-50 gcos_ext_stat_$save_dir external static varying char(168) dcl 2-52 gcos_ext_stat_$saveseg_ptr external static pointer dcl 2-51 gcos_ext_stat_$seg_rings external static fixed bin(3,0) array dcl 2-53 gcos_ext_stat_$sig_ptr external static pointer dcl 2-54 gcos_ext_stat_$skip_umc external static bit(1) unaligned dcl 2-55 gcos_ext_stat_$snumb external static bit(30) dcl 2-56 gcos_ext_stat_$sought_label external static char(8) unaligned dcl 2-57 gcos_ext_stat_$statistics external static fixed bin(24,0) array dcl 2-58 gcos_ext_stat_$stop_code external static fixed bin(24,0) dcl 2-59 gcos_ext_stat_$sysout_limit external static fixed bin(35,0) dcl 2-61 gcos_ext_stat_$sysout_lines external static fixed bin(35,0) dcl 2-62 gcos_ext_stat_$system_free_pointer external static pointer dcl 2-63 gcos_ext_stat_$tape_buffer_size external static fixed bin(35,0) dcl 2-64 gcos_ext_stat_$temp_dir external static varying char(168) dcl 2-65 gcos_ext_stat_$temp_seg_ptr external static pointer dcl 2-66 gcos_ext_stat_$termination_code external static bit(18) unaligned dcl 2-67 gcos_ext_stat_$time_limit external static fixed bin(71,0) dcl 2-68 gcos_ext_stat_$userid external static char(12) unaligned dcl 2-69 gcos_ext_stat_$validation_level external static fixed bin(3,0) dcl 2-70 ioa_ 000000 constant entry external dcl 195 ios_$attach 000000 constant entry external dcl 1-3 ios_$detach 000000 constant entry external dcl 1-11 ios_$order 000000 constant entry external dcl 1-18 ios_$read_ptr 000000 constant entry external dcl 1-34 ios_$setsize 000000 constant entry external dcl 1-39 ios_$write_ptr 000000 constant entry external dcl 1-70 k automatic fixed bin(24,0) dcl 197 lbx internal static fixed bin(17,0) initial dcl 8-42 linked_file internal static bit(1) initial unaligned dcl 7-87 lpx internal static fixed bin(17,0) initial dcl 8-42 prog_name automatic char(6) unaligned dcl 201 random_file internal static bit(1) initial unaligned dcl 7-88 read_file internal static bit(1) initial unaligned dcl 7-89 sbx internal static fixed bin(17,0) initial dcl 8-42 scux based structure level 1 dcl 8-206 spx internal static fixed bin(17,0) initial dcl 8-42 write_file internal static bit(1) initial unaligned dcl 7-90 NAMES DECLARED BY EXPLICIT CONTEXT. die 000167 constant label dcl 42 ref 60 66 72 done 000670 constant label dcl 132 ref 122 gcos_mme_save_ 000100 constant entry external dcl 6 hit 000257 constant label dcl 53 ref 37 ioerror 000401 constant label dcl 79 ref 86 133 137 141 146 149 159 162 165 loop 000627 constant label dcl 112 ref 130 not_rand 000300 constant label dcl 57 ref 53 return_code 000176 constant label dcl 44 ref 80 NAME DECLARED BY CONTEXT OR IMPLICATION. hbound builtin function ref 36 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1550 1616 1342 1560 Length 2174 1342 46 342 205 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gcos_mme_save_ 1294 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gcos_mme_save_ 000100 accum gcos_mme_save_ 000102 add gcos_mme_save_ 000104 callp gcos_mme_save_ 000106 checker_ptr gcos_mme_save_ 000110 cnt gcos_mme_save_ 000111 ecode gcos_mme_save_ 000112 fb35 gcos_mme_save_ 000114 fc gcos_mme_save_ 000116 i gcos_mme_save_ 000117 j gcos_mme_save_ 000120 longerror gcos_mme_save_ 000151 message gcos_mme_save_ 000171 ndcw gcos_mme_save_ 000172 seek_save gcos_mme_save_ 000173 preface gcos_mme_save_ 000301 catblk gcos_mme_save_ 002252 status gcos_mme_save_ 002254 fibptr gcos_mme_save_ 002256 scup gcos_mme_save_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_fs_errcode_ gcos_cv_gebcd_ascii_ gcos_mme_bort_$abort_number gcos_mme_bort_$system ios_$read ios_$seek ios_$tell ios_$write THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. gcos_et_$bad_call_save_device gcos_et_$io_lim_call_save gcos_et_$zero_save_word_cnt gcos_ext_stat_$fct gcos_ext_stat_$gcos_slave_area_seg gcos_ext_stat_$save_data gcos_ext_stat_$storage_limit LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000074 31 000105 32 000112 33 000116 34 000122 36 000142 37 000147 38 000157 40 000161 41 000164 42 000167 43 000170 44 000176 45 000177 46 000212 47 000225 48 000232 50 000233 53 000257 54 000267 55 000271 56 000275 57 000300 59 000303 60 000305 63 000306 64 000317 65 000321 66 000324 69 000325 70 000327 71 000331 72 000334 75 000335 77 000341 78 000377 79 000401 80 000416 81 000424 85 000457 86 000516 90 000520 91 000522 92 000524 93 000526 94 000537 95 000546 99 000550 100 000557 101 000561 102 000571 103 000602 105 000607 106 000611 108 000613 109 000623 110 000626 112 000627 113 000630 114 000631 116 000637 117 000642 119 000647 121 000651 122 000653 125 000654 126 000657 128 000661 129 000663 130 000667 132 000670 133 000725 135 000727 136 000771 137 000775 139 000777 140 001005 141 001041 145 001043 146 001102 148 001104 149 001145 151 001147 152 001155 153 001157 154 001163 155 001166 158 001171 159 001226 161 001230 162 001271 164 001273 165 001332 167 001334 168 001337 ----------------------------------------------------------- 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