" *********************************************************** " * * " * Copyright, (C) Honeywell Information Systems Inc., 1982 * " * * " *********************************************************** " CORE - prog to save and restore a core image to tape " Modified 9/29/73 by N. I. Morris " Last modified 2/11/81 by Sherman D. Sprague to add density commands name core " ****************************************************** " * * " * * " * Copyright (c) 1972 by Massachusetts Institute of * " * Technology and Honeywell Information Systems, Inc. * " * * " * * " ****************************************************** equ nblocks,8 "Number of memory ports. bool d8,60 set density command for 800 bpi bool d16,65 set density command for 1600 bpi bool d62,41 set density command for 6250 bpi include bosequ " include ntape_equ include bos_common " stx2 x2 tsx2 init_io eaq ntape_org location for tape package in QU lda =h ntape tsx2 ldcom load the tape package tra x2 tsx2 ttyinit arg ttyrequest ldx2 x2 scan arg list ldx0 mem|0,2 arglp: eax0 1,0 next arg lda mem|0,0 cmpa =-1 tze argend cmpa =h save tnz *+3 stc1 savesw if save, set switch tra arglp and get next arg cmpa =hrestor tnz *+3 stz savesw tra arglp cmpa =h d=800 800 bpi no imagination !! tnz *+4 lda d8,dl sta density tra arglp cmpa =hd=1600 operator want 1600 bpi !! tnz *+4 lda d16,dl sta density tra arglp cmpa =hd=6250 operator has decided on 6250 tnz *+4 bpi, is this good ?? lda d62,dl sta density tra arglp cmpa =h go tnz *+3 stc1 gosw tra arglp ldq mem|arglen+1,0 get decimal conversion for tape number tmoz arger cmpq =16,dl tpnz arger stq tapen store tape number tra arglp arger: sta tapen store in temp tsx2 erpt acc '^g unknown' arg tapen tra x2 argend: tsx2 inittape arg density tra x2 tra x2 szn savesw save or restor tze restor eax7 sio set I/O procedure for save stx7 io .. tsx2 tapewopen open tape for writing arg tapen ldq dir*4,dl get number of characters to move in QL mlr (pr,rl),(rl) copy the machine conditions desc9a com|0,ql desc9a header,ql eax7 nblocks-1 sort the coreblocks array scb1: eax6 -1,7 simple interchange sort scb2: lda header+coreblocks,7 cmpa header+coreblocks,6 trc *+4 logical compare ldq header+coreblocks,6 sta header+coreblocks,6 stq header+coreblocks,7 eax6 -1,6 tpl scb2 eax7 -1,7 tpnz scb1 lda =0,dl write header tsx2 tapew arg pgm|header arg nhead tra fioe tra main join common loop "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* sio: szn notincoresw is this block in core? tze sincore if so, skip disk read lda diskadd get disk address for read tsx2 rdsec and read from BOS saved core area arg tmp|0 tra fioe sincore: lda id get ID for this block ora =o10000,du add identifier bit tsx2 tapew write block onto tape arg tmp|0 arg 1024 tra fioe tra end rejoin common loop restor: eax7 rio set I/O procedure for restor stx7 io .. tsx2 taperopen open tape for reading arg tapen lda =0,dl read header tsx2 taper arg pgm|header arg nhead tra fioe eax7 nblocks-1 Make sure required core exists. chec1: lda header+coreblocks,7 Get block descriptor word. cmpa =-1 If no more core, tze gec stop looking. eax6 nblocks-1 Search through machine conditions. chec2: cmpa com|coreblocks,6 Look for matching word. tze check_ok eax6 -1,6 tpl chec2 tra nec Match not found. Cannot proceed. check_ok: eax7 -1,7 Try next block. tpl chec1 .. " Move machine conditions. gec: ldq low_order_port*4,dl No. of characters to copy in QL. mlr (rl),(pr,rl) Copy back the machine conditions. desc9a header,ql desc9a com|0,ql tra main join common code "*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* rio: lda id get ID of this block ora =o10000,du add identifier bit tsx2 taper read in from tape arg tmp|0 arg 1024 tra fioe szn notincoresw if in core, tze end all finished with this block lda diskadd get address of block on disk tsx2 wtsec write into BOS core saved area arg tmp|0 tra fioe tra end rejoin common code main: stz port start core loop blockloop: lxl0 port lda header+coreblocks,0 does core block exist cmpa =-1 tze endblock Skip it if not. lrl 18 Get starting address. als 6 sta id lls 18 Now get final address. ana -1,dl als 6 ada id sta endid " Loop to process all of one memory block (port). loop: lda com|corearea on disk ana =o7777,dl als 6 cmpa id tmoz incore stc2 notincoresw set switch to indicate on disk lda id als 12-6 compute secondary store address ada com|corearea ana =o777777770000 ora =16,dl sta diskadd save device address of core block ldaq ds|bf*2 make tmp SDW point to buffer tra setsdw .. incore: stz notincoresw reset switch lda id if in core, make temp seg point to it als sdw.add_shift ldq 0,dl oraq rwu_sdw setsdw: staq ds|tmp*2 cams tra io,* Go to appropriate I/O routine end: lda id bump core address ada =1024,dl sta id cmpa endid Checkfor limit on this port. tmi loop More left. aos port lda port Have we done all possible ports yet? cmpa nblocks,dl tmi blockloop Go do next one. endblock: tsx2 endtape if done, close out tape szn savesw doing save? tnz x2 if so, all finished lda ds|fgb*2 get abs addr of flagbox arl 12+6 rught-justify and divide by 64 als 12 to get disk sector offset adla com|corearea compute disk address ana =o777777770000 mask out count ora 16,dl read one page tsx2 rdsec into bf nop bf|0 tra fioe ldaq ds|fgb*2 get flagbox SDW arl 12-2 compute character offset of org ana =o376,dl within buffer anq =o377770,du mask the bound adlq =o10,du compute length of segment qrl 21-4-2 compute number of characters to copy mlr (pr,rl,al),(pr,rl) copy the flagbox image back into toehold desc9a bf|0,ql desc9a fgb|0,ql szn gosw doing restore. should we wait? tze x2 if so, return to BOS main control ldx2 x2 restore X2 lda =hcontin chain to CONTIN command tra mem|1,2 and return to main control ttyrequest: x2: eax2 * lca =1,dl return with no contin tra mem|1,2 nec: sta temp save descriptor word for block tsx2 erpt need more core acc 'core too small. need coreblock ^w.' arg temp tra x2 fioe: tsx2 erpt acc 'fatal io error' tra x2 even rwu_sdw: vfd 24/0,9/0,3/4,15/(1024/16)-1,o6/52,15/0 savesw: bss ,1 io: bss ,1 gosw: oct 0 notincoresw: bss ,1 tapen: dec 1 id: bss ,1 endid: bss ,1 diskadd: bss ,1 port: bss ,1 temp: bss ,1 density: oct 65 1600 bpi is default eight bss header,dir equ nhead,*-header " include bos_sdw 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 " "