" " Begin include file ...... bos_sstnt_man.incl.alm " " SST Name Table management for BOS. " " 04/17/75 by Bernard Greenberg, with help from Richard G. Bratt. " " " tsx2 initsstnt to set up package " initsstnt: stx2 ssni.x2 save exit stz ssn.valid assume table not valid ldaq sstsdw get SDW for SST segment ana =o777777770000 set up base and bounds sta ssn.sstbase qrl 36-15 isolate bounds adlq 1,dl qls 4+12 16 to 1 stq ssn.sstbase+1 relocate top of SST tsx2 sltsearch look up name table arg ssn.sstntname tra ssni.fail tsx2 getsdw tra ssni.fail tra ssni.fail staq ssn.sstnt_sdw eaq sst.root_astep get root astep tsx2 apnd arg sstsdw tra ssni.fail ldaq fetchout,* stq ssn.root_astep save root astep eaq 0 get sstnt header tsx2 get arg ssn.sstnt_sdw zero ssn.sstnt,sstnt.names buffer for this tra ssni.fail lda ssn.sstnt+sstnt.valid_word tze sstnt_not_valid sta ssn.valid eaa asgetab,i get addr of ASCII to GEBCD table sta gpn.tab 3rd desc of MVT cnnot be ID ssni.x2: tra *-* " " Error exits. " ssni.fail: tsx2 erpt acc "no sstnt" tra ssni.x2 sstnt_not_valid: tsx2 erpt acc "sstnt not filled" tra ssni.x2 " " Global constants for sstnt management " even ssn.sstnt_sdw: bss ,2 sdw for sst name table ssn.sstbase: dec 0 base of SST dec 0 top of SST ssn.root_astep: arg 0 astep of root, upper ssn.valid: dec 0 n/z if table valid ssn.gthan:bci ">00000" a greater than ssn.sstntname: dec 10 aci "sst_names_ " ssn.sstnt: bss ,sstnt.names buffer for name table header " " " ldaq sdw " tsx2 getsstntname to get pathname put where " desc6a where(offset),length describes. " tra not_reasonable_for_pathname " getsstntname: stx2 gpn.x2 save return szn ssn.valid valid sstnt? tze gpn.fail canq sdw.unpaged,dl is it paged? tnz gpn.not_pn no path here ana =o777777770000 isolate address sbla ssn.sstbase tmi gpn.not_pn cmpa ssn.sstbase+1 tpl gpn.not_pn als 6 eaq -ast_size,au get astep in qu stq gpn.astep tsx2 get get the aste arg sstsdw zero gpn.aste,ast_size tra gpn.not_pn ldx2 gpn.x2 restore X2 ldq 0,2 get descriptor stq gpn.desc set it anq =o7777,dl extract length from descriptor stq gpn.offset and set initial offset into buffer stz gpn.curlen no chars yet. lxl7 gpn.aste+aste.par_astep is there a parent? tnz gpn.yes_pn ldq gpn.astep is this the root? cmpq ssn.root_astep tze gpn.isroot tra gpn.not_pn if not, error gpn.yes_pn: " " " This segment is a legitimate descendent of the root. " Cons together pathname. gpn.loop: ldq gpn.astep get astep qrl 18 eax7 3 figure out ptsi by pool gpn.1: cmpq ssn.sstnt+sstnt.ast_offsets,7 tpl gpn.got_ptsi eax7 -1,7 tmi gpn.fail messed up if minus tra gpn.1 smaller pool gpn.got_ptsi: sblq ssn.sstnt+sstnt.ast_offsets,7 lda 0,dl set up for divide div ssn.sstnt+sstnt.ast_sizes,7 figure out # in pool adlq ssn.sstnt+sstnt.ast_name_offsets,7 figure out name # mpy sstnt_name_length,dl eaq sstnt.names,ql address name in table tsx2 get fetch the name arg ssn.sstnt_sdw zero gpn.namebuf,sstnt_name_length tra gpn.fail " " See if new entry name will fit. " lcq gpn.namebuf is there anything there? tze gpn.fail no, fail on whole name adlq gpn.offset subtract from current length tmoz gpn.isroot too big, ignore entry name lda gpn.namebuf get length mvt (rl),(ql,rl) translate to GEBCD while at it desc9a gpn.namebuf+1,al source is buffer desc6a gpn.linebuf,al destination is line image gpn.tab: arg *-* asa gpn.curlen move char count stq gpn.offset save new offset gpn.isroot: ldq gpn.offset offset in QL sbq 1,dl step back 1 for ">" tmi gpn.done exit if no room for ">" mlr (),(ql) desc6a ssn.gthan,1 desc6a gpn.linebuf,1 aos gpn.curlen stq gpn.offset save offset " " " If there is a parent, cons on his name " ldq gpn.astep get astep of this seg eaq aste.par_astep,qu point to parent word tsx2 apnd get the rep arg sstsdw tra gpn.fail lda fetchout,* als 18 move to upper tze gpn.done exit if was root cmpa ssn.root_astep father the root? tze gpn.done sta gpn.astep tra gpn.loop do the father gpn.done: ldx2 gpn.x2 ldq gpn.offset get offset of pathname lda gpn.curlen get current lngth mlr (ql,rl),(),fill(020) whoosh desc6a gpn.linebuf,al gpn.desc: arg 0 tra 2,2 " " Failure routines " gpn.x2: gpn.fail: gpn.not_pn: eax2 *-* tra 1,2 " " Work areas " gpn.astep:arg 0 astep of segment gpn.aste: bss ,ast_size ast image gpn.curlen: arg 0 chars in linebuf gpn.offset: arg 0 offset in linebuf even gpn.linebufp: its -1,1 pointer to last stored char bss gpn.linebuf,168/6 gpn.namebuf: bss ,sstnt_name_length " End of include file ...... bos_sstnt_man.incl.alm " " " ----------------------------------------------------------- " " " " 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 " "