Nina Kalinina has been posting on her Mastodon account on the progress she is making with reverse engineering the VisiCorp Visi On OS’s SDK. A few hours ago they posted about getting the first 3rd party app ever published for it using that documentation. There is still a bunch more work planned, more documentation, maybe a BASIC for it, etc. but it is very impressive work.
Remarkable and excellent! From the fediverse thread:
I described a tiny number of functions so far, there are 118 lightweight BITS system calls and 170 “heavy” system calls, and I’ve described like 10 :tiredcat: But it’s good enough to make an app, so…
No system call docs, right?
the only docs are: two articles in old computer magazines that are mostly “ad copy” rather than the factual description of the system, one Usenet post from 1983, and one “visi on unprotect.txt”
A conversation with William T. Coleman, a group manager at Visicorp, from BYTE, republished by Marcin Wichary in the GUIdebook gallery:
The whole idea of this architecture is that of nested abstract machines. The concept originated with Edsger Dijkstra back in his THE (Technische Hochschule Eindhoven) operating system in the early 1960s. You have a low-level machine that implements all the very very basic functionality, and that’s Visihost. That does the reading and writing of basic files. But the archive does a lot more – and that’s in Visi On. It will do your basic device puts and gets – whatever it takes to read and write to a device – but it doesn’t know anything about this whole virtual device interface above it. You have to have a driver that knows in between the two.
So what you have is a very low-level machine that provides just basically a virtual memory machine. That’s very important. All these products run in the pseudovirtual memory that we developed in software. You have this low-level machine, and above that is Visi On itself, which is much higher level services for products, and it’s machine independent. We’ve nested the greatest amount of coding in the smallest possible area.