Path: utzoo!utgpu!news-server.csri.toronto.edu!mailrus!ames!haven!decuac!e2big.mko.dec.com!bacchus.pa.dec.com!decwrl!wuarchive!zaphod.mps.ohio-state.edu!samsung!xylogics!merk!alliant!fisher From: fisher@Alliant.COM (Larry Fisher) Newsgroups: comp.lang.fortran Subject: Re: SAVE and segmentation on CYBERS [was:COMMON and SAVE statements] Message-ID: <4058@alliant.Alliant.COM> Date: 10 Aug 90 17:53:38 GMT References: <65861@lll-winken.LLNL.GOV> Reply-To: fisher@alliant.com (Larry Fisher) Distribution: na Organization: Alliant Computer Systems, Littleton, MA Lines: 38 On 3 August 1990, Richard Maine) wrote: > >On CDC Cyber systems running NOS (I don't know about the newer NOS/VE >systems; I haven't used them) using the segment loader (basically a >form of memory overlay). Non-saved COMMON blocks could be swapped out >of memory when the referencing routines returned. Program code and >non-saved local variables were also swapped out. > >As I recall, even saved COMMON blocks and local variables could be >swapped out of memory, but they were copied to disk and restored >as appropriate. The non-saved ones were just discarded and became >corrupted with whatever next happened to use the same memory. > Ah, yes, the segmented loader. One of the least-used features of the CYBERS; right next to LO72 and the 8-BIT subroutines. Yeah, saved COMMON blocks were written back to disk when a segment was "swapped" out. A handy feature of the segmented loader was that the code didn't have to have SAVE statements --- named COMMON blocks could be saved via the segmented loader SAVE directive. Equally helpful is the save switch on the Fortran compiler here at Alliant. >I guess to save memory space on systems where it is tight (relative to >your requirements). It certainly was tight on the Cybers of that >vintage. I sure don't miss those days. Segmentation caused lots of >interesting "features". Of course, it also taught me to use the SAVE >statement religiously where needed. Yeah. An interesting feature [severe defiency] of the CYBER loader was that you couldn't even get a external reference cross-reference map if the program didn't fit in 400000B (131k words). I, like others, ended up writing a set of programs to cross-reference routines and common blocks. The program call-tree could be manipulated and segmented loader directives generated. Such fun :-). -- Larry Fisher Domain: fisher@alliant.com Alliant Computer Systems UUCP: {mit-eddie|linus}!alliant!fisher Littleton, MA 01460 Phone: (508) 486-1449