I thought I'd let others know that I have been working on the ES40 emulator. I have it compiling and running, non-SMP, on Windows 10 and Cygwin. I have found and fixed quite a few issues. I'm right now working through determining why a secondary processor is not fully recognized (it is seen as available, but not configured or active). I don't think it is quite ready for prime time and have not checked in my code changes (I do have a github repository for it). Also, the code is not terribly efficient, It does use calculated jumps, but also does all kinds of questionable checks. After I get the SMP working, I'll look to make the code much more efficient.
I found quite a few issues, some can be resolved, some require rearchtecture...
The current issue I'm working on is that the interrupt processing has a number of issues. The biggest is the timer interrupt processing. Currrently, the timer interrupt get set, but never cleared. This causes the interrupt processing to get into a tight loop. It checks the flags that an interrupt is pending (timer in this case) and sets the PC to the PAL interrupt processing code. The PAL interrupt processing code tries to clear the flag, but it does not get cleared. When returning from this code, the emulator attempts to execute the next instruction and checks for any interrupts. Since the interrupt flag is still set, the PC is again set to the PAL interrupt processing code. And so on. When there is just one CPU, the processing is sufficiently slow enough to still have the issue, but the loop is not so tight and allows other instructions to be processed. When there is more than one CPU, one of the CPUs, usually the primary, will execute fine, still with the loop, but the other CPUs will be in the tight loop.
The architectural issue is there are quite a few places where a component thread will access data, both read and write, in another component thread without the use of any kind of synchronization (mutex). Now this is not a huge problem because the emulated software is multiple execution thread safe, but it may cause some on expected and random issues. At some point, I'll reachitect the entire emulator (one thread should never access the data in another thread).
That is very good news. However the link to firmware at the ES-40 project page is dead, so while there are some others that may want to try it, they can not.
Do you have write access to the ES-40 project to be able to post updates there?
Also one thing that is very useful to have in an emulator is a way to do paravirtualization. That is provide a way for things like VMS system services or device drivers to run code on the native platform.
Think of the advantages of ES-40 being hosted on future x86_64 VMS or even IA64/VMS.
Well I have stopped work on the es40 emulator. The multithread code was not protecting shared resources well enough, which caused some timing issues. My new emulator, DECaxp, will replicate a 21264 CPU as close as possible. Each CPU will have 4 integer threads, 2 FP threads, plus 3 other threads. I'm not too sure how many threads the system board emulation will require, yet. I'm also not emulating PALcode, like es40 does, some of which does not match the real PALcode.
It was brought to my attention that I did not have a URL to where the code is for the emulator. So here it is: https://github.com/JonathanBelanger/DECaxp. As for paravirtualization, I will look into it. I'm still implementing the actual CPU emulation (currently at Dcache and Bcache an associated code). I have all of the following near completion:
2. Instruction decode
4. Branch prediction
5. All instructions (integer and FP)
6. Integer Pipeline (4 of them)
7. FP pipeline (2 of them)
8. Dcache (I'm refactoring this at present)
10. System Interface (refactoring along with Dcache)
12. All IPRs and CSRs
13. All initialization code (CPU only)
14. Pretty much all threading code, which includes thread-to-thread interfaces
malmberg December 12 2017 HPE only makes the most current version of OpenVMS Alpha / IA64 /VAX available to hobbyists. When I had access to the Alliance 1 program it was the same. No public downloads are allowed by HPE.
nmbonao December 08 2017 Is anybody knows OpenVMS 8.2 version downloadable version? or CD copy? Thank you very much
aarommes December 02 2017 Bitcoin and Blockchain enthusiasts ( plus distributed computing ) please connec / reply: http://www.openvmshobbyis t.com/forum/viewthread.ph p?forum_id=130&thread_id= 2991
malmberg September 10 2017 https://sourceforge.net/p /vms-ports/wiki/VMSInstal lation/ For the most part just use VMS 6.1 media instead of 7.3. But why run the older release?
DoeveR August 07 2017 Where can I find the write up on running VMS 6.1 using the simh emulator?
Bart March 20 2017 Happy to have found my password again!