" *********************************************************** " * * " * Copyright, (C) Honeywell Information Systems Inc., 1982 * " * * " *********************************************************** " SSTN command, to fill SST name table if not filled already " Bernard Greenberg, April 15, 1975 " Rewritten for aste/ptw split by R. Bratt on 10/01/76 " Retrofitted from Bratt for old aste BSG 12/6/76 " Modified to skip ASTEs with vtocx -1, J. Bongiovanni, October 1982 " ****************************************************** " * * " * * " * Copyright (c) 1972 by Massachusetts Institute of * " * Technology and Honeywell Information Systems, Inc. * " * * " * * " ****************************************************** bool name_offset,10 there is no dir_entry.incl.alm include bosequ " include vtoc_info include apnd_equ include sstn_equ " include sstnt " include bos_page_info " include aste " stx0 x0 stx1 x1 stx2 x2 stx3 x3 stc2 ascom set command switch tsx2 initint set up interrupts arg return tsx2 init_io tsx2 ttyinit arg return tsx2 cvinit " " Initialize apnd pack " lda =h apnd load apnd pack eaq apnd_org tsx2 ldcom tra tragedy ldaq com|dbr staq cmdbr lda 64,du tsx2 getinit tra sstn_join join common code " org sstn_org stx0 x0 stx1 x1 stx2 x2 save X2 stx3 x3 stz ascom indicate not a command sstn_join: " " Get necessary SDWs and segnos " lda sstsdw get abs addr of SST segment ana =o777777770000 make abs addr tze tragedy if zero, never initialized sta sstbase tsx2 sltsearch arg sstntname tra tragedy tsx2 getsdw tra tragedy tra tragedy staq sstnt_sdw save name table sdw canq sdw.unpaged,dl if not paged, tnz tragedy we're probably in bootstrap1 " " Init data areas from sst/sstnt " eaq 0 get sstnt header tsx2 get arg sstnt_sdw zero sstnt,sstnt.names tra tragedy lda sstnt+sstnt.valid_word tpl not_yet_valid see if table built already lda sstnt+sstnt.multics_or_bos cmpa =amult if filled by Multics, tze already_valid tell user it's already filled ldaq sstnt+sstnt.fill_time cmpaq com|mctime if not filled in this BOS invocation, tmi not_yet_valid fill it again already_valid: szn ascom command? tze return if not, don't print message tsx2 erpt acc "sstnt already filled by ^a." arg sstnt+sstnt.multics_or_bos not_yet_valid: szn ascom command? tnz nya if not, print following message tsx2 erpt acc "filling sstnt." nya: eax3 0 li: lxl2 sstnt+sstnt.ast_sizes,3 stx2 ast_sizes,3 lxl2 sstnt+sstnt.ast_offsets,3 stx2 ast_offsets,3 eax3 1,3 cmpx3 4,du tmi li " " Find out where the "5th pool" begins, " i.e., the 1st address beyond the 4th pool. " eaq sst.no_aste+3 tsx2 apnd arg sstsdw tra tragedy ldq fetchout,* anq -1,dl mpy sstnt+sstnt.ast_sizes+3 adlq sstnt+sstnt.ast_offsets+3 qls 18 stq ast_offsets+4 eaq sst.astap+1 get addr of first aste tsx2 apnd arg sstsdw tra tragedy ldx0 fetchout,* x0 -> aste eax3 0 x3 = pool index eax1 0 x1 = aste index loop: eaq 0,0 qu -> aste tsx2 get read aste arg sstsdw zero aste,ast_size tsx2 error ldq aste+aste.uid skip empty astes tze next cmpq =-1 is this the root? tze is_root is the root, avoid name fetch lda aste+aste.hc_word is it hardcore? cana aste.hc,du ... tnz next yes, skip it " " Compute the vtoc index. Figure out where in the VTOC " that lands, get the sector containing the primary name, " and dredge out the primary name. " Note that chname is not into maintaining the name " in the vtoce. lda aste+aste.pvtx_word get the pvt index arl aste.pvtx_shift ana aste.pvtx_mask,dl isolate tsx2 pvt_to_devt get device type and address tsx2 error error exit sta devt ldq aste+aste.vtocx get the vtoc index anq =o777777,dl isolate cmpq -1,dl Is there a VTOCE? tze next No -- skip div n_vtoce_per_record,dl get record number adlq vtoc_r0,dl this is Multics record sta vtoc_remainder save this lls 36 into A tsx2 mulbos get record arg devt tsx2 error error exit ana =o777777770000 isolate sector # sta vtoce_devadd ldq vtoc_remainder other vtoces in here mpy n_sector_per_vtoce,dl count all sectors adlq vtoc_name_sect,dl this is sect in our vtoce lls 36+12 align to mulbos stuff adla vtoce_devadd add base of record sector ora 1,dl want to read 1 sector tsx2 rdev read the crummy vtoc already arg devt arg bf|0 tsx2 error mlr (pr),() desc9a bf|vtoc_name_word,32 disk buffer desc9a namebuf,32 our buffer fld 0,dl clobber read_args staq read_args " " Now process the name. " tsx2 stripa strip blanks at end of name desc9a namebuf,32 gotlen: sta namebuf-1 store length adla 4+3,dl round length up, add one word arl 2 stca putargs,07 set args to put " " Compute proper offset in ast name table. " eaq 0,1 qu = aste index qrl 18 ql = aste index mpy sstnt_name_length,dl eaq sstnt.names,ql get address of sstnt entry tsx2 put move the name into the ast name tbl arg sstnt_sdw putargs: zero namebuf-1,*-* tsx2 error next: eax1 1,1 x1 is index of next aste adlx0 ast_sizes,3 cmpx0 ast_offsets+1,3 done with pool tnc loop " " Skip to next AST pool " eax3 1,3 cmpx3 4,du tmi loop " " Skip to next AST pool " eax3 1,3 cmpx3 4,du tmi loop " " Mark sstnt as valid " lda sstnt.valid,du get valid bit sta sstnt+sstnt.valid_word lda =abos " sta sstnt+sstnt.multics_or_bos ldaq com|mctime get time of BOS entry staq sstnt+sstnt.fill_time eaq 0 tsx2 put write back header arg sstnt_sdw zero sstnt,sstnt.names tra tragedy.2 " return: x0: eax0 *-* x1: eax1 *-* x2: eax2 *-* x3: eax3 *-* szn ascom command or subroutine? tze 0,2 subroutine -- return to caller lca 1,dl no next command tra mem|1,2 tragedy: szn ascom command? tze return skip message if not command tsx2 erpt cannot initialize acc "sstn: cannot initialize." tra return tragedy.2: tsx2 erpt acc "sstn: cannot write back sstnt header." tra return is_root: lda =a> " get root name sta namebuf lda 1,dl length is 1 tra gotlen error: sblx2 1,du compute location of error exit sxl2 errloc save it sxl0 errastep save astep arl 18 error code in AL sta errcode save error code from apnd tsx2 erpt print error message acc "sstn: error ^d at ^o processing aste at ^o." arg errcode arg errloc arg errastep tra next " even sstnt: bss ,sstnt.names sstnt header sstntname:dec 10 aci "sst_names_ " ast_sizes:bss ,4 ast_offsets: bss ,5 even sstnt_sdw: bss ,2 sstbase: bss ,1 ascom: dec 0 nonzero if invoked as command aste: bss ,ast_size image of an aste odd dec 0 namebuf: bss ,8 varying name buffer devt: oct 0 vtoc devtype word vtoce_devadd: oct 0 same vtoc_remainder: oct 0 ditto trctemp: dec 0 errastep: bss ,1 errcode: bss ,1 errloc: bss ,1 " include bos_sdw include sst include bos_tv include bos_common end " " " ----------------------------------------------------------- " " " " 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 " "