5 ms·
It was clever --- far too clever, unfortunately. C and GOC was a bit of an afterthought; GEOS was originally programmed in object-oriented 8086 machine code, vi
by david-given 11y ago
It was clever --- far too clever, unfortunately. C and GOC was a bit of an afterthought; GEOS was originally programmed in object-oriented 8086 machine code, via a special assembler called ESP. GOC was a hack to make Borland produce all the same OO magic that ESP did. It was a reasonable object system, not actually that dissimilar from Objective C, but so, so proprietary.
The implementation didn't just rely on the 8086 architecture, it was inextricably intertwined with it. It worked like PalmOS where memory was referred to by object handle. To access memory, you'd lock it, then you'd get back a pointer. Once you'd finished, you'd unlock it again. This let the GEOS kernel page in your memory from swap. What it actually did was assign one of your segment descriptors to point at the locked block, which you'd dereference with ds:[offset] or es:[offset]. Very elegant, and totally using the 8086 segment infrastructure the way it was intended to be used... good porting to anything else, however!
Hey, I still have my old Geoworks SDK CD. (Which I scrounged free from someone. Useful tip: if you want your platform to be popular, don't make the SDK cost $1000.) I may have accidentally left the PDF of one of the manuals here. http://www.docdroid.net/vclb0s2/concepts.pdf.html http://www.docdroid.net/vclb0s2/concepts.pdf.html
Totally ahead of its time. Totally doomed.