ASSEMBLY LISTING OF SEGMENT >spec>h>3.17>core.alm ASSEMBLED ON: 11/29/83 1520.2 mst Tue OPTIONS USED: list ASSEMBLED BY: ALM Version 6.6 November 1982 ASSEMBLER CREATED: 09/21/83 1227.3 mst Wed  1 " ***********************************************************  2 " * *  3 " * Copyright, (C) Honeywell Information Systems Inc., 1982 *  4 " * *  5 " ***********************************************************  6 " CORE - prog to save and restore a core image to tape  7 " Modified 9/29/73 by N. I. Morris  8 " Last modified 2/11/81 by Sherman D. Sprague to add density commands  9  000000 10 name core  11  12  13 " ******************************************************  14 " * *  15 " * *  16 " * Copyright (c) 1972 by Massachusetts Institute of *  17 " * Technology and Honeywell Information Systems, Inc. *  18 " * *  19 " * *  20 " ******************************************************  21  22  000010 23 equ nblocks,8 "Number of memory ports.  24  000060 25 bool d8,60 set density command for 800 bpi  000065 26 bool d16,65 set density command for 1600 bpi  000041 27 bool d62,41 set density command for 6250 bpi  28  29 include bosequ 1-1 " Begin include file ...... bosequ.incl.alm 1-2 " Modified 8/25/76 by N. I. Morris  1-3 " Modified 8/79 by R.J.C. Kissel to expand BOS. 1-4 " Modified November 1981 by C. Hornig to add pgmorg.  1-5 " Modified October 1982 by J. Bongiovanni to take it out  1-6  000000 1-7 bool ds,0 descriptor segment  000001 1-8 bool tmp,1 temp seg  000002 1-9 bool bf,2 buffer segment for save/restor  000003 1-10 bool pgm,3 program in control 000004 1-11 bool xs1,4 spare segment  000005 1-12 bool xs2,5 spare segment  000005 1-13 bool fgb,5 flagbox segment  000006 1-14 bool com,6 common 000007 1-15 bool mem,7 all memory 1-16  000017 1-17 equ arglen,15 max number of args from scan  1-18  004000 1-19 bool runcom_bit,4000 runcom bit in dir entry  002000 1-20 bool firmware_bit,2000 firmware bit in dir entry  1-21  012000 1-22 bool utilorg,12000 origin of utility package  1-23  1-24 " End of include file ...... bosequ.incl.alm  30  31 " 32  33 include ntape_equ  2-1  2-2 " Begin include file ...... ntape_equ.incl.alm  2-3 " Last modified 11/25/75 by Noel I. Morris  2-4 " Modified 8/79 by R.J.C. Kissel to use expanded BOS.  2-5 " Modified 2/80 by R.J.C. Kissel to handle 6250 bpi operation.  2-6  2-7 " Transfer Vector values:  2-8  006000 2-9 bool ntape_org,6000 start of tape package  2-10  006000 2-11 equ taperopen,ntape_org+0  006001 2-12 equ tapewopen,ntape_org+1  006002 2-13 equ taper,ntape_org+2  006003 2-14 equ tapew,ntape_org+3  006004 2-15 equ inittape,ntape_org+4  006005 2-16 equ opentaper,ntape_org+5  006006 2-17 equ opentapew,ntape_org+6  006007 2-18 equ runtape,ntape_org+7  006010 2-19 equ endtape,ntape_org+8  2-20  2-21 " Queue entry codes:  2-22  000010 2-23 bool tpeot,10 EOT flag  000004 2-24 bool tpskip,4 skip queue entry  000002 2-25 bool tpdone,2 queue entry done  000001 2-26 bool tpstat,1 error in entry  2-27  2-28 " format of queue:  2-29 " 0/ zero next_entry,flags  2-30 " 1/ vfd 36/id  2-31 " 2/ vfd 3/data_seg,15/data_offset,18/data_length  2-32  2-33 " End of include file ...... ntape_equ.incl.alm 2-34  34  35 include bos_common 3-1 "  3-2 " Begin include file ...... bos_common.incl.alm 3-3 " Modified on 8/31/76 by N. I. Morris  3-4 " Modified on 9/01/80 by Sherman D. Sprague for DPS8 operation  3-5 " Modified on 5/26/82 by Sherman D. Sprague to lengthen config size 3-6 " Modified on 3/01/83 by Sherman D. Sprague to lengthen dirlen  3-7 " MACHINE CONDITIONS AREA  3-8 " Its length is "storlen". 3-9  000000 3-10 equ amptwregs,0 Ass. Mem PTW registers  000100 3-11 equ amptwptr,64 Ass. Mem PTW pointers 000200 3-12 equ amsdwregs,128 Ass. Mem SDW registers  000400 3-13 equ amsdwptr,256 Ass. Mem SDW pointers  000500 3-14 equ ouhist,320 operations hist regs  000700 3-15 equ cuhist,448 control unit hist regs  001100 3-16 equ eishist,576 eis hist regs  001300 3-17 equ aphist,704 appending unit hist regs  001500 3-18 equ prs,832 pointer regs  001520 3-19 equ regs,848 sreg 001530 3-20 equ low_order_port,856 port to read clock from 001532 3-21 equ mctime,858 bootload memory clock  001540 3-22 equ scu,864  001550 3-23 equ mcm,872 memory masks 8 ports 001570 3-24 equ dbr,888  001572 3-25 equ intrpts,890 waiting interrupts 001573 3-26 equ bar,891 bar  001574 3-27 equ modereg,892 processor & cache mode registers  001576 3-28 equ faultreg,894 processor fault register  001600 3-29 equ ptrlen,896 pointer-lengths EIS 0 mod 8 001610 3-30 equ coreblocks,904 array of port information  3-31 " Bits 0-17 => num 1st 64-word block  3-32 " Bits 18-35 => num of 64-word blocks  3-33 " (-1) => no mem on this port  001620 3-34 equ lowport_cfg,912 Saved CFG from bootload SCU  3-35  002000 3-36 equ storlen,1024  3-37  3-38  3-39  3-40 " BOS COMMAND DIRECTORY 3-41 " Its length is "dirlen".  3-42  002000 3-43 equ dir,1024 ( 0-23) => sector # of first sector on BOS disk  3-44 " (24-35) => # of sectors in BOS common  002001 3-45 equ used,dir+1 ( 0-23) => # of next available sector on BOS disk  002002 3-46 equ useable,dir+2 ( 0-23) => first unavailable sector on BOS disk  002003 3-47 equ corearea,dir+3 ( 0-23) => starting sector of Multics core image  3-48 " (24-35) => # of sectors in Multics core image  002004 3-49 equ setuparea,dir+4 Sector and length of setup 002005 3-50 equ utilarea,dir+5 where utility package is kept  002010 3-51 equ iom_mxbase,dir+8 IOM IMW area address  002011 3-52 equ iom_mbbase,dir+9 IOM mailbox base  002012 3-53 equ bos_dvt,dir+10 BOS disk loc: (o3/iom,o6/chn,o9/drive,o18/devtype)  002013 3-54 equ unitgroup,dir+11 disk unitgroup (device no. or area no.)  002014 3-55 equ diskchanno,dir+12 channel to be used for disk  002015 3-56 equ tapechanno,dir+13 channel # for tapes  002016 3-57 equ rdrchanno,dir+14 channel number for card reader  002017 3-58 equ ttychanno,dir+15 channel # for operator's tty  002020 3-59 equ quietsw,dir+16 if on, don't print card and macro commands  002021 3-60 equ inputsw,dir+17 read from tty, cards, macros  002022 3-61 equ macroloc,dir+18 disk addr, buffer index of macro file  002023 3-62 equ fdump_state,dir+19 completion flag for last FDUMP  002024 3-63 equ d355_state,dir+20 = 1 if DataNet 355 loaded successfully  002025 3-64 equ skipsw,dir+21 if on, skip runcom lines 002026 3-65 equ ttypmtsw,dir+22 if on, prompt  002027 3-66 equ curtcmd,dir+23 current bos command 002030 3-67 equ readysw,dir+24 if on, print ready message  002032 3-68 equ cmdlst,dir+26 list of commands 3-69  000600 3-70 equ dirlen,384 3-71  3-72  3-73  3-74 " MACRO BUFFER AREA 3-75  002600 3-76 equ macrobuf,dir+dirlen io buffer for macro files 002700 3-77 equ macroline,macrobuf+64 runcom command line 002716 3-78 equ macroargs,macroline+14 argument descriptors for runcom  3-79  3-80  3-81  3-82 " CONFIGURATION CARD AREA  3-83 " Its length is 2048 words.  3-84  003000 3-85 equ conf,macrobuf+128 start of configuration info  007000 3-86 equ econf,conf+2048 end of configuration info  000020 3-87 equ confl,16 length of each line  3-88  3-89  007000 3-90 equ seg6length,econf length of bos_common area segment 3-91  3-92 " End of include file ...... bos_common.incl.alm  3-93  36  37  38 " 39  000000 0a 000320 7420 00 40 stx2 x2  000001 aa 012271 7020 00 41 tsx2 init_io  42  000002 aa 006000 6360 00 43 eaq ntape_org location for tape package in QU 000003 0a 002370 2350 00 44 lda =h ntape  000004 aa 012206 7020 00 45 tsx2 ldcom load the tape package  000005 0a 000320 7100 00 46 tra x2 47  000006 aa 012245 7020 00 48 tsx2 ttyinit  000007 0a 000320 0000 00 49 arg ttyrequest 50  000010 0a 000320 2220 00 51 ldx2 x2 scan arg list 000011 aa 7 00000 2201 12 52 ldx0 mem|0,2  53  000012 aa 000001 6200 10 54 arglp: eax0 1,0 next arg  000013 aa 7 00000 2351 10 55 lda mem|0,0  000014 0a 002371 1150 00 56 cmpa =-1  000015 0a 000066 6000 00 57 tze argend 58  000016 0a 002372 1150 00 59 cmpa =h save  000017 0a 000022 6010 00 60 tnz *+3  000020 0a 000350 5540 00 61 stc1 savesw if save, set switch  000021 0a 000012 7100 00 62 tra arglp and get next arg  63  000022 0a 002373 1150 00 64 cmpa =hrestor  000023 0a 000026 6010 00 65 tnz *+3  000024 0a 000350 4500 00 66 stz savesw 000025 0a 000012 7100 00 67 tra arglp  68  000026 0a 002374 1150 00 69 cmpa =h d=800 800 bpi no imagination !!  000027 0a 000033 6010 00 70 tnz *+4  000030 aa 000060 2350 07 71 lda d8,dl 000031 0a 000362 7550 00 72 sta density  000032 0a 000012 7100 00 73 tra arglp  74  000033 0a 002375 1150 00 75 cmpa =hd=1600 operator want 1600 bpi !!  000034 0a 000040 6010 00 76 tnz *+4  000035 aa 000065 2350 07 77 lda d16,dl 000036 0a 000362 7550 00 78 sta density  000037 0a 000012 7100 00 79 tra arglp  80  000040 0a 002376 1150 00 81 cmpa =hd=6250 operator has decided on 6250  000041 0a 000045 6010 00 82 tnz *+4 bpi, is this good ??  000042 aa 000041 2350 07 83 lda d62,dl 000043 0a 000362 7550 00 84 sta density  000044 0a 000012 7100 00 85 tra arglp  86  000045 0a 002377 1150 00 87 cmpa =h go  000046 0a 000051 6010 00 88 tnz *+3  000047 0a 000352 5540 00 89 stc1 gosw  000050 0a 000012 7100 00 90 tra arglp  91  000051 aa 7 00020 2361 10 92 ldq mem|arglen+1,0 get decimal conversion for tape number  000052 0a 000057 6044 00 93 tmoz arger 000053 aa 000020 1160 07 94 cmpq =16,dl  000054 0a 000057 6054 00 95 tpnz arger 000055 0a 000354 7560 00 96 stq tapen store tape number  000056 0a 000012 7100 00 97 tra arglp  98  000057 0a 000354 7550 00 99 arger: sta tapen store in temp  000060 aa 012241 7020 00 100 tsx2 erpt  000061 aa 012 136 147 040 101 acc '^g unknown'  000062 aa 165 156 153 156 000063 aa 157 167 156 000 000064 0a 000354 0000 00 102 arg tapen  000065 0a 000320 7100 00 103 tra x2  000066 104 argend: 000066 aa 006004 7020 00 105 tsx2 inittape  000067 0a 000362 0000 00 106 arg density  000070 0a 000320 7100 00 107 tra x2 000071 0a 000320 7100 00 108 tra x2 109  000072 0a 000350 2340 00 110 szn savesw save or restor 000073 0a 000143 6000 00 111 tze restor 112  000074 0a 000126 6270 00 113 eax7 sio set I/O procedure for save  000075 0a 000351 7470 00 114 stx7 io ..  115  000076 aa 006001 7020 00 116 tsx2 tapewopen open tape for writing  000077 0a 000354 0000 00 117 arg tapen  118  000100 aa 010000 2360 07 119 ldq dir*4,dl get number of characters to move in QL  000101 aa 0 00040 1005 40 120 mlr (pr,rl),(rl) copy the machine conditions  000102 aa 600000 000006 121 desc9a com|0,ql  000103 0a 000370 000006 122 desc9a header,ql  123  000104 aa 000007 6270 00 124 eax7 nblocks-1 sort the coreblocks array  000105 aa 777777 6260 17 125 scb1: eax6 -1,7 simple interchange sort  000106 0a 002200 2350 17 126 scb2: lda header+coreblocks,7  000107 0a 002200 1150 16 127 cmpa header+coreblocks,6  000110 0a 000114 6030 00 128 trc *+4 logical compare  000111 0a 002200 2360 16 129 ldq header+coreblocks,6  000112 0a 002200 7550 16 130 sta header+coreblocks,6  000113 0a 002200 7560 17 131 stq header+coreblocks,7  132  000114 aa 777777 6260 16 133 eax6 -1,6  000115 0a 000106 6050 00 134 tpl scb2  000116 aa 777777 6270 17 135 eax7 -1,7  000117 0a 000105 6054 00 136 tpnz scb1  137  000120 aa 000000 2350 07 138 lda =0,dl write header  000121 aa 006003 7020 00 139 tsx2 tapew 000122 aa 3 00370 0001 00 140 arg pgm|header 000123 aa 002000 0000 00 141 arg nhead  000124 0a 000340 7100 00 142 tra fioe  143  000125 0a 000212 7100 00 144 tra main join common loop 145  146 "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*  147  000126 0a 000353 2340 00 148 sio: szn notincoresw is this block in core? 000127 0a 000134 6000 00 149 tze sincore if so, skip disk read 150  000130 0a 000357 2350 00 151 lda diskadd get disk address for read 000131 aa 012234 7020 00 152 tsx2 rdsec and read from BOS saved core area  000132 aa 1 00000 0001 00 153 arg tmp|0  000133 0a 000340 7100 00 154 tra fioe  155  000134 0a 000355 2350 00 156 sincore: lda id get ID for this block  000135 aa 010000 2750 03 157 ora =o10000,du add identifier bit  000136 aa 006003 7020 00 158 tsx2 tapew write block onto tape  000137 aa 1 00000 0001 00 159 arg tmp|0  000140 aa 002000 0000 00 160 arg 1024  000141 0a 000340 7100 00 161 tra fioe  162  000142 0a 000255 7100 00 163 tra end rejoin common loop  164  000143 0a 000175 6270 00 165 restor: eax7 rio set I/O procedure for restor  000144 0a 000351 7470 00 166 stx7 io ..  167  000145 aa 006000 7020 00 168 tsx2 taperopen open tape for reading 000146 0a 000354 0000 00 169 arg tapen  170  000147 aa 000000 2350 07 171 lda =0,dl read header 000150 aa 006002 7020 00 172 tsx2 taper 000151 aa 3 00370 0001 00 173 arg pgm|header 000152 aa 002000 0000 00 174 arg nhead  000153 0a 000340 7100 00 175 tra fioe  176  000154 aa 000007 6270 00 177 eax7 nblocks-1 Make sure required core exists.  000155 0a 002200 2350 17 178 chec1: lda header+coreblocks,7 Get block descriptor word.  000156 0a 002371 1150 00 179 cmpa =-1 If no more core, 000157 0a 000170 6000 00 180 tze gec stop looking. 000160 aa 000007 6260 00 181 eax6 nblocks-1 Search through machine conditions. 000161 aa 6 01610 1151 16 182 chec2: cmpa com|coreblocks,6 Look for matching word.  000162 0a 000166 6000 00 183 tze check_ok  000163 aa 777777 6260 16 184 eax6 -1,6  000164 0a 000161 6050 00 185 tpl chec2  000165 0a 000323 7100 00 186 tra nec Match not found. Cannot proceed.  187  000166 aa 777777 6270 17 188 check_ok: eax7 -1,7 Try next block.  000167 0a 000155 6050 00 189 tpl chec1 ..  190  191 " Move machine conditions.  192  000170 aa 006540 2360 07 193 gec: ldq low_order_port*4,dl No. of characters to copy in QL.  000171 aa 000140 1004 40 194 mlr (rl),(pr,rl) Copy back the machine conditions. 000172 0a 000370 000006 195 desc9a header,ql  000173 aa 600000 000006 196 desc9a com|0,ql  197  000174 0a 000212 7100 00 198 tra main join common code 199  200 "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*  201  000175 0a 000355 2350 00 202 rio: lda id get ID of this block  000176 aa 010000 2750 03 203 ora =o10000,du add identifier bit  000177 aa 006002 7020 00 204 tsx2 taper read in from tape  000200 aa 1 00000 0001 00 205 arg tmp|0  000201 aa 002000 0000 00 206 arg 1024  000202 0a 000340 7100 00 207 tra fioe  208  000203 0a 000353 2340 00 209 szn notincoresw if in core,  000204 0a 000255 6000 00 210 tze end all finished with this block  211  000205 0a 000357 2350 00 212 lda diskadd get address of block on disk  000206 aa 012235 7020 00 213 tsx2 wtsec write into BOS core saved area 000207 aa 1 00000 0001 00 214 arg tmp|0  000210 0a 000340 7100 00 215 tra fioe  000211 0a 000255 7100 00 216 tra end rejoin common code  217  000212 218 main:  000212 0a 000360 4500 00 219 stz port start core loop  000213 220 blockloop:  000213 0a 000360 7200 00 221 lxl0 port  000214 0a 002200 2350 10 222 lda header+coreblocks,0 does core block exist  000215 0a 002371 1150 00 223 cmpa =-1  000216 0a 000266 6000 00 224 tze endblock Skip it if not.  225  000217 aa 000022 7730 00 226 lrl 18 Get starting address.  000220 aa 000006 7350 00 227 als 6  000221 0a 000355 7550 00 228 sta id 000222 aa 000022 7370 00 229 lls 18 Now get final address. 000223 aa 777777 3750 07 230 ana -1,dl  000224 aa 000006 7350 00 231 als 6  000225 0a 000355 0750 00 232 ada id 000226 0a 000356 7550 00 233 sta endid  234  235 " Loop to process all of one memory block (port).  236  000227 aa 6 02003 2351 00 237 loop: lda com|corearea on disk  000230 aa 007777 3750 07 238 ana =o7777,dl  000231 aa 000006 7350 00 239 als 6  000232 0a 000355 1150 00 240 cmpa id  000233 0a 000245 6044 00 241 tmoz incore  242  000234 0a 000353 7500 00 243 stc2 notincoresw set switch to indicate on disk  000235 0a 000355 2350 00 244 lda id 000236 aa 000006 7350 00 245 als 12-6 compute secondary store address  000237 aa 6 02003 0751 00 246 ada com|corearea  000240 0a 002400 3750 00 247 ana =o777777770000 000241 aa 000020 2750 07 248 ora =16,dl 000242 0a 000357 7550 00 249 sta diskadd save device address of core block 000243 aa 0 00004 2371 00 250 ldaq ds|bf*2 make tmp SDW point to buffer 000244 0a 000252 7100 00 251 tra setsdw .. 252  000245 0a 000353 4500 00 253 incore: stz notincoresw reset switch  000246 0a 000355 2350 00 254 lda id if in core, make temp seg point to it  000247 aa 000014 7350 00 255 als sdw.add_shift  000250 aa 000000 2360 07 256 ldq 0,dl  000251 0a 000346 2770 00 257 oraq rwu_sdw  000252 aa 0 00002 7571 00 258 setsdw: staq ds|tmp*2  000253 aa 000000 5320 00 259 cams  260  000254 0a 000351 7100 20 261 tra io,* Go to appropriate I/O routine  262  000255 0a 000355 2350 00 263 end: lda id bump core address  000256 aa 002000 0750 07 264 ada =1024,dl  000257 0a 000355 7550 00 265 sta id 000260 0a 000356 1150 00 266 cmpa endid Checkfor limit on this port.  000261 0a 000227 6040 00 267 tmi loop More left.  268  000262 0a 000360 0540 00 269 aos port  000263 0a 000360 2350 00 270 lda port Have we done all possible ports yet? 000264 aa 000010 1150 07 271 cmpa nblocks,dl  000265 0a 000213 6040 00 272 tmi blockloop Go do next one. 273  000266 274 endblock:  000266 aa 006010 7020 00 275 tsx2 endtape if done, close out tape  276  000267 0a 000350 2340 00 277 szn savesw doing save?  000270 0a 000320 6010 00 278 tnz x2 if so, all finished  279  000271 aa 0 00012 2351 00 280 lda ds|fgb*2 get abs addr of flagbox  000272 aa 000022 7710 00 281 arl 12+6 rught-justify and divide by 64  000273 aa 000014 7350 00 282 als 12 to get disk sector offset  000274 aa 6 02003 0351 00 283 adla com|corearea compute disk address 000275 0a 002400 3750 00 284 ana =o777777770000 mask out count  000276 aa 000020 2750 07 285 ora 16,dl read one page  000277 aa 012234 7020 00 286 tsx2 rdsec into bf  000300 aa 2 00000 0111 00 287 nop bf|0  000301 0a 000340 7100 00 288 tra fioe  289  000302 aa 0 00012 2371 00 290 ldaq ds|fgb*2 get flagbox SDW 000303 aa 000012 7710 00 291 arl 12-2 compute character offset of org  000304 aa 000376 3750 07 292 ana =o376,dl within buffer  000305 aa 377770 3760 03 293 anq =o377770,du mask the bound 000306 aa 000010 0360 03 294 adlq =o10,du compute length of segment  000307 aa 000017 7720 00 295 qrl 21-4-2 compute number of characters to copy  000310 aa 0 00140 1005 45 296 mlr (pr,rl,al),(pr,rl) copy the flagbox image back into toehold  000311 aa 200000 000006 297 desc9a bf|0,ql 000312 aa 500000 000006 298 desc9a fgb|0,ql  299  000313 0a 000352 2340 00 300 szn gosw doing restore. should we wait?  000314 0a 000320 6000 00 301 tze x2 if so, return to BOS main control  302  000315 0a 000320 2220 00 303 ldx2 x2 restore X2  000316 0a 002401 2350 00 304 lda =hcontin chain to CONTIN command  000317 aa 7 00001 7101 12 305 tra mem|1,2 and return to main control  306  000320 307 ttyrequest: 000320 0a 000320 6220 00 308 x2: eax2 *  000321 aa 000001 3350 07 309 lca =1,dl return with no contin  000322 aa 7 00001 7101 12 310 tra mem|1,2  311  000323 0a 000361 7550 00 312 nec: sta temp save descriptor word for block  000324 aa 012241 7020 00 313 tsx2 erpt need more core  000325 aa 042 143 157 162 314 acc 'core too small. need coreblock ^w.'  000326 aa 145 040 164 157 000327 aa 157 040 163 155 000330 aa 141 154 154 056 000331 aa 040 156 145 145 000332 aa 144 040 143 157 000333 aa 162 145 142 154 000334 aa 157 143 153 040 000335 aa 136 167 056 000 000336 0a 000361 0000 00 315 arg temp  000337 0a 000320 7100 00 316 tra x2 317  000340 aa 012241 7020 00 318 fioe: tsx2 erpt  000341 aa 016 146 141 164 319 acc 'fatal io error'  000342 aa 141 154 040 151 000343 aa 157 040 145 162 000344 aa 162 157 162 000 000345 0a 000320 7100 00 320 tra x2  321  322 even  000346 aa 000000 000004 323 rwu_sdw: vfd 24/0,9/0,3/4,15/(1024/16)-1,o6/52,15/0 000347 aa 000775 200000 000350 324 savesw: bss ,1  000351 325 io: bss ,1  000352 aa 000000 000000 326 gosw: oct 0 000353 327 notincoresw:  000353 328 bss ,1 000354 aa 000000 000001 329 tapen: dec 1  000355 330 id: bss ,1  000356 331 endid: bss ,1  000357 332 diskadd: bss ,1 000360 333 port: bss ,1  000361 334 temp: bss ,1  000362 aa 000000 000065 335 density: oct 65 1600 bpi is default 336  000363 aa 000000 0110 03 337 eight  000364 aa 000000 0110 03 000365 aa 000000 0110 03 000366 aa 000000 0110 03 000367 aa 000000 0110 03 000370 338 bss header,dir 002000 339 equ nhead,*-header 340  341  342  343 " 344  345 include bos_sdw  4-1 "  4-2 " BEGIN INCLUDE FILE sdw.incl.alm 02/12/74  4-3 "  000014 4-4 equ sdw.add_shift,12  007000 4-5 bool sdw.r1,007000 Ringbrack 1 (DL)  000700 4-6 bool sdw.r2,000700 Ringbrack 2 (DL)  000070 4-7 bool sdw.r3,000070 Ringbrack 3 (DL)  4-8  000004 4-9 bool sdw.df,000004 Directed fault bit (0 -> fault)  000003 4-10 bool sdw.fault_code,000003 Number of directed fault  4-11  377770 4-12 bool sdw.bound,377770 Bound field (DU)  000004 4-13 bool sdw.read,000004 Read permission bit (DU) 000002 4-14 bool sdw.execute,000002 Execute permission bit (DU)  000001 4-15 bool sdw.write,000001 Write permission bit (DU)  4-16  400000 4-17 bool sdw.privileged,400000 Privileged bit (DL) 200000 4-18 bool sdw.unpaged,200000 Unpaged bit (DL)  100000 4-19 bool sdw.entry_bound_sw,100000 Entry bound switch (DL) 040000 4-20 bool sdw.cache,040000 Cache enabled bit (DL)  037777 4-21 bool sdw.entry_bound,037777 Entry bound (DL)  4-22  4-23 "  4-24 " END INCLUDE FILE sdw.incl.alm  4-25 "  346  347 include bos_tv 5-1 " 5-2 " Begin include file ...... bos_tv.incl.alm 5-3 " Created in November 1971 by N. I. Morris. 5-4 " Modified 9/9/76 by Noel I. Morris 5-5 " Modified by Sherman D. Sprague 02/11/81 for DPS8 support. 5-6 " Modified November 1981 by C. Hornig to remove iom_connect_rel.  5-7 " Modified January 1982 by J. Bongiovanni to add getport_info  5-8 " Modified May 1982 by Sherman D. Sprague to add getmpc.  5-9  5-10 " BOS Utility Package Transfer Vector.  5-11  012000 5-12 equ pagectl,utilorg  012001 5-13 equ line,pagectl+1 012040 5-14 equ arg,line+31  012060 5-15 equ darg,arg+arglen+1  012100 5-16 equ earg,darg+arglen+1 012120 5-17 equ fltscu,earg+arglen+1  5-18  012200 5-19 equ tv_org,utilorg+128 5-20  012200 5-21 equ scan,tv_org+0  012201 5-22 equ arg_count,tv_org+1 012202 5-23 equ nextline,tv_org+2  012203 5-24 equ nlraw,tv_org+3 012204 5-25 equ search,tv_org+4  012205 5-26 equ makefil,tv_org+5  012206 5-27 equ ldcom,tv_org+6 012207 5-28 equ getsec,tv_org+7  012210 5-29 equ cvinit,tv_org+8  012211 5-30 equ rdev,tv_org+9  012212 5-31 equ wdev,tv_org+10 012213 5-32 equ phybos,tv_org+11  012214 5-33 equ bosphy,tv_org+12  012215 5-34 equ phyadd,tv_org+13  012216 5-35 equ mulbos,tv_org+14  012217 5-36 equ bosmul,tv_org+15  012220 5-37 equ lookup_devmodel,tv_org+16  012221 5-38 equ makesdw,tv_org+17  012222 5-39 equ argbos,tv_org+18  012223 5-40 equ argmul,tv_org+19  012224 5-41 equ amdvt,tv_org+20  012225 5-42 equ amfirst,tv_org+21  012226 5-43 equ amlast,tv_org+22  012227 5-44 equ cvnamla,tv_org+23  012230 5-45 equ sect_per_cyl_list,tv_org+24  012231 5-46 equ sect_per_dev_list,tv_org+25  012232 5-47 equ rec_per_dev_list,tv_org+26 012233 5-48 equ amaxio,tv_org+27  012234 5-49 equ rdsec,tv_org+28  012235 5-50 equ wtsec,tv_org+29  012236 5-51 equ disk_brief,tv_org+30  012237 5-52 equ itaper,tv_org+31  012240 5-53 equ itapew,tv_org+32  012241 5-54 equ erpt,tv_org+33 012242 5-55 equ ercv,tv_org+34 012243 5-56 equ erbuf,tv_org+35  012244 5-57 equ type,tv_org+36 012245 5-58 equ ttyinit,tv_org+37  012246 5-59 equ readcd,tv_org+38  012247 5-60 equ readtty,tv_org+39  012250 5-61 equ getprt,tv_org+40  012251 5-62 equ punch,tv_org+41  012252 5-63 equ octwd,tv_org+42  012253 5-64 equ geas,tv_org+43 012254 5-65 equ geastab,tv_org+44  012255 5-66 equ asge,tv_org+45 012256 5-67 equ asgetab,tv_org+46  012257 5-68 equ ljust,tv_org+47  012260 5-69 equ rjust,tv_org+48  012261 5-70 equ bzel,tv_org+49 012262 5-71 equ stripa,tv_org+50  012263 5-72 equ stripg,tv_org+51  012264 5-73 equ getconf,tv_org+52  012265 5-74 equ getmore,tv_org+53  012266 5-75 equ getperiph,tv_org+54  012267 5-76 equ rdclock,tv_org+55  012270 5-77 equ cvclock,tv_org+56  012271 5-78 equ init_io,tv_org+57  012272 5-79 equ connect_iom,tv_org+58  012273 5-80 equ getmpc,tv_org+59  012274 5-81 equ check_status,tv_org+60 012275 5-82 equ get_special_interrupt,tv_org+61  012276 5-83 equ get_status_interrupt,tv_org+62 012277 5-84 equ xio_wait,tv_org+63 012300 5-85 equ initint,tv_org+64  012301 5-86 equ wantflt,tv_org+65  012302 5-87 equ intno,tv_org+66  012303 5-88 equ intrpts1,tv_org+67 012304 5-89 equ hexwd,tv_org+68  012305 5-90 equ find_disk,tv_org+69  012306 5-91 equ find_root,tv_org+70  012307 5-92 equ find_part,tv_org+71  012310 5-93 equ check_status_no_stat,tv_org+72 012311 5-94 equ check_special_status,tv_org+73 012312 5-95 equ check_cpu_type,tv_org+74  012313 5-96 equ getportinfo,tv_org+75  5-97  5-98 " End of include file ...... bos_tv.incl.alm  5-99  348  349  350 end  LITERALS 002370 aa 204563 214725 002371 aa 777777 777777 002372 aa 202062 216525 002373 aa 512562 634651 002374 aa 202475 100000 002375 aa 247501 060000 002376 aa 247506 020500 002377 aa 202020 202746 002400 aa 777777 770000 002401 aa 234645 633145 NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 002402 5a 000003 000000 002403 5a 000017 600000 002404 aa 000000 000000 002405 55 000010 000002 002406 5a 000002 400003 002407 55 000006 000010 002410 aa 004 143 157 162 002411 aa 145 000 000 000 002412 55 000002 000003 002413 6a 000000 400002 002414 55 000013 000003 002415 aa 014 163 171 155 symbol_table  002416 aa 142 157 154 137 002417 aa 164 141 142 154 002420 aa 145 000 000 000 DEFINITIONS HASH TABLE  002421 aa 000000 000015 002422 aa 000000 000000 002423 aa 000000 000000 002424 aa 000000 000000 002425 aa 000000 000000 002426 aa 000000 000000 002427 aa 000000 000000 002430 5a 000010 000000 002431 aa 000000 000000 002432 aa 000000 000000 002433 aa 000000 000000 002434 aa 000000 000000 002435 aa 000000 000000 002436 aa 000000 000000 NO EXTERNAL NAMES  NO TRAP POINTER WORDS  TYPE PAIR BLOCKS  002437 aa 000001 000000 002440 aa 000000 000000 INTERNAL EXPRESSION WORDS 002441 aa 000000 000000 LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 002402 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 000004 000004 aa 000000 112143 000005 aa 305203 523135 000006 aa 000000 112272 000007 aa 223752 153371 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000010 000002 000016 aa 000064 000000 000017 aa 000000 000343 000020 aa 000000 000177 000021 aa 000000 000326 000022 aa 000331 000177 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 040066 056066 000030 aa 040040 116157 000031 aa 166145 155142 000032 aa 145162 040061 000033 aa 071070 062040 000034 aa 110157 154155 000035 aa 163164 145144 000036 aa 164056 123171 000037 aa 163115 141151 000040 aa 156164 056141 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 154151 163164 000045 aa 040040 040040 000046 aa 040040 040040 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 000006 000066 aa 000116 000025 000067 aa 122721 273005 000070 aa 000000 112272 000071 aa 215444 400000 000072 aa 000124 000040 000073 aa 113400 415301 000074 aa 000000 111341 000075 aa 220414 400000 000076 aa 000134 000043 000077 aa 074654 553115 000100 aa 000000 107470 000101 aa 740072 400000 000102 aa 000145 000044 000103 aa 121622 277475 000104 aa 000000 112162 000105 aa 321563 400000 000106 aa 000156 000041 000107 aa 105543 476637 000110 aa 000000 110555 000111 aa 260135 200000 000112 aa 000167 000040 000113 aa 110235 072677 000114 aa 000000 111024 000115 aa 524460 600000 000116 aa 076163 160145 >spec>h>3.17>core.alm  000117 aa 143076 150076 000120 aa 063056 061067 000121 aa 076143 157162 000122 aa 145056 141154 000123 aa 155040 040040 000124 aa 076154 144144 >ldd>bos>include>bosequ.incl.alm  000125 aa 076142 157163 000126 aa 076151 156143 000127 aa 154165 144145 000130 aa 076142 157163 000131 aa 145161 165056 000132 aa 151156 143154 000133 aa 056141 154155 000134 aa 076154 144144 >ldd>bos>include>ntape_equ.incl.alm 000135 aa 076142 157163 000136 aa 076151 156143 000137 aa 154165 144145 000140 aa 076156 164141 000141 aa 160145 137145 000142 aa 161165 056151 000143 aa 156143 154056 000144 aa 141154 155040 000145 aa 076154 144144 >ldd>bos>include>bos_common.incl.alm  000146 aa 076142 157163 000147 aa 076151 156143 000150 aa 154165 144145 000151 aa 076142 157163 000152 aa 137143 157155 000153 aa 155157 156056 000154 aa 151156 143154 000155 aa 056141 154155 000156 aa 076154 144144 >ldd>bos>include>bos_sdw.incl.alm  000157 aa 076142 157163 000160 aa 076151 156143 000161 aa 154165 144145 000162 aa 076142 157163 000163 aa 137163 144167 000164 aa 056151 156143 000165 aa 154056 141154 000166 aa 155040 040040 000167 aa 076154 144144 >ldd>bos>include>bos_tv.incl.alm  000170 aa 076142 157163 000171 aa 076151 156143 000172 aa 154165 144145 000173 aa 076142 157163 000174 aa 137164 166056 000175 aa 151156 143154 000176 aa 056141 154155 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number  12233 amaxio bos_tv: 48. 12224 amdvt bos_tv: 41. 12225 amfirst bos_tv: 42. 12226 amlast bos_tv: 43. 100 amptwptr bos_common: 11. 0 amptwregs bos_common: 10. 400 amsdwptr bos_common: 13. 200 amsdwregs bos_common: 12. 1300 aphist bos_common: 17. 12040 arg bos_tv: 14, 15.  12222 argbos bos_tv: 39. 66 argend core: 57, 104.  57 arger core: 93, 95, 99. 17 arglen core: 92, bosequ: 17, bos_tv: 15, 16, 17. 12 arglp core: 54, 62, 67, 73, 79, 85, 90, 97.  12223 argmul bos_tv: 40. 12201 arg_count bos_tv: 22. 12255 asge bos_tv: 66. 12256 asgetab bos_tv: 67. 1573 bar bos_common: 26. 2 bf core: 250, 287, 297, bosequ: 9. 213 blockloop core: 220, 272.  12217 bosmul bos_tv: 36. 12214 bosphy bos_tv: 33. 2012 bos_dvt bos_common: 53. 12261 bzel bos_tv: 70. 155 chec1 core: 178, 189.  161 chec2 core: 182, 185.  12312 check_cpu_type bos_tv: 95. 166 check_ok core: 183, 188.  12311 check_special_status bos_tv: 94. 12274 check_status bos_tv: 81. 12310 check_status_no_stat bos_tv: 93. 2032 cmdlst bos_common: 68. 6 com core: 121, 182, 196, 237, 246, 283,  bosequ: 14. 3000 conf bos_common: 85, 86.  20 confl bos_common: 87. 12272 connect_iom bos_tv: 79. 2003 corearea core: 237, 246, 283, bos_common: 47. 1610 coreblocks core: 126, 127, 129, 130, 131, 178, 182, 222,  bos_common: 30. 700 cuhist bos_common: 15. 2027 curtcmd bos_common: 66. 12270 cvclock bos_tv: 77. 12210 cvinit bos_tv: 29. 12227 cvnamla bos_tv: 44. 65 d16 core: 26, 77.  2024 d355_state bos_common: 63. 41 d62 core: 27, 83.  60 d8 core: 25, 71.  12060 darg bos_tv: 15, 16.  1570 dbr bos_common: 24. 362 density core: 72, 78, 84, 106, 335. 2000 dir core: 119, 338,  bos_common: 43, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56,  57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 76. 600 dirlen bos_common: 70, 76.  357 diskadd core: 151, 212, 249, 332.  2014 diskchanno bos_common: 55. 12236 disk_brief bos_tv: 51. 0 ds core: 250, 258, 280, 290,  bosequ: 7. 12100 earg bos_tv: 16, 17.  7000 econf bos_common: 86, 90.  1100 eishist bos_common: 16. 255 end core: 163, 210, 216, 263.  266 endblock core: 224, 274.  356 endid core: 233, 266, 331. 6010 endtape core: 275, ntape_equ: 19. 12243 erbuf bos_tv: 56. 12242 ercv bos_tv: 55. 12241 erpt core: 100, 313, 318, bos_tv: 54. 1576 faultreg bos_common: 28. 2023 fdump_state bos_common: 62. 5 fgb core: 280, 290, 298, bosequ: 13. 12305 find_disk bos_tv: 90. 12307 find_part bos_tv: 92. 12306 find_root bos_tv: 91. 340 fioe core: 142, 154, 161, 175, 207, 215, 288, 318.  2000 firmware_bit bosequ: 20. 12120 fltscu bos_tv: 17. 12253 geas bos_tv: 64. 12254 geastab bos_tv: 65. 170 gec core: 180, 193.  12264 getconf bos_tv: 73. 12265 getmore bos_tv: 74. 12273 getmpc bos_tv: 80. 12266 getperiph bos_tv: 75. 12313 getportinfo bos_tv: 96. 12250 getprt bos_tv: 61. 12207 getsec bos_tv: 28. 12275 get_special_interrupt bos_tv: 82. 12276 get_status_interrupt bos_tv: 83. 352 gosw core: 89, 300, 326. 370 header core: 122, 126, 127, 129, 130, 131, 140, 173, 178, 195, 222, 338, 339. 12304 hexwd bos_tv: 89. 355 id core: 156, 202, 228, 232, 240, 244, 254, 263, 265, 330.  245 incore core: 241, 253.  12300 initint bos_tv: 85. 6004 inittape core: 105, ntape_equ: 15. 12271 init_io core: 41, bos_tv: 78. 2021 inputsw bos_common: 60. 12302 intno bos_tv: 87. 1572 intrpts bos_common: 25. 12303 intrpts1 bos_tv: 88. 351 io core: 114, 166, 261, 325.  2011 iom_mbbase bos_common: 52. 2010 iom_mxbase bos_common: 51. 12237 itaper bos_tv: 52. 12240 itapew bos_tv: 53. 12206 ldcom core: 45, bos_tv: 27. 12001 line bos_tv: 13, 14.  12257 ljust bos_tv: 68. 12220 lookup_devmodel bos_tv: 37. 227 loop core: 237, 267.  1620 lowport_cfg bos_common: 34. 1530 low_order_port core: 193, bos_common: 20. 2716 macroargs bos_common: 78. 2600 macrobuf bos_common: 76, 77, 85. 2700 macroline bos_common: 77, 78.  2022 macroloc bos_common: 61. 212 main core: 144, 198, 218. 12205 makefil bos_tv: 26. 12221 makesdw bos_tv: 38. 1550 mcm bos_common: 23. 1532 mctime bos_common: 21. 7 mem core: 52, 55, 92, 305, 310, bosequ: 15. 1574 modereg bos_common: 27. 12216 mulbos bos_tv: 35. 10 nblocks core: 23, 124, 177, 181, 271. 323 nec core: 186, 312.  12202 nextline bos_tv: 23. 2000 nhead core: 141, 174, 339. 12203 nlraw bos_tv: 24. 353 notincoresw core: 148, 209, 243, 253, 327. 6000 ntape_org core: 43, ntape_equ: 9, 11, 12, 13, 14, 15, 16, 17, 18, 19.  12252 octwd bos_tv: 63. 6005 opentaper ntape_equ: 16. 6006 opentapew ntape_equ: 17. 500 ouhist bos_common: 14. 12000 pagectl bos_tv: 12, 13.  3 pgm core: 140, 173,  bosequ: 10. 12215 phyadd bos_tv: 34. 12213 phybos bos_tv: 32. 360 port core: 219, 221, 269, 270, 333. 1500 prs bos_common: 18. 1600 ptrlen bos_common: 29. 12251 punch bos_tv: 62. 2020 quietsw bos_common: 59. 12267 rdclock bos_tv: 76. 12211 rdev bos_tv: 30. 2016 rdrchanno bos_common: 57. 12234 rdsec core: 152, 286,  bos_tv: 49. 12246 readcd bos_tv: 59. 12247 readtty bos_tv: 60. 2030 readysw bos_common: 67. 12232 rec_per_dev_list bos_tv: 47. 1520 regs bos_common: 19. 143 restor core: 111, 165.  175 rio core: 165, 202.  12260 rjust bos_tv: 69. 4000 runcom_bit bosequ: 19. 6007 runtape ntape_equ: 18. 346 rwu_sdw core: 257, 323.  350 savesw core: 61, 66, 110, 277, 324. 12200 scan bos_tv: 21. 105 scb1 core: 125, 136.  106 scb2 core: 126, 134.  1540 scu bos_common: 22. 14 sdw.add_shift core: 255, bos_sdw: 4. 377770 sdw.bound bos_sdw: 12. 40000 sdw.cache bos_sdw: 20. 4 sdw.df bos_sdw: 9. 37777 sdw.entry_bound bos_sdw: 21. 100000 sdw.entry_bound_sw bos_sdw: 19. 2 sdw.execute bos_sdw: 14. 3 sdw.fault_code bos_sdw: 10. 400000 sdw.privileged bos_sdw: 17. 7000 sdw.r1 bos_sdw: 5. 700 sdw.r2 bos_sdw: 6. 70 sdw.r3 bos_sdw: 7. 4 sdw.read bos_sdw: 13. 200000 sdw.unpaged bos_sdw: 18. 1 sdw.write bos_sdw: 15. 12204 search bos_tv: 25. 12230 sect_per_cyl_list bos_tv: 45. 12231 sect_per_dev_list bos_tv: 46. 7000 seg6length bos_common: 90. 252 setsdw core: 251, 258.  2004 setuparea bos_common: 49. 134 sincore core: 149, 156.  126 sio core: 113, 148.  2025 skipsw bos_common: 64. 2000 storlen bos_common: 36. 12262 stripa bos_tv: 71. 12263 stripg bos_tv: 72. 2015 tapechanno bos_common: 56. 354 tapen core: 96, 99, 102, 117, 169, 329.  6002 taper core: 172, 204,  ntape_equ: 13. 6000 taperopen core: 168, ntape_equ: 11. 6003 tapew core: 139, 158,  ntape_equ: 14. 6001 tapewopen core: 116, ntape_equ: 12. 361 temp core: 312, 315, 334. 1 tmp core: 153, 159, 205, 214, 258, bosequ: 8. 2 tpdone ntape_equ: 25. 10 tpeot ntape_equ: 23. 4 tpskip ntape_equ: 24. 1 tpstat ntape_equ: 26. 2017 ttychanno bos_common: 58. 12245 ttyinit core: 48, bos_tv: 58. 2026 ttypmtsw bos_common: 65. 320 ttyrequest core: 49, 307.  12200 tv_org bos_tv: 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,  44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,  56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,  68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,  80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,  92, 93, 94, 95, 96. 12244 type bos_tv: 57. 2013 unitgroup bos_common: 54. 2002 useable bos_common: 46. 2001 used bos_common: 45. 2005 utilarea bos_common: 50. 12000 utilorg bosequ: 22, bos_tv: 12, 19.  12301 wantflt bos_tv: 86. 12212 wdev bos_tv: 31. 12235 wtsec core: 213, bos_tv: 50. 320 x2 core: 40, 46, 51, 103, 107, 108, 278, 301, 303, 308, 316, 320.  12277 xio_wait bos_tv: 84. 4 xs1 bosequ: 11. 5 xs2 bosequ: 12. 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