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/
I’ve just added some additional information to my post there.
Interesting read. Scotland is 5 years newer than Canada. In 1980 our IBM1130 was was replaced with a
VAX. Also how come the history archive never seems to got fixed from the crash? Was tape backups never made? I want read more about the software from 1972-1977.
Some background about Chifir, and why it doesn’t really apply to the purposes of the head post here:
I just read the paper the other day, and these aren’t issues at all from their point of view.
What they were aiming for was explicitly the opposite of a lot of VMs: rather than having a general VM able to run anything fairly easily but complex to implement, their approach was to have each project have its own VM that was as simple to implement as possible (“in an afternoon” was their goal) that would then run code for that VM they’d provide, on top of which in turn the original software would run. Thus, creating the historical archive in the first place was a fair amount of work, but getting it running a thousand years in the future would be fairly easy.
The Chifer instruction set was perfect for running an emulator for a Xerox Alto, which was all that was necessary for that particular archive, though Chifer ranged from poor to useless for other systems.