When timesharing was a new thing, people tended to create software for virtual machines of all sizes.Are there any simple Virtual designs for 32 bits that could easly implimented with a 2901 cpu? After the IBM PC, I suspect all this stuff was mostly forgotten, lost from the public eyes.
In 2015 Long Tien Nguyen and Alan Kay proposed a simple 32 bit virtual machine called “Chifir” in their paper “The Cuneiform Tablets of 2015”. The idea is to store executable versions of historical software systems to that future archeologists can just implement the simple VM in whatever computer they have and then experience the saved software.
The instruction set is not very compact - each instruction takes four 32 bit words even though several instructions need less than three arguments and there are fewer than 16 instructions (so a 32 bit opcode is absurdly wasteful).
I like the idea of something simple and regular, even if it loses some efficiency.
Do you have a reference for SKIMP? I can’t find anything. I found these candidates which may or may not be the kind of thing you’re thinking of:
- BANCStar, originally bytecode for an interface-building tool but used also as a language
- The Dis virtual machine that executes Limbo code is a CISC-like VM
- EM, the Amsterdam Compiler Kit virtual machine
- Ericsson implementation of Erlang uses BEAM bytecodes
- Infocom used the Z-machine
- p-code of UCSD Pascal implementation of the Pascal language
- Pick BASIC also referred to as Data BASIC or MultiValue BASIC
I’m not sure if various Lisp and Scheme bytecodes are targeting something recognisable as a virtual machine in the sense you’re looking for.
Actually this page has appropriate information including about SNOBOL and TinyBasic:
Ah thanks, a skinny IMP, circa 1979, with a 32-bit virtual target.
Three commercial computers that were specifically designed to run virtual machines:
Nice to see someone else remembers the QM-1! I was friends with one of their systems programmers. It was a fascinating system!
You might be able to help with the question “What was the history of Nanodata Corporation?” on the Retrocomputing Stack Exchange.
I used IMP-77 on a 32-bit Interdata 7/32 “mini” in 78/79. the OS, Mouses, was a cut-down version of EMAS (also written in Imp) and in-use at Edinburgh University (and I think Manchester).
Nice to know that there is a cut-down version of it floating about - it might even be a candidate for a self-hosting retro style system, but there’s the need to compile the compiler …
skimp: http://history.dcs.ed.ac.uk/archive/languages/skimp/skimp_ii.html (and all the files in that folder). We also rebuilt Imp77 for Intel if anyone wants to bootstrap anything. Andy Davis’ site for that has disappeared but we archived a copy at http://history.dcs.ed.ac.uk/archive/languages/imp77-tmp/abd/
(Andy used Skimp to bootstrap Imp77 for Intel…)
Fiona Culloch got it running under emulation at some point. With a bit of effort I could find the drive with the code if you wanted to try it. Wasn’t 100% reliable but was a good start…
I did try imp77 under Linux some time back. Interesting memories!
Must… Not … Look … Darn!
I loved going to Moray House on a Thursday night all those years ago and using Mouses and chatting to the people there - and probably learning more then than I did when I went to Napier…
My current project is a 32-bit virtual machine running on a 16 bit micro with an 8 bit data bus (The BCPL cintcode system). I wonder if imp77 could be re-targeted to cintcode… I have 512KB of RAM, now how much did that old Interdata 7/32 have …
Building new compilers was great thing to do in the late 1960’s and early 1970’s. The trouble is what OS do you
run the compiler under? Can you get source? Is it portable? Can you self compile? Will your I/O devices port over.
I think the best solution is run a ibm 360/370 emulation and have it work out of the box for the old stuff.
512Kb is only 128K 32 bit words.
PS. Why did not compilers of that era, did not make life simple and have keywords reserved?
Dunno about porting icode to cintcode. icode isn’t meant for interpreting, it’s input to a compiler back-end, same principle as the .net infrastructure.
I found the Mouses emulator. I’ve put it online at http://gtoal.com/Mouses/