" *********************************************************** " * * " * Copyright, (C) Honeywell Information Systems Inc., 1982 * " * * " *********************************************************** " This is the BOS config command " which is used for manipulating the " configuration deck. " Modified 9/17/75 by Noel I. Morris equ dmpbufl,64 size of buffer for apnd include bosequ include apnd_equ include bos_common " stx2 x2 save return tsx2 init_io init iom tsx2 ttyinit init tty for requests arg ttyrequest stc1 nlraw,* don't look at cards lda com|quietsw save quiet switch setting sta saveq stc2 com|quietsw suppress printing of input lines ldx2 x2 get argument ldx2 mem|0,2 lda mem|1,2 eax7 0 search list of args rpt ncoms,2,tze cmpa coms,7 ttf -1,7 dispatch on command tra p default is "print" coms: bci " p" tra p bci " print" tra p bci " punch" tra pu bci " d" tra d bci "delete" tra d bci " a" tra a bci "append" tra a bci " c" tra c bci "change" tra c bci " r" tra r bci "replac" tra r bci " u" tra u bci "update" tra u bci " l" tra l bci " load" tra l bci " save" tra save bci " s" tra save equ ncoms,(*-coms)/2 " pu: eax7 punch punch instead of printing stx7 ptsx .. p: eax0 2,2 here to print config tsx2 savarg save arguments to this command in a list eax0 0 set index into config deck plp: lda com|conf,0 check for end tmi exit tsx2 chkarg is this card in parameter list? tra ptnext if not, skip this card tsx2 config_print convert line from card tsx2 ptsx,* call appropriate output routine ptnext: eax0 confl,0 if done cmpx0 econf-conf,du tmi plp tra exit return ptsx: tra *+1 ****** THIS INSTRUCTION GETS MODIFIED ****** tsx2 type print converted line zero line,14 tra ptnext on to the next one " save: lda mem|2,2 get file name sta cname save it lcq 1,dl set up line mark stq pagectl .. cmpq cname was name given? tze noname if not, reflect error tsx2 make_runcom_file format is same as runcom tra get_line tra exit lda cname finish off the file tsx2 store_runcom_file tra exit tra exit get_line: eax7 0 pick up deck index cmpx7 econf-conf,du are we finished? tpl 0,2 if so, take EOF return lda com|conf,7 look at next card tmi 0,2 if negative, take EOF stx2 glx2 save X2 stx0 glx0 and X0 eax0 0,7 X0 contains config offset tsx2 config_print convert config card eax0 confl,0 step to next one stx0 get_line save index for next call glx2: eax2 * restore X2 glx0: eax0 * and X0 tra 1,2 take normal return noname: tsx2 erpt acc "No file name given." tra exit " d: eax0 1,2 here to delete a configuration deck card d_next: eax0 1,0 go to next_arg lda mem|0,0 get it cmpa ones is it the last? tze exit if so, we are done tsx2 ljust left adjust tsx2 geas and convert to ascii sta arg and save it for later use eax3 d_next set return address in case we call notfound tsx2 getconf get the card to be deleted tra notfound and complain if not found d_moveup: ldaq com|confl,7 get a double word from the next card staq com|0,7 and move it up adx7 2,du bump count cmpx7 econf-confl,du see if we are done tmi d_moveup loop if not ldaq ones get lots of ones staq com|0,7 make sure the last card is freed adx7 2,du cmpx7 econf,du tmi -3,ic lda arg restore the arg tsx2 getconf and see if we can delete the card again tra d_next no, go get the next argument tra d_moveup yes, go do it " l: eax0 (econf-conf)*4 here to reload config deck mlr (),(pr,rl),fill(777) clear the table desc9a *,0 then work like CONFIG A desc9a com|conf,x0 lda mem|2,2 get second arg cmpa ones if none, tze a get on with it ldq com|macroloc save loc'n of macro in use stq savem tsx2 runcom_setup set up to read from runcom file tra exit a: lca 1,dl set negative for append sta esw tra loop c: stz esw set zero for change tra loop r: lda 1,dl set positive for replace sta esw loop: tsx2 nextline read next line lda line if line is null, cmpa =h " tze exit we're finished lda arg get first argument cmpa =h quit check for QUIT card tze exit eax0 0 stz types ll: lda arg,0 convert card to config deck format ldq =o17,dl look for letter a-h only cmk =h " tnz lno ana =o17,dl cmpa =9,dl tpl lno ldq 1,dl code is 1 tra lle lno: lda arg,0 else, move number cmpa =8,dl if less than 8 tmi loct print as octal szn darg,0 if not number tze lasc must be char string cmpa darg,0 if decimal conversion is not the same tnz loct then must be octal ldq 3,dl otherwise, decimal tra lle code is 3 loct: ldq 0,dl code is 0 tra lle lasc: tsx2 ljust left adjust ge string tsx2 geas convert to ascii ldq 2,dl code is 2 lle: sta arg,0 save data word lls 36 position the type code lrl 0,0 .. lrl 0,0 .. orsq types or the code into type word eax0 1,0 bump index and go to next arg cmpx0 arg_count,* check if end of card tmoz ll and loop if not eaq -1,0 save the field count in Q lca 1,dl sta arg,0 and pad out the other words with ones eax0 1,0 cmpx0 confl,du tmi -3,ic qrl 18 position the count in low 4 bits orq types get the types argument stq arg+confl-1 save it lda arg card name in A tsx2 acr place card into configuration deck tra loop and go read another card " u: eax0 2,2 update config deck from Multics core tsx2 savarg save arguments to config lda =h apnd "apnd" in A eaq apnd_org origin of appending package in QU tsx2 ldcom load the appending package tra exit ldaq com|dbr set DBR value for appending package staq cmdbr tsx2 cvinit initialize device address conversion eaa dmpbufl length of appending buffer in AU tsx2 getinit initialize appending package tsx2 sltsearch search SLT for "config_deck" arg config_name arg config_namel tra noconfig lrl 36-1 move seg # to QU and multiply by 2 tsx2 apnd fetch the SDW for "config_deck" arg hcdbr tra noconfig ldaq fetchout,* SDW in AQ staq config_sdw save it stz esw this is a special "config c". eax0 0 initialize index for copying config ulp: eaq 0,0 address in QU tsx2 apnd get 64-word block of config arg config_sdw tra errconfig lda fetchout,* get key word from card cmpa ones is this end of deck? tze exit if so, stop tsx2 chkarg see if this keyword is in list tra unext if not, skip replacement eax7 0 initialize copying index ul1: lda fetchout,*7 get word of config deck sta arg,7 and place in arg buffer eax7 1,7 step to next cmpx7 confl,du tmi ul1 loop until card copied lda arg card keyword in A tsx2 acr perform "config c" operation unext: eax0 confl,0 step to next card cmpx0 econf-conf,du until finished tmi ulp tra exit return to BOS " acr: stx2 acrx2 utility routine to perform "a", "c", or "r". szn esw if append then get free slot without looking tmi fndslt tsx2 getconf find old entry in table tra nocard ldq arg+1 get the second word cmpq com|1,7 does the second word match too? tze gotcard if so, go use this card tsx2 getmore else see if any more cards like it tra usefirst no, get the first one again and use it chk_nxt: cmpq com|1,7 see if the current card is correct one tze gotcard tsx2 getmore else get another card tra nocard if not found, go get a free slot tra chk_nxt and if found, go see if this is the card nocard: eax3 acrx2 set return address in case this is replace szn esw make sure this isn't a replace tnz notfound if replace and card not found, complain szn com|quietsw see if quiet switch is on tnz fndslt dont print a message if so tsx2 erpt else tell the operator we are adding a card acc "^a card appended to configuration deck" arg arg fndslt: lca 1,dl we come here to get a free slot in the table usefirst: tsx2 getconf tra conful no room if fail gotcard: eax6 -confl get a loop counter cpycard: lda arg+confl,6 get word from card sta com|0,7 save it in the config deck eax7 1,7 bump the counts eax6 1,6 tmi cpycard and loop until done acrx2: tra * return to caller " savarg: stx2 svx2 save XRs stx1 svx1 .. eax1 0 initialize argument count svlp: lda mem|0,0 X0 -> argument to be saved cmpa ones any more args? tze svend if not, stop here tsx2 ljust left-justify tsx2 geas and convert to ASCII sta svbuff,1 save in buffer eax1 1,1 step indices eax0 1,0 for next argument tra svlp svend: stx1 svcount save argument count svx1: eax1 * restore X1 svx2: tra * and return chkarg: ldx7 svcount saved arg count in X7 tze 1,2 if none, match any argument chklp: cmpa svbuff-1,7 is this arg in list? tze 1,2 if so, return eax7 -1,7 try next one tnz chklp .. tra 0,2 unsuccessful return " conful: tsx2 erpt config full acc "configuration area full" ttyrequest: exit: stz nlraw,* reset switch lda saveq restor quiet switch sta com|quietsw lda savem restore macro buffer loc'n tze x2 if not processing macro, then exit sta com|macroloc ana =o777777770000 mask disk address ora 1,dl insert sector count tsx2 rdsec restore macro buffer contents nop com|macrobuf dis * x2: eax2 * lca =1,dl here to restore and return tra mem|1,2 notfound: tsx2 erpt we get here if card not in deck acc "^a card not found in configuration deck" arg arg tra 0,3 after printing message, go back noconfig: tsx2 erpt acc "unable to locate config deck" tra exit errconfig:tsx2 erpt acc "error copying config deck" tra exit notc: tsx2 erpt acc "config deck ^g not found." arg cname tra exit " esw: oct 0 punchsw: oct 0 svcount: oct 0 svbuff: bss ,arglen cname: bss ,1 n_fields: oct 0 config_namel: dec 11 config_name: aci 'config_deck ' types: oct 0 even config_sdw: bss ,2 ones: dec -1 two words of -1 dec -1 savem: bss ,1 saveq: bss ,1 " include eis_micro_ops include configp include runcom_util include bos_tv 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 " "