ASSEMBLY LISTING OF SEGMENT >udd>sm>ds>w>ml>tty_util_.alm ASSEMBLED ON: 04/18/00 1122.0 mdt Tue OPTIONS USED: list symbols ASSEMBLED BY: ALM Version 8.14 March 1989 ASSEMBLER CREATED: 06/09/89 1102.3 mdt Fri 1 " *********************************************************** 2 " * * 3 " * Copyright, (C) Honeywell Bull Inc., 1987 * 4 " * * 5 " * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6 " * * 7 " * Copyright (c) 1972 by Massachusetts Institute of * 8 " * Technology and Honeywell Information Systems, Inc. * 9 " * * 10 " *********************************************************** 000000 11 name tty_util_ 12 13 " " " " " " " " " " " " " " " " " " " " " " " " " 14 " 15 " Utilities for the tty DIM. 16 " 17 " These routines perform certain scanning and editing 18 " functions for the tty DIM which are faster and 19 " easier to do in ALM. 20 " 21 " Coded 10/15/75 by Mike Grady 22 " 6/9/81 RE Mullen: find_char to scan <= 128 chars, rather than <= 2000 23 24 " 25 " " " " " " " " " " " " " " " " " " " " " " " " " 26 000000 27 segdef find_char 000111 28 segdef mvt 000124 29 segdef scm 000156 30 segdef illegal_char 000200 31 segdef tct 32 33 " symbols for storage in callers automatic storage 34 000000 35 equ stringp,0 000002 36 equ stringl,2 000003 37 equ tally,3 000004 38 equ tablep,4 000004 39 equ bit,4 000005 40 equ match,5 000006 41 equ indicator,6 000006 42 equ targetp,6 43 44 " some temporary storage also in callers stack frame 45 000010 46 equ w1,8 000011 47 equ w2,9 48 49 " 50 " " " " " " " " " " " " " " " " " " " " " " " " " 51 " 52 " find_char finds the next interesting char for the 53 " caller. It looks first for high bits (> 177) and 54 " then for double blanks, and finally for chars in 55 " a tct table. 56 " 57 " Input: 58 " stringp - pointer to string to scan 59 " stringl - length of string 60 " tablep - pointer to table to use for tct 61 " 62 " Output: 63 " tally - number of uninteresting chars 64 " indicator - number which indicates char found 65 " 3 for white space 66 " 7 for escape char 67 " value from tct otherwise 68 " 69 " " " " " " " " " " " " " " " " " " " " " " " " " 70 000000 71 find_char: 000000 aa 0 00002 3515 20 72 epp1 pr0|2,* get ptr to block of storage in 000001 aa 1 00000 3515 20 73 epp1 pr1|0,* callers stack 000002 aa 1 00000 3521 20 74 epp2 pr1|stringp,* load ptr to string 000003 aa 1 00002 2361 00 75 ldq pr1|stringl load string length 000004 aa 000200 1160 07 76 cmpq 128,dl use min(stringl,128) to be quick 000005 aa 000002 6040 04 77 tmi 2,ic all set 78 000006 aa 000200 2360 07 79 ldq 128,dl 000007 aa 1 00003 4501 00 80 stz pr1|tally zero tally 81 000010 0a 000232 7020 00 82 tsx2 find_high_bits look for interesting bits 000011 0a 000014 7100 00 83 tra look_for_blanks none, continue 84 000012 aa 1 00010 2361 00 85 ldq pr1|w1 get result 000013 0a 000037 6000 00 86 tze have_high_bit first char - done 87 000014 88 look_for_blanks: 000014 aa 0 00003 1205 40 89 scd (pr,rl),(du) look for two blanks 000015 aa 200000 000006 90 desc9a pr2|0,ql 000016 aa 040 040 000 000 91 aci " " 000017 aa 1 00011 0001 00 92 arg pr1|w2 store result here 93 000020 0a 000025 6064 00 94 ttn no_double_blanks none in string 95 000021 aa 1 00011 2351 00 96 lda pr1|w2 get length up to double blanks 000022 aa 400000 2750 03 97 ora =o400000,du set high order bit as flag 000023 aa 1 00010 7551 00 98 sta pr1|w1 save as count 000024 aa 1 00011 2361 00 99 ldq pr1|w2 reduce stringl again 100 000025 101 no_double_blanks: 000025 aa 1 00004 3535 20 102 epp3 pr1|tablep,* load table pointer 000026 aa 0 00000 1645 40 103 tct (pr,rl) look into tct table for interesting chars 000027 aa 200000 000006 104 desc9a pr2|0,ql 000030 aa 3 00000 0001 00 105 arg pr3|0 000031 aa 1 00011 0001 00 106 arg pr1|w2 107 000032 0a 000044 6070 00 108 ttf tct_hit we got hit in tct, process 109 000033 aa 000003 2350 07 110 lda 3,dl get indicator value 000034 aa 1 00010 2341 00 111 szn pr1|w1 any high bits or double blanks? 000035 0a 000067 6000 00 112 tze return_full_string no, return the whole thing 000036 aa 000002 6040 04 113 tmi 2,ic double blanks found 000037 114 have_high_bit: 000037 aa 000007 2350 07 115 lda 7,dl get indicator for \nnn type 116 000040 aa 1 00006 7551 00 117 sta pr1|indicator return it to caller 000041 aa 1 00010 7201 00 118 lxl0 pr1|w1 get count 000042 aa 1 00003 4401 00 119 sxl0 pr1|tally 000043 0a 000071 7100 00 120 tra tct_done done 121 000044 122 tct_hit: 000044 aa 1 00011 2351 00 123 lda pr1|w2 get char value hit on 000045 aa 000033 7710 00 124 arl 27 shift down 000046 aa 1 00006 7551 00 125 sta pr1|indicator return to caller 000047 aa 000005 1150 07 126 cmpa 5,dl one of the special types? 000050 0a 000064 6050 00 127 tpl return_normal nope 128 000051 aa 1 00011 7201 00 129 lxl0 pr1|w2 get the count 000052 0a 000064 6000 00 130 tze return_normal hit on first char in string 000053 aa 000001 1200 03 131 sblx0 1,du decrement the count to point a prev char 000054 aa 0 00000 1065 10 132 cmpc (pr,x0),(),fill(0) 000055 aa 200000 000001 133 desc9a pr2|0,1 look for blank 000056 0a 000110 000001 134 desc9a blank,1 135 000057 0a 000064 6010 00 136 tnz return_normal not blank, all ok 137 000060 aa 000003 2350 07 138 lda 3,dl get blank indicator 000061 aa 1 00006 7551 00 139 sta pr1|indicator return to caller 000062 aa 1 00003 4401 00 140 sxl0 pr1|tally set tally to blank locn 000063 0a 000071 7100 00 141 tra tct_done done 142 000064 143 return_normal: 000064 aa 1 00011 7201 00 144 lxl0 pr1|w2 get the count from the tct 000065 aa 1 00003 4401 00 145 sxl0 pr1|tally return to caller 000066 0a 000071 7100 00 146 tra tct_done done 147 000067 148 return_full_string: 000067 aa 1 00003 7561 00 149 stq pr1|tally use whole thing 000070 aa 1 00006 4501 00 150 stz pr1|indicator set indicator 151 000071 152 tct_done: 000071 aa 1 00003 2361 00 153 ldq pr1|tally get tally 000072 aa 1 00006 2351 00 154 lda pr1|indicator load the indicator 000073 0a 000101 6000 00 155 tze tct_nbump zero, no bump 000074 aa 000003 1150 07 156 cmpa 3,dl is it blank? 000075 0a 000101 6000 00 157 tze tct_nbump yes, done 000076 aa 000007 1150 07 158 cmpa 7,dl is it escape char type? 000077 0a 000101 6000 00 159 tze tct_nbump yes, done 000100 aa 000001 0760 07 160 adq 1,dl bump input char count 000101 161 tct_nbump: 000101 aa 2 00000 5005 06 162 a9bd pr2|0,ql bump ptr 000102 aa 1 00000 2521 00 163 spri2 pr1|stringp 164 000103 aa 1 00010 7561 00 165 stq pr1|w1 store for subtract 000104 aa 1 00002 2351 00 166 lda pr1|stringl get stringl 000105 aa 1 00010 1751 00 167 sba pr1|w1 decrement 000106 aa 1 00002 7551 00 168 sta pr1|stringl reset stringl 169 000107 aa 7 00044 7101 20 170 short_return 171 000110 aa 040 000 000 000 172 blank: aci " " 173 174 " 175 " " " " " " " " " " " " " " " " " " " " " " " " " 176 " 177 " this routine does an mvt to translate chars. 178 " 179 " Input: 180 " stringp - points to input string 181 " stringl - length of string 182 " tablep - pointer to translate table 183 " 184 " Output: 185 " targetp - pointer to output string 186 " 187 " " " " " " " " " " " " " " " " " " " " " " " " " 000111 aa 0 00002 3515 20 188 mvt: epp1 pr0|2,* get ptr to arg ptr 000112 aa 1 00000 3515 20 189 epp1 pr1|0,* get ptr to callers block 000113 aa 1 00000 3521 20 190 epp2 pr1|stringp,* get ptr to the string 000114 aa 1 00002 2361 00 191 ldq pr1|stringl load length of string 000115 aa 1 00004 3535 20 192 epp3 pr1|tablep,* load ptr to mvt table 000116 aa 1 00006 3715 20 193 epp5 pr1|targetp,* get ptr to target string 194 000117 aa 0 00140 1605 40 195 mvt (pr,rl),(pr,rl),fill(0) do the mvt 000120 aa 200000 000006 196 desc9a pr2|0,ql 000121 aa 500000 000006 197 desc9a pr5|0,ql 000122 aa 3 00000 0001 00 198 arg pr3|0 199 000123 aa 7 00044 7101 20 200 short_return that was easy 201 202 203 " 204 " " " " " " " " " " " " " " " " " " " " " " " " " 205 " 206 " routine to scan for high bits in chars and return ptr to 207 " matched char. 208 " 209 " Input: 210 " stringp - points to string 211 " stringl - length 212 " bit - bit pattern looked for 213 " 214 " Output: 215 " tally - number of chars to char with bit 216 " match - "1"b if bit matched 217 " 218 " " " " " " " " " " " " " " " " " " " " " " " " " 219 000124 aa 0 00002 3515 20 220 scm: epp1 pr0|2,* get ptr to arg ptr 000125 aa 1 00000 3515 20 221 epp1 pr1|0,* get ptr to arg block 000126 aa 1 00000 3521 20 222 epp2 pr1|stringp,* get ptr to string 000127 aa 1 00002 2361 00 223 ldq pr1|stringl get string length 000130 aa 1 00005 4501 00 224 stz pr1|match indicate initial failure 225 000131 aa 1 00004 2351 00 226 lda pr1|bit look at the bit we want 000132 aa 400000 3750 03 227 ana =o400000,du use it to select scm 000133 0a 000141 6010 00 228 tnz scm4 on, we want highest bit 229 000134 aa 5 77100 1245 40 230 scm (pr,rl),(pr),mask(577) off, we must want bit 8 000135 aa 200000 000006 231 desc9a pr2|0,ql 000136 aa 1 00004 0001 00 232 arg pr1|bit 000137 aa 1 00003 0001 00 233 arg pr1|tally 000140 0a 000145 7100 00 234 tra scm_ck look at results 235 000141 aa 3 77100 1245 40 236 scm4: scm (pr,rl),(pr),mask(377) scan string for 9th bit 000142 aa 200000 000006 237 desc9a pr2|0,ql 000143 aa 1 00004 0001 00 238 arg pr1|bit 000144 aa 1 00003 0001 00 239 arg pr1|tally result 240 000145 0a 000150 6064 00 241 scm_ck: ttn scm_done no hits 242 000146 aa 400000 2350 03 243 lda =o400000,du get flag bit 000147 aa 1 00005 7551 00 244 sta pr1|match indicate success 000150 245 scm_done: 000150 aa 1 00003 1761 00 246 sbq pr1|tally reduce stringl 000151 aa 1 00002 7561 00 247 stq pr1|stringl return to caller 000152 aa 1 00003 2361 00 248 ldq pr1|tally fetch tally word 000153 aa 2 00000 5005 06 249 a9bd pr2|0,ql bump stringp 000154 aa 1 00000 2521 00 250 spri2 pr1|stringp store for caller 251 000155 aa 7 00044 7101 20 252 short_return 253 254 " 255 " " " " " " " " " " " " " " " " " " " " " " " " " 256 " 257 " routine to look for any char with bit 8 or 9 on. 258 " 259 " Input: 260 " stringp - points to string 261 " stringl - length 262 " 263 " Output: 264 " tally - number of chars up to bad one 265 " match - if bad one found "1"b 266 " 267 " " " " " " " " " " " " " " " " " " " " " " " " " 268 000156 269 illegal_char: 000156 aa 0 00002 3515 20 270 epp1 pr0|2,* get ptr to ptr to block 000157 aa 1 00000 3515 20 271 epp1 pr1|0,* get ptr to block 000160 aa 1 00000 3521 20 272 epp2 pr1|stringp,* get ptr to string 000161 aa 1 00002 2361 00 273 ldq pr1|stringl get length 274 000162 aa 1 00005 4501 00 275 stz pr1|match zero return bit 000163 aa 1 00003 7561 00 276 stq pr1|tally set max tally 277 000164 0a 000232 7020 00 278 tsx2 find_high_bits see if any high bits on 000165 0a 000172 7100 00 279 tra no_illegal_chars none, continue 280 000166 aa 1 00010 7201 00 281 lxl0 pr1|w1 get the result 000167 aa 1 00003 4401 00 282 sxl0 pr1|tally return 000170 aa 400000 2350 03 283 lda =o400000,du get match bit 000171 aa 1 00005 7551 00 284 sta pr1|match 000172 285 no_illegal_chars: 000172 aa 1 00003 1761 00 286 sbq pr1|tally reduce stringl 000173 aa 1 00002 7561 00 287 stq pr1|stringl return to caller 000174 aa 1 00003 2361 00 288 ldq pr1|tally fetch tally word 000175 aa 2 00000 5005 06 289 a9bd pr2|0,ql bump stringp 000176 aa 1 00000 2521 00 290 spri2 pr1|stringp store for caller 291 000177 aa 7 00044 7101 20 292 short_return 293 " 294 " " " " " " " " " " " " " " " " " " " " " " " " " 295 " 296 " routine to do input tct function, similar to 297 " find_char, but does only tct function 298 " 299 " " " " " " " " " " " " " " " " " " " " " " " " " 300 000200 aa 0 00002 3515 20 301 tct: epp1 pr0|2,* get ptr to arg ptr 000201 aa 1 00000 3515 20 302 epp1 pr1|0,* get ptr to arg block 000202 aa 1 00000 3521 20 303 epp2 pr1|stringp,* get ptr to string 000203 aa 1 00002 2361 00 304 ldq pr1|stringl get string length 000204 aa 1 00003 4501 00 305 stz pr1|tally zero the tally word 306 000205 aa 1 00004 3535 20 307 epp3 pr1|tablep,* get ptr to table 000206 aa 0 00000 1645 40 308 tct (pr,rl) do the tct 000207 aa 200000 000006 309 desc9a pr2|0,ql 000210 aa 3 00000 0001 00 310 arg pr3|0 000211 aa 1 00011 0001 00 311 arg pr1|w2 result goes here 312 000212 0a 000222 6064 00 313 ttn tct_nohit no good chars 314 000213 aa 1 00011 2351 00 315 lda pr1|w2 get the indicator value 000214 aa 000033 7710 00 316 arl 27 shift down 000215 aa 1 00006 7551 00 317 sta pr1|indicator 318 000216 aa 1 00011 7201 00 319 lxl0 pr1|w2 get the tally 000217 aa 1 00003 4401 00 320 sxl0 pr1|tally 000220 aa 1 00003 2361 00 321 ldq pr1|tally load tally for ptr update 000221 0a 000224 7100 00 322 tra tct_ptr_inc 323 000222 324 tct_nohit: 000222 aa 1 00003 7561 00 325 stq pr1|tally return whole string 000223 aa 1 00006 4501 00 326 stz pr1|indicator no indicator 327 000224 328 tct_ptr_inc: 000224 aa 2 00000 5005 06 329 a9bd pr2|0,ql 000225 aa 1 00000 2521 00 330 spri2 pr1|stringp return ptr 000226 aa 1 00002 2351 00 331 lda pr1|stringl get string length 000227 aa 1 00003 1751 00 332 sba pr1|tally reduce amount processed 000230 aa 1 00002 7551 00 333 sta pr1|stringl 000231 aa 7 00044 7101 20 334 short_return 335 " 336 " " " " " " " " " " " " " " " " " " " " " " " " " 337 " 338 " internal proc to find high bits. 339 " return+1 -> none found 340 " return+2 -> high bit found 341 " 342 " " " " " " " " " " " " " " " " " " " " " " " " " 343 000232 344 find_high_bits: 000232 aa 3 77003 1245 40 345 scm (pr,rl),(du),mask(377) look for chars with bit9 on 000233 aa 200000 000006 346 desc9a pr2|0,ql 000234 aa 400000 000000 347 vfd o9/400,27/0 000235 aa 1 00010 0001 00 348 arg pr1|w1 result here 349 000236 0a 000247 6064 00 350 ttn scm_other_bit not this one try bit8 351 000237 aa 1 00010 2341 00 352 szn pr1|w1 did we hit on first char? 000240 0a 000264 6000 00 353 tze found_first_bit yes, return 354 000241 aa 5 77003 1245 40 355 scm (pr,rl),(du),mask(577) look for bit8 on 000242 aa 200000 000006 356 desc9a pr2|0,ql 000243 aa 200000 000000 357 vfd o9/200,27/0 000244 aa 1 00011 0001 00 358 arg pr1|w2 save result 359 000245 0a 000260 6064 00 360 ttn check_which_bit not bit8, must be bit9 000246 0a 000254 7100 00 361 tra found_other_bit 362 000247 363 scm_other_bit: 000247 aa 5 77003 1245 40 364 scm (pr,rl),(du),mask(577) look for bit8 on 000250 aa 200000 000006 365 desc9a pr2|0,ql 000251 aa 200000 000000 366 vfd o9/200,27/0 000252 aa 1 00011 0001 00 367 arg pr1|w2 save result 368 000253 0a 000265 6064 00 369 ttn no_high_bits good, neither bit8 or 9 was on 370 000254 371 found_other_bit: 000254 aa 1 00011 2341 00 372 szn pr1|w2 did we hit first char? 000255 0a 000260 6010 00 373 tnz check_which_bit no, find which one 374 000256 aa 1 00010 4501 00 375 stz pr1|w1 indicate offset of zero in w1 000257 0a 000264 7100 00 376 tra found_first_bit return info 377 000260 378 check_which_bit: 000260 aa 1 00011 2351 00 379 lda pr1|w2 get second count 000261 aa 1 00010 1151 00 380 cmpa pr1|w1 compare with first 000262 aa 000002 6050 04 381 tpl 2,ic more, use w1 382 000263 aa 1 00010 7551 00 383 sta pr1|w1 less use w2 as length 000264 384 found_first_bit: 000264 aa 000001 7100 12 385 tra 1,2 return 386 000265 387 no_high_bits: 000265 aa 1 00010 4501 00 388 stz pr1|w1 reset the high bits indicator 000266 aa 000000 7100 12 389 tra 0,2 return 390 391 end NO LITERALS NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 000270 5a 000003 000000 000271 5a 000051 600000 000272 aa 000000 000000 000273 55 000011 000002 000274 5a 000002 400003 000275 55 000006 000011 000276 aa 011 164 164 171 000277 aa 137 165 164 151 000300 aa 154 137 000 000 000301 55 000015 000003 000302 0a 000200 400000 000303 55 000014 000003 000304 aa 003 164 143 164 tct 000305 55 000024 000011 000306 0a 000156 400000 000307 55 000020 000003 000310 aa 014 151 154 154 illegal_char 000311 aa 145 147 141 154 000312 aa 137 143 150 141 000313 aa 162 000 000 000 000314 55 000030 000015 000315 0a 000124 400000 000316 55 000027 000003 000317 aa 003 163 143 155 scm 000320 55 000034 000024 000321 0a 000111 400000 000322 55 000033 000003 000323 aa 003 155 166 164 mvt 000324 55 000042 000030 000325 0a 000000 400000 000326 55 000037 000003 000327 aa 011 146 151 156 find_char 000330 aa 144 137 143 150 000331 aa 141 162 000 000 000332 55 000002 000034 000333 6a 000000 400002 000334 55 000045 000003 000335 aa 014 163 171 155 symbol_table 000336 aa 142 157 154 137 000337 aa 164 141 142 154 000340 aa 145 000 000 000 DEFINITIONS HASH TABLE 000341 aa 000000 000015 000342 aa 000000 000000 000343 aa 000000 000000 000344 5a 000015 000000 000345 aa 000000 000000 000346 aa 000000 000000 000347 aa 000000 000000 000350 5a 000024 000000 000351 5a 000034 000000 000352 5a 000042 000000 000353 aa 000000 000000 000354 5a 000030 000000 000355 aa 000000 000000 000356 5a 000011 000000 NO EXTERNAL NAMES NO TRAP POINTER WORDS TYPE PAIR BLOCKS 000357 aa 000001 000000 000360 aa 000000 000000 INTERNAL EXPRESSION WORDS 000361 aa 000000 000000 LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 000270 000000 000002 aa 000000 000000 000003 aa 000000 000000 000004 aa 000000 000000 000005 aa 000000 000000 000006 22 000010 000010 000007 a2 000000 000000 SYMBOL INFORMATION SYMBOL TABLE HEADER 000000 aa 000000 000001 000001 aa 163171 155142 000002 aa 164162 145145 000003 aa 000000 000010 000004 aa 000000 117244 000005 aa 361023 525721 000006 aa 000000 131036 000007 aa 703527 073643 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000002 000002 000016 aa 000064 000000 000017 aa 000000 000145 000020 aa 000000 000102 000021 aa 000125 000122 000022 aa 000137 000102 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 070056 061064 000030 aa 040115 141162 000031 aa 143150 040061 000032 aa 071070 071040 000033 aa 040040 040040 000034 aa 123143 150162 000035 aa 157164 150056 000036 aa 123171 163115 000037 aa 141151 156164 000040 aa 056155 040040 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 154151 163164 000045 aa 040163 171155 000046 aa 142157 154163 000047 aa 040040 040040 000050 aa 040040 040040 000051 aa 040040 040040 000052 aa 040040 040040 000053 aa 040040 040040 000054 aa 040040 040040 000055 aa 040040 040040 000056 aa 040040 040040 000057 aa 040040 040040 000060 aa 040040 040040 000061 aa 040040 040040 000062 aa 040040 040040 000063 aa 040040 040040 000064 aa 000000 000001 000065 aa 000000 000001 000066 aa 000072 000035 000067 aa 310157 125772 000070 aa 000000 131036 000071 aa 703527 000000 000072 aa 076165 144144 >udd>sm>ds>w>ml>tty_util_.alm 000073 aa 076163 155076 000074 aa 144163 076167 000075 aa 076155 154076 000076 aa 164164 171137 000077 aa 165164 151154 000100 aa 137056 141154 000101 aa 155040 040040 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number 4 bit tty_util_: 39, 226, 232, 238. 110 blank tty_util_: 134, 172. 260 check_which_bit tty_util_: 360, 373, 378. 0 find_char tty_util_: 27, 71. 232 find_high_bits tty_util_: 82, 278, 344. 264 found_first_bit tty_util_: 353, 376, 384. 254 found_other_bit tty_util_: 361, 371. 37 have_high_bit tty_util_: 86, 114. 156 illegal_char tty_util_: 30, 269. 6 indicator tty_util_: 41, 117, 125, 139, 150, 154, 317, 326. 14 look_for_blanks tty_util_: 83, 88. 5 match tty_util_: 40, 224, 244, 275, 284. 111 mvt tty_util_: 28, 188. 25 no_double_blanks tty_util_: 94, 101. 265 no_high_bits tty_util_: 369, 387. 172 no_illegal_chars tty_util_: 279, 285. 67 return_full_string tty_util_: 112, 148. 64 return_normal tty_util_: 127, 130, 136, 143. 124 scm tty_util_: 29, 220. 141 scm4 tty_util_: 228, 236. 145 scm_ck tty_util_: 234, 241. 150 scm_done tty_util_: 241, 245. 247 scm_other_bit tty_util_: 350, 363. 2 stringl tty_util_: 36, 75, 166, 168, 191, 223, 247, 273, 287, 304, 331, 333. 0 stringp tty_util_: 35, 74, 163, 190, 222, 250, 272, 290, 303, 330. 4 tablep tty_util_: 38, 102, 192, 307. 3 tally tty_util_: 37, 80, 119, 140, 145, 149, 153, 233, 239, 246, 248, 276, 282, 286, 288, 305, 320, 321, 325, 332. 6 targetp tty_util_: 42, 193. 200 tct tty_util_: 31, 301. 71 tct_done tty_util_: 120, 141, 146, 152. 44 tct_hit tty_util_: 108, 122. 101 tct_nbump tty_util_: 155, 157, 159, 161. 222 tct_nohit tty_util_: 313, 324. 224 tct_ptr_inc tty_util_: 322, 328. 10 w1 tty_util_: 46, 85, 98, 111, 118, 165, 167, 281, 348, 352, 375, 380, 383, 388. 11 w2 tty_util_: 47, 92, 96, 99, 106, 123, 129, 144, 311, 315, 319, 358, 367, 372, 379. NO FATAL ERRORS ----------------------------------------------------------- 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