On 5/10/24 16:37, Fred Cisin via cctalk wrote:

> I was told that some of the many locally applied patches were done by
> writes to array elements with negative subscripts.
> 

CDC 6000 (the one with PPUs) OS (SCOPE, KRNONOS, MACE and NOS) used a
single PPU that, among other things, monitored the contents of location
1 in each control point's field length.  Normally, it was zero; but if
it became nonzero, it took the format of a system request, very often to
be serviced by a certain PPU program.

In CDC FTN (and probably RUN), you could get the (60 bit word) address
of a variable using either the LOCF() function call or .LOC. unary
operator, depending on the dialect of FORTRAN.

So, to put something into that location 1 address word was pretty
straightforward.

        INTEGER AX(1), IX;
        
        IX = LOCF( AX)
        AX ( -IX-1) = <system request.
        
You'd add a little loop waiting for the system request location to go
back to zero, but that was it.   A lot of "quick and dirty" code was
written that way and cleaned up later for distribution.

We did the something similar with BASIC on the F-85 micro to write
directly to the CRT buffer--display something, search memory for it,
change the display to confirm and you have your video buffer address.

--Chuck


Reply via email to