On 2/16/25 23:12, ben via cctalk wrote:
Did any classic computers have a subroutine call as (S++)=PC, PC=(EFA)
as well as the standard call (--S)=PC,PC=(EFA) ?
One  could have a virtual stack machine, using helper functions without having to deal with return addresses on the stack.
Ben.


The Microdata 32/S had a stack 5 deep.  There was a sort of "classic" register which was one of the general 16 bit registers and was the stack head.  There was a 4 deep hardware stack and hardware implemented pointer to allow the "top" of the 4 stack head registers and that stack top perform and operation, pop or push the result (manipulate the stack register) and leave the result in the stack head.

Flags allowed for efficient popping of the "bottom" of the stack to roll to memory, so there wasn't just a 4(5) level stack.

Firmware implemented an environment base register indexing option to allow a version of XPL for the machine called MPL to have local environment registers.

There was other indexing and one of those registers addressed the entire stack space to implement external variables.

There was very little assembly in the system software.  the Operating system for the original machine was called Genisys.  It was implemented from the boot in MPL.

A later product based on the 32/S which they called 'Express' ran an OS called EMOS and an enhanced compiler (system implementation) called EPL.

There was a CSPI implemented ANSI Cobol and Fortran native to the EMOS system.  The system was a contemporary to the 11/4x etc generations.  Stupid marketing and inept managment failed to take advantage over the DEC OS and language support and products, and eventually was abandoned and sold to Olivetti.

The performance was a good bit better than  the DEC products, but were ineptly marketed, very few sold, and horrible manufacturing doomed it.

I was one of the OS implementers. Went to Italy quite a bit supporting the product transition.


Reply via email to