I assume you refer to the "case ... of" construct in PASCAL record types
which allowed you to arbitrarily "cast" - to use a C term - variables to
any type you wanted and could be (ab)used to assign integers to pointers.

The ability to call PP programs via RA+1 calls was not a loop hole, but a
design feature of the CYBER/6600 operating systems like COS, KRONOS and
NOS. It simply involved writing to the word in location 1 (RA+1) relative
to the start of the segment of memory assigned to your program by the OS.
The contents of the word were essentially the name of the PP program and
some parameters - typically the address of a parameter block somewhere in
your segment of memory. When the OS processed the request, it cleared
location 1 (RA+1). This was the standard mechanism used to request OS
functions like writing to a file etc. Higher level languages typically
wrapped this in library functions (or macros when programming in assembler
i.e. COMPASS), but if the language allowed negative array offsets and the
ability to determine the address of the array, then it was trivial to
explicitly call PPs via RA+1 calls (even more trivial using COMPASS).

The OS periodically scanned the RA+1 words of each of several programs
currently in memory (i.e. a program assigned to a "control point") and if
the RA+1 contents were non-zero, then the OS allocated a free PP to the
request and loaded and started the requested PP program into that PP and
finally cleared the word at RA+1. You typically would expedite this by
after writing the PP request to RA+1, execute an "exchange jump"
instruction which stopped the user program from running and re-entered the
OS to allow it to soon after process pending RA+1 requests.

I hope this all makes sense.

On Thu, May 16, 2024 at 3:28 PM Mark GREEN via cctalk <cctalk@classiccmp.org>
wrote:

>  I worked on the run time support for the early versions of Pascal on the
> CDC 6000 series.  Depending upon the character set determining the end of
> line was a major pain.  There was a loop hole in the Pascal type system
> that allowed you to call any PPU program directly from Pascal.  It was not
> widely known, but it came in handy at times.
>     On Thursday, May 16, 2024 at 01:52:12 a.m. EDT, Chuck Guzis via cctalk
> <cctalk@classiccmp.org> wrote:
>
>  On 5/15/24 22:07, Tom Hunter via cctalk wrote:
> > I thought the CDC CYBER and 6000 series mainframes were great systems
> which
> > performed admirably for what they were designed for. I liked COMPASS,
> SYMPL
> > and NOS 1 and 2. I didn't do much work in CYBIL, but it was basically an
> > enhanced version of PASCAL suitable for operating systems work. What is
> > there not to like? These mainframes and the CDC 7600 outperformed every
> > other machine until Seymour Cray released his own machines.
>
> SYMPL was pretty new when I left the 6000 series behind.  Much of the
> code, but for some utilities was still assembly.  FORTRAN (FTN) was used
> for some simple things.
> I worked on Zodiac, which was a multi-CPU COBOL  (!) multithreaded
> multitask OS written for USAF--very unlike anything CDC has ever had..
> Lots of ECS and oceans of 844 drives. Special Systems Division was a lot
> of fun back in the day.  Lots of variety before they started cycling
> down work at SVLOPS.  My final years at CDC Sunnyvale were with STAR,
> only to be resurrected in the 1980s with the ETA machines.
>
> I think the ROVER people were among the last people at SVLOPS, but I
> can't recall precisely.
>
> A little factoid is that the 6000 series was very good at running COBOL.
>
> --Chuck
>
>
>
>

Reply via email to