CrayCore - A CRAY YMP-EL Emulator

About CrayCore

CrayCore is a CRAY YMP-EL Emulator. Currently, CrayCore executes instructions one at a time, through a command line interface. Future plans are to slowly add features until CrayCore is fully able to run Unicos.

This emulator started years ago, as a probably overly ambitious project to emulate the YMP-EL or EL92 "deskside CRAY".
Several of its design decisions probably seem odd, I was trying to juggle several different compilers, all sorts of ideas of the time on what an emulator could or couldn't be, and perhaps worst, doing way too much learning as I went along on how to try to reproduce functionality.

The basic plan was thus:
Implement a step by step instruction set simulator (the current level that the program stands at.)
Begin implementing memory, instruction fetch, allowing whole sections of code to be loaded and then ran as a program.
Begin analyzing the less than fully straightforward execution within the CPU (i.e. it was common to have the Vector units and Address units working at the same time), see how critical this is to proper emulation.
Begin implementing the IOS (input/output system) and IOP (input/output processsor), with the idea to not directly emulate them but emulate/present their functionality if at all possible.

Running CrayCore
Running CrayCore is relatively easy, if you have some knowledge of the standard CRAY PVP opcodes.
These opcodes are given out in the CRAY documentation in Octal, so that's how they're implemented.
Once the program starts, the user is given a listing for most of the registers (Vector are not shown) and an opcode prompt.
"004000" is perhaps the most important, as it currently exits the program. There are still many opcodes not implemented yet, so don't be entirely surprised if it doesn't work right.

Last Updated: May 20, 2015