42 thoughts on “Downloads

  1. Hi,
    I have had some problems in compiling the code under fedora 19: _atoi undefined in sw/sim_lib/cray_logger.h
    I have seen that replacing ModuleNameFormatter with the following appears to let the compilation end …

    static string ModuleNameFormatter(const char *aModuleName, size_t aInstance, size_t aBase) {
    stringstream Str;
    Str << aModuleName << std::setbase(aBase)<< aInstance<<std::setbase(0);
    return Str.str();

    it should be equivalent to the existing code, at least from what I can grasp from the logs.

    However, there appears to be a more serious bug, as once I start the system and try to logon on the station I get the following:


    [the terminals still work, but I cannot proceed]


    • Luca!

      Thanks for trying the code out on Fedora. The missing _atoi, especially in ModuleNameFormatter should not make the system do this. It’s almost as if the main CPU (or rather the OS on it) crashed right after boot. I haven’t seen that problem before. Can you say which version you’ve tried? If it wasn’t 0.91, can you try that?

      You can also try turning on tracing for the main CPU. To do that, change this:

      to this:

      in xmp_sim.cfg. This should generate an instruction trace on the mainframe CPU which is usually a bad idea, but in your case the crash happens right after boot, so it shouldn’t create gigabytes of logs. If you can send that to me, maybe I’ll find something in it that sheds some light on the problem.

      Andras Tantos

      • Oddly enough, I see no change in the log files when I set
        DefaultLogLevel All
        for the main cpu.

        0.91 used to work, but it does not anymore and it got struck in exactly the same way.

        I guess that either compiler or boost is to blame, then (and actually, even removing all
        optimization does not seem to improve the situation at all) .
        I do have the following version of gcc
        gcc version 4.8.1 20130603 (Red Hat 4.8.1-1) (GCC)
        and the system version of boost is 1.53.

        I am now trying to compile with an older version of gcc (the tricky bit is to find a machine which has not been updated but is recent enough) to see what happens.

        In any case, thanks

    • I was having this error too. It turned out to be a Y2K problem. The default value for the YearOffset variable when not specified in the configuration file is 20, and in 2020 that causes the year to be set to 00, which isn’t valid.

      YearOffset isn’t defined in the configuration file; it needs to be added. I added it after the line that says “ResponseTimeout 500”, which is line 146 in my config file. Just add a new line with something like “YearOffset 30” (without the quotes), which for 2020 will set the year to 1990.

      • Thanks for tracking this down! In deed, time flies and the 20-year offset is not insufficient. The newest release (V 2.2) uses a different method to clamp the year into an acceptable range of 1980 and 1999 so hopefully this problem is solved for perpetuity.

  2. Hello,

    i have the same prob under Ubuntu 13.04.
    If I try to compile I have this error:

    The version I’m using is 0.92


    • Hello,

      I fixed the problem, creating my version of itoa, using this code. I hope this covers all the option:

      • Same problem here, copying this code as static member into CLogger_c (not sure if this is a good place) made it compile. Googling for it, it seems like itoa is not a standard function and is not supported by all compilers, and it’s use is discouraged. Grepping through all files in /usr/include confirms the absence, so it’s probably not possible to add some define and make GCC support it. The fix was not present in the 0.92 source.

    • The simulator might be trying to launch a new xterm process that doesn’t exist. Does your Rasbery Pi have X running? (I don’t own one, so I can’t try.)

      Here’s how you can debug the problem: whenever the simulator tries to read from or write to a console, it tests if there’s something attached to the associated port. If there is nothing, it will print:


      If it is also configured to start a console automatically, it will try to launch the terminal emulator and in fact print out the command line it’s executing. So you’ll see something like this:

      Starting console application: wy50_con localhost 20003 -h 40 -e wy50 -l 20003.log

      On windows, that’s all that’s needed, since the emulator will start in a new console. Under Linux, the simulator will prepend this with the magic incantation to start the process in a new console. All this is set up in the configuration file, in sections, like this one:

      The ‘NewTerminalCommand’ option is only used by the Linux version and tells the simulator how to spawn a new console. The ‘ConsoleCommand’ is the command line that’s needed to start a new terminal emulator and attach it to the appropriate port. {cmd} above gets replaced by the value for ‘ConsoleCommand’. {host} and {port} gets replaced by the appropriate values for the listening socket.

      I hope this helps,

  3. Hi,

    Thanks you for your explanation. On Ubuntu 12.04, there is no error, the simulator runs perfectly but on Raspberry there is no consoles…
    I would like to know how to configure the simulator not to start the consoles automatically. I will launch the differents console manually.

    • Hi!

      Simply remove (or comment out) the NewTerminalCommand and ConsoleCommand lines from the config files (there are several, remove all of them). If you run the simulator that way, it will print the following:

      please connect terminal to localhost:20003

      and wait for a connection on the port it prompts. Note: you might have to fiddle with the code to open the port on your Ethernet interface as opposed to localhost.

  4. ubuntu 14.04 LTS and gcc 6.3.0 I get the following errors.

    /usr/include/boost/multiprecision/cpp_int.hpp:177:4: error: right operand of shift expression ‘(1u <= than the precision of the left operand [-fpermissive]
    BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits – 1));
    /usr/include/boost/multiprecision/cpp_int.hpp:417:4: error: right operand of shift expression ‘(1u <= than the precision of the left operand [-fpermissive]
    BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits – 1));
    /usr/include/boost/multiprecision/cpp_int.hpp:568:4: error: right operand of shift expression ‘(1u <= than the precision of the left operand [-fpermissive]
    BOOST_STATIC_CONSTANT(limb_type, sign_bit_mask = 1u << (limb_bits – 1));
    make[1]: *** [../_obj/linux_release/cray_float.o] Error 1
    make[1]: Leaving directory `/home/skippy/Cray1/sim2.0/sw/sim_lib'
    make: *** [sim_lib] Error 2

    • Strange, especially since it’s coming from inside boost and it didn’t show up on my machines. At any rate, I don’t think multiprecision is actually used, so try commenting out line 4 in cray_float.cpp:


      It should get rid of this error.

  5. Hello

    I may have posted this but i cant find it LOL.. Well i really do wish my iq matched my curiosity but we can have it all. LOL I am trying to compile your sim on ubuntu 16.04 and i am getting the following error.

    make -C sim_lib
    make[1]: Entering directory ‘/home/spector/Downloads/cray/sw/sim_lib’
    g++ -std=c++14 -c -ffunction-sections -fdata-sections -g -Wall -Wno-unused-local-typedefs -Wno-reorder -fno-strict-aliasing -Werror -gdwarf-2 -O3 -I. -I../sim_lib -DCRAY_HOST_SYSTEM=linux -D_FILE_OFFSET_BITS=64 iop_console.cpp -c -g -o ../_obj/linux_release/iop_console.o
    iop_console.cpp: In member function ‘void IopConsole_c::AcceptIfNeeded(bool)’:
    iop_console.cpp:198:27: error: ignoring return value of ‘int system(const char*)’, declared with attribute warn_unused_result [-Werror=unused-result]
    cc1plus: all warnings being treated as errors
    ../engine.mak:170: recipe for target ‘../_obj/linux_release/iop_console.o’ failed
    make[1]: *** [../_obj/linux_release/iop_console.o] Error 1
    make[1]: Leaving directory ‘/home/spector/Downloads/cray/sw/sim_lib’
    Makefile:35: recipe for target ‘sim_lib’ failed
    make: *** [sim_lib] Error 2
    any ideas


    • Apparently, your C runtime is slightly different than mine. The easiest workaround is to disable ‘make all warnings into errors’ in the make system:

      Edit engine.mak and change this line:
      CXXFLAGS = -std=c++14 -c -ffunction-sections -fdata-sections -g -Wall -Wno-unused-local-typedefs -Wno-reorder -fno-strict-aliasing -Wno-unused-variable -Wno-unused-result -Werror
      to this:
      CXXFLAGS = -std=c++14 -c -ffunction-sections -fdata-sections -g -Wall -Wno-unused-local-typedefs -Wno-reorder -fno-strict-aliasing -Wno-unused-variable -Wno-unused-result

      Let’s hope this helps,

  6. Thank you for that help it got me through the compile now i am showing my low iq LOL i am now getting this error on the end of the compile

    In file included from cray_channels.h:17:0,
    from cray_channels.cpp:10:
    cray_logger.h: In static member function ‘static std::string CLogger_c::ModuleNameFormatter(const char*, size_t, size_t)’:
    cray_logger.h:22:33: error: ‘_itoa’ was not declared in this scope
    ../engine.mak:192: recipe for target ‘../_obj/linux_release/cray_channels.o’ failed
    make[1]: *** [../_obj/linux_release/cray_channels.o] Error 1
    make[1]: Leaving directory ‘/home/spector/Downloads/craysim/cray/sw/sim_lib’
    Makefile:32: recipe for target ‘sim_lib’ failed
    make: *** [sim_lib] Error 2
    sorry to bother you with what i think is a simple error.


  7. Hello

    I think as of now we can forget the last post LOL .. i got it to compile but it says it cant find a tape when i start it up .. dont know what to do with that.


    • The tape file should be in the root of the distribution, named: boot_tape.tap. You probably are best off copying your final executable, or use the supplied ‘run’ script in the root.

  8. Hello again Andras,
    I have the simulator running cos_117 and what a surprise it was to see it come to life! I see that I have no devices however.
    So you say you have a source of tapes now? When it where might these be available?
    I did log in to you simulator and found a Unix like environment. I am looking at something off-line with a help file. But again, no devices.
    The Processors Peripherals Console screen yields the commands Exit Dump Setscreenheight and SetLogLevel…Devices: nothing.
    How exciting this is. What might I do to write file in fortran perhaps?

    • I’m not sure what causes the crashes for you. I indeed have access to (not sources, only binaries) a lot of UNICOS releases, those are UNIX environments. Since I don’t have redistribution rights, I can’t put them online, that’s the reason for the on-line simulator. That, and the fact that setting UNICOS up to the point where it’s functional is not a trivial effort. The OS you can download is the COS 1.17 release, and it’s NOT a UNIX environment. It’s very alien to almost anything we’re used to these days. All of your peripherals should be emulated, including the tape and disk drives. Upon startup the virtual disk images should get automatically created for you, but the tape images must exist because those contain the boot code. Also, something called the ‘expander disk’ should have a disk image, because that’s where the OS kernel and utilities are held. However if you downloaded the ZIP file, it should have all of these ready-made for you.

  9. It worked once. Now I get:
    │Front-end error received: 0251 for message: 1 │
    │Front-end re-sending logon…
    The logon is not resent. None of the port will respond. A few will hang.

    • I think this error happens to be benign. The front-end (a.k.a. network interface) simulation has never been terribly robust due to lack of documentation. Then again, it’s not like you can do much with the system anyway, so having networking on it doesn’t buy you much. All you would be able to do is to get another ‘station’ client up and running on another DEC or PDP emulator and try to connect, but since the IOPs have built-in station SW, it doesn’t buy you anything.

  10. I have had great success lately, even tried an experiment of my own today!
    Tedi is working, so I entered a few lines of Pascal not really sure if it would land in your printer view or not. But after adding a JCL file to load the compiler, my files were not found.
    Where do you suppose Tedi is saving files?

    • I believe it saves it as a local dataset. You have to use ‘DISPOSE’ command to transfer it to – say – a line printer or to the front-end hard drive.

      • Okay. I will try that.
        I have been thinking COS might be looking for MISC117, as its own privilege. At the present I can’t find Update or see any access to the common decks.
        Have you made live configuration changes or used PROC. ?
        Thank you,
        Jonathan Engwall
        p.s. I have a few short videos which are receiving views! Here is one: https://youtu.be/KEu0RZcBYCc

  11. Hello
    I just wanted to ask if you have any software to run on your cray simulator. I have an interest in running it on a bbs if i am allowed starting sometime next year. I would like to have operating system and a compiler of some sort if not that is ok . Just let me know if possible

    I have a dell server with 2 2 core znon cpus 16 gigs of memory and access to over 5 tb of hard drive space across my network.


    • Philip,

      It depends a little on which OS you’re asking about. For COS, there’s absolutely nothing. For UNICOS, there’s quite a few, but I can’t make it public at the moment. At any rate, you can log into the UNICOS machine at cray.modularcircuits.com and see for yourselves. On that machine, you’ll find compilers, tools, even X11 applications running. Getting other programs that are available in source form (say FireFox) going on this class of machines is a rather large undertaking due to their rather strange C compiler. I’ve done a few (BASH, wget, mc) but it’s far from trivial.

      Hope this helps!

  12. An online use for COS is hard to imagine. Configuring further connections to the mainframe is possible according to hr0000 LoL
    I just keep digging. I have great results just letting it run.
    Another manual suggests two more BMX disks exist. On the other hand the error checking data channels were a powerfull feature, combined with a giant storage device, everyone with a datacenter was expected to need one.
    COS is what it is.

  13. Hello

    I just want to ask if you have plans of being able to release some of your software for the cray…
    I would also be willing to run the cray in my bbs under your name if that is possible .. just saying and putting out an idea


  14. Hello Andrs,
    I can look at registers. Will this image show?


    If not I will email it.
    Jonathan Engwall

  15. Is there any way you can put up a new windows distribution? I keep getting time date errors with 2.1 and IACON does not seem to be working. I use /logon, then account,ac=cray. and nothing. Status shows the job waiting and I have to hard quit the simulator.

    • Thanks for the remark, and I just did. You should find version 2.2, which corrects the y2021 bug that prevented the simulator from starting up as well as a small issue that cropped up in all places within the C compiler under UNICOS. I’m not sure if it fixes your IACON problems though…

  16. tried to install on windows x64 and followed the instructions for about an hour, simply cannot find the files described, cannot run the instructions given, looks SO COOL! want to get this working.

    have vs2022 thanks

    • Brad,

      In the last few years I moved over to Linux, so I don’t have access to a Windows machine anymore. The instructions are for Linux (mostly Ubuntu). It’s not surprising you didn’t get far following them under Windows.

      The project however does work (or rather, used to work) under Windows. The setup instructions would be very different though. You would need an equivalent to TAP (virtual bridges) on Windows. I think it’s called WinTunTap and is part of OpenVPN (https://openvpn.net/community-downloads/). Without it you won’t have networking. Boost under Windows essentially involved building it from source. You would have to edit the project files to point the include path to your Boost installation.

      I don’t know how you would get an NFS server or rcp and rlogin going under Windows. I’m sure there is a way, I’m not sure there’s a free way. Without these, you can still get the UNICOS working, but it involves a lot more manual steps and hacking.

      The project also should compile under MinGW and Cygwin, which are closer to the Linux build environment then Visual Studio. However none of that will get you any closer to a working UNICOS system; it’s simply an alternative way to get a simulator executable.

      These days there’s WSL (Windows Subsystem for Linux) which should allow you to get pretty much a Ubuntu distro running inside your Windows install. If you went that route, I think the instructions I have should work pretty well.

Leave a Reply

Your email address will not be published. Required fields are marked *