DIRECTORY Atom, CacheOps, Commander, CommandTool, Dragon, IO, Rope, RoseCreate, RoseDisplayBrowsing, RoseDisplayInsides, RoseDisplayOps, RoseTypes, TypeScript, ViewerClasses, ViewerIO; StartCluster: CEDAR PROGRAM IMPORTS Atom, CacheOps, Commander, CommandTool, RoseCreate, RoseDisplayBrowsing, RoseDisplayOps, TypeScript, ViewerIO SHARES RoseDisplayOps, RoseDisplayBrowsing -- ugh! -- = BEGIN vm: CacheOps.VirtualMemory; iCache, eCache: CacheOps.Cache; iCacheInit, eCacheInit, ifuInit, euInit, fpInit, clusterInit: Atom.PropList; clusterLog: IO.STREAM; iDecoderLogRef, euLogRef, fpLogRef: REF REF; root: RoseTypes.Cell; osim: RoseTypes.Simulation; cth: RoseTypes.CellTestHandle; display: RoseDisplayInsides.Display; v: ViewerClasses.Viewer; DoStartCluster: Commander.CommandProc = BEGIN args: CommandTool.ArgumentVector = CommandTool.Parse[cmd]; IF args.argc<2 THEN RETURN [ msg: cmd.procData.doc ]; vm _ CacheOps.NewVirtualMemoryFromFile[args[1]]; iCache _ CacheOps.NewCache[vm]; eCache _ CacheOps.NewCache[vm]; Atom.PutProp[$DragonSimulation, $VMFileName, args[1]]; Atom.PutProp[$DragonSimulation, $VM, vm]; Atom.PutProp[$DragonSimulation, $iCache, iCache]; Atom.PutProp[$DragonSimulation, $eCache, eCache]; Atom.PutProp[$DragonSimulation, $RandomStartPC, NEW[Dragon.Word _ 0101764H] ]; iCacheInit _ Atom.PutPropOnList[ Atom.PutPropOnList[NIL, $Cache, iCache], $SkipRejects, NEW[BOOL _ FALSE]]; eCacheInit _ Atom.PutPropOnList[NIL, $Cache, eCache]; ifuInit _ Atom.PutPropOnList[NIL, $decoder, Atom.PutPropOnList[NIL, $LogRef, iDecoderLogRef]]; euInit _ Atom.PutPropOnList[NIL, $LogRef, euLogRef]; fpInit _ Atom.PutPropOnList[NIL, $LogRef, fpLogRef]; clusterInit _ Atom.PutPropOnList[ Atom.PutPropOnList[ Atom.PutPropOnList[ Atom.PutPropOnList[ Atom.PutPropOnList[ NIL, $ifu, ifuInit], $eu, euInit], $fp, fpInit], $iCache, iCacheInit], $eCache, eCacheInit]; Atom.PutProp[$DragonSimulation, $IDecoderLogRef, iDecoderLogRef]; Atom.PutProp[$DragonSimulation, $EULogRef, euLogRef]; Atom.PutProp[$DragonSimulation, $FPLogRef, fpLogRef]; clusterLog _ ViewerIO.CreateViewerStreams [name: "Cluster Log", backingFile: "ClusterLog.txt"].out; TypeScript.ChangeLooks[ViewerIO.GetViewerFromStream[clusterLog], 'f]; Atom.PutProp[$DragonSimulation, $ECacheLog, clusterLog]; Atom.PutProp[$DragonSimulation, $IDecoderLog, clusterLog]; Atom.PutProp[$DragonSimulation, $EULog, clusterLog]; Atom.PutProp[$DragonSimulation, $FPLog, clusterLog]; [root: root, osim: osim, cth: cth] _ RoseCreate.CreateTest[rootName: "ClusterRoot", testerName: "ClusterTester", testeeName: "ClusterTestee", typeName: "Cluster", stateToo: FALSE, decider: RoseCreate.DecideFromFile[(IF args.argc<3 THEN "Cluster.expand" ELSE args[2])] ]; TRUSTED -- I don't know why Spreitzer hasn't fixed this... BEGIN display _ RoseDisplayOps.NewDisplay[sim: osim, info: [iconic: FALSE, name: "Cluster"], cth: cth]; v _ RoseDisplayBrowsing.BrowseDisplay[display: display, info: [iconic: FALSE, name: "Cluster Browser"]]; END; END; iDecoderLogRef _ NEW[REF]; euLogRef _ NEW[REF]; fpLogRef _ NEW[REF]; Commander.Register["Cluster", DoStartCluster, "Cluster fires up a Rosemary simulation of a single-processor Dragon. Format is\n Cluster CodeFile.quad Expansion.expand\n"]; END. *StartCluster.mesa Copyright c 1984 by Xerox Corporation. All rights reserved. Starts the Cluster Rosemary simulation last modified by E. McCreight, May 17, 1984 10:37:04 am PDT last modified by Curry, July 31, 1984 11:32:17 am PDT RandomTest.Start in Random.quad initData: clusterInit ???? Ê\˜šœ™Jšœ Ïmœ1™žœ˜aJšœGžœ˜hJšžœ˜—Jšžœ˜—J˜Jšœžœžœ˜Jšœ žœžœ˜Jšœ žœžœ˜J˜Jšœ­˜­Jšžœ˜J˜——…— °6