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.