On Fri, 21 Feb 2025 12:00:07 -0600
Paul Koning <paulkoning(a)comcast.net> wrote:
> > What is the problem with ISRs running in a user stack? The ISR
> > runs, exits, the stack is cut back, and net effect on the user's
> > stack is zero.
>
> A stack access fault in user mode kills the process, in kernel mode
> (certainly in an ISR) it kills the whole system. You can't leave the
> integrity of the OS at the mercy of the application having a valid
> stack.
Additionally, the ISR could leave potentially sensitive information in
user memory, depending on exactly how the stack and memory protection
are implemented. Consider an architecture where the stack pointer is a
normal address register (as on the -11, the 68k, etc.) and protection
is on a per-page basis with no bounds checking (i.e. there's no special
address space for the stack, just a particular chunk mapped into normal
user memory.) It'd be trivial for a user program to sit and "scrape"
the stack for stray bits left by passing ISRs - say, waiting to see if
the UART service routine happens to jot down something that looks like
an admin password coming off one of the terminals.
> On19 Feb 2025 18:39:08 -0500, Chuck Guzis via cctalk wrote:
>
>>>
>>>> One of most ingenious coding tricks to me was the problem of saving and
>>>> restoring all registers without resorting to an exchange jump. We used
>>>> that one as a test for applicants.
>>>
>>> Argh... I know I've seen this trick, but it's been too many years. How
>>> about a hint?
>>
>> It uses the RJ instruction to record register content, bit-by-bit.
>> Think about it--RJ is about the only instruction that can modify memory
>> without fiddling with the A6 and A7 registers.
>>
>
> Of course... I vaguely recalled there was a bit-by-bit save, but didn't
> think of the RJ. Thanks.
A full example of this code is in the DEBUG package of CAL SNOBOL <https://mcjones.org/CAL_SNOBOL/>, starting at label SAVEREG:
Original version: https://mcjones.org/CAL_SNOBOL/UArizona/SNOBOL.MAC.html
Revised version: https://mcjones.org/CAL_SNOBOL/UTexas/DEBUG.html
As those of us with a few years will know, Tony Hoare (and Jill's)
implementation of Algol 60 on the Elliott 803 was a highly significant
event in the history of computer languages. It was the first practical
commercial Algol compiler, launched block structures languages, and
played a part in Elliott selling nearly 300 803B computers at a time
when 300 computers was a big number.
Obviously the US preferred Fortran and COBOL for commercial use, and
there were other Algol compilers in some shape or other knocking about
in universities. But I'd say this implementation put block structured
programming into the mainstream. (And it was the first high level
language I used, but that's beside the point).
Now some kid on Wikipedia thinks it's not notable and is trying to
delete it because he can't find much on it doing a Google search.
Wikipedia may be sinking under activists and egos, but I think we need
to put this misapprehension straight. Unfortunately we may be arguing
with an idiot.
https://en.wikipedia.org/wiki/Elliott_ALGOL
If course, if anyone thinks it wasn't significant, that's an opinion
too, but I'd like to hear why.
Thanks, Frank.
I saw an email posted to the predecessor mail list asking if anyone had a picture of an IBM 4506 terminal. I was looking through the September 1973 issue Modern Data and saw an article on page 70 about the New York Times’s indexing efforts. It said that they were using IBM 4506 terminals and it has a picture of a large workroom (identified as “The Times index room”) with a bunch of terminals which I assume must be 4506’s (although the caption does not explicitly state that). The magazine is available on BitSavers. Look for the issue with file name Modern_Data_1973_07.pdf.
Tommy Chang
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.
On Tue, 18 Feb 2025 12:00:10 -0600
cctalk-request(a)classiccmp.org wrote:
> On the more than "one stack pointer" in the subject, it was a bit
> arbitrary on the PDP-11 (or VAX) as the pre/post indexed indirect
> addressing made every register a stack pointer. But this is where I
> get hazy between DEC and 68K, and I did a lot more 68K. I'm pretty
> sure you could do a move.l PC, An and you could certainly do an
> indirect jmp (An), so effectively you could have multiple call stacks
> if you wanted.
Almost, kinda-sorta. The JSR and RTS instructions are hard-wired to use
R6/SP, and there's nothing you can do about that. You *can* implement a
return off another "stack" by doing e.g. MOV @(Rn)+, PC as long as you
save the return address by hand, first - but this affects the flags,
unlike JSR/RTS.
> On 15 Feb 2025 18:41:21 -0800,Van Snyder <van.snyder(a)sbcglobal.net <mailto:van.snyder@sbcglobal.net>> wrote:
>
> Harry Husky, the G15 designer, was one of the computer design pioneers.
> He became a professor (maybe adjunct) at UC Berkeley.
As far as I know, Huskey was a regular professor. Two of his Ph.D. students went on to win the ACM Turing Award: Niklaus Wirth and Butler Lampson:
https://mathgenealogy.org/id.php?id=10185
Huskey went on to found the Computer Science department at U.C. Santa Cruz.
> On 16 Feb 2025 18:00:35 -0700,ben <bfranchuk(a)jetnet.ab.ca <mailto:bfranchuk@jetnet.ab.ca>> wrote:
>
> I have trouble understanding the fine points of accessing a local
> variable in Algol with a display. Books tend to spend more time
> on the evils of a dangling else, and gloss over the run time action of
> a display.
> Have a good example or reference book I can find free on line.
The original book on that subject is ALGOL 60 Implementation by B. Randell and L. J. Russell. It’s available here with permission from the copyright holder:
https://www.softwarepreservation.org/projects/ALGOL/algol60impl/#ALGOL_60_I…