From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=MAILING_LIST_MULTI, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 4110 invoked from network); 16 Dec 2023 02:04:25 -0000 Received: from minnie.tuhs.org (50.116.15.146) by inbox.vuxu.org with ESMTPUTF8; 16 Dec 2023 02:04:25 -0000 Received: from minnie.tuhs.org (localhost [IPv6:::1]) by minnie.tuhs.org (Postfix) with ESMTP id 2605143E99; Sat, 16 Dec 2023 12:04:20 +1000 (AEST) Received: from lax.lemis.com (www.lemis.com [45.32.70.18]) by minnie.tuhs.org (Postfix) with ESMTP id F2E8743E8E for ; Sat, 16 Dec 2023 12:04:10 +1000 (AEST) Received: from eureka.lemis.com (121-200-11-253.79c80b.mel.nbn.aussiebb.net [121.200.11.253]) by lax.lemis.com (Postfix) with ESMTP id F3C8F280AF; Sat, 16 Dec 2023 02:04:09 +0000 (UTC) Received: from hydra.lemis.com (hydra.lemis.com [192.109.197.129]) by eureka.lemis.com (Postfix) with ESMTP id 4BC162635CA; Sat, 16 Dec 2023 13:04:09 +1100 (AEDT) Received: from hydra.lemis.com (localhost [127.0.0.1]) by hydra.lemis.com (Postfix) with ESMTP id 3981213A0F; Sat, 16 Dec 2023 13:04:09 +1100 (AEDT) Received: (from grog@localhost) by hydra.lemis.com (8.17.1/8.16.1/Submit) id 3BG248JZ006185; Sat, 16 Dec 2023 13:04:08 +1100 (AEDT) (envelope-from grog) Date: Sat, 16 Dec 2023 13:04:08 +1100 From: "Greg 'groggy' Lehey" To: Paul Winalski Message-ID: References: <20231214232935.802BB18C08F@mercury.lcs.mit.edu> <4416CB1B-CDE2-42DA-92F2-33284DB6093F@iitbombay.org> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="SUqD+ols+iQ17jOH" Content-Disposition: inline In-Reply-To: Organization: LEMIS, 29 Stones Road, Dereel, VIC, Australia Phone: +61-3-5309-0418 Mobile: +61-490-494-038. Use only as instructed. WWW-Home-Page: http://www.lemis.com/grog X-PGP-Fingerprint: 9A1B 8202 BCCE B846 F92F 09AC 22E6 F290 507A 4223 Message-ID-Hash: R2KZKL5PX7F2EH34O5HRS3GA75XKJYMS X-Message-ID-Hash: R2KZKL5PX7F2EH34O5HRS3GA75XKJYMS X-MailFrom: grog@hydra.lemis.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: coff@tuhs.org X-Mailman-Version: 3.3.6b1 Precedence: list Subject: [COFF] Re: Terminology query - 'system process'? List-Id: Computer Old Farts Forum Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --SUqD+ols+iQ17jOH Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Friday, 15 December 2023 at 12:51:47 -0500, Paul Winalski wrote: > The usual programming convention for IBM S/360/370 operating systems > (OS/360, OS/VS, TOS and DOS/360, DOS/VS) did not involve use of a > stack at all, unless one was writing a routine involving recursive > calls, and that was rare. Addressing for both program and data was > done using a base register + offset. PL/I is the only IBM HLL I know > that explicitly supported recursion. I don't know how they > implemented automatic variables assigned to memory in recursive > routines. It might have been a linked list rather than a stack. Yes, the 360 architecture doesn't have a hardware stack. Subroutine calls worked with was something like a linked list. Registers were saved in a =E2=80=9Csave area", and they were linked. At least in assembler (I never programmed HLLs under MVS), by convention R13 pointed to the save area. From memory, subroutine calls worked like: LA 15,SUBR load address of subroutine BALR 14,15 call subroutine, storing address in R14 The subroutine then starts with STM 14,12,12(13) save registers 14 to 12 (wraparound) in old save area LA 14,SAVE load address of our save area ST 14,8(13) save in linkage of old save area LR 13,14 and point to our save areas Returning from the subroutine was then L 13,4(13) restore old save area LM 14,12,12(13) restore the other registers BR 14 and return to the caller Clearly this example isn't recursive, since it uses a static save area. But with dynamic allocation it could be recursive. > I remember when I first went from the IBM world and started > programming VAX/VMS, I thought it was really weird to burn an entire > register just for a process stack. Heh. Only one register? /370 was an experience for me, one I never wanted to repeat. Greg -- Sent from my desktop computer. Finger grog@lemis.com for PGP public key. See complete headers for address and phone numbers. This message is digitally signed. If your Microsoft mail program reports problems, please read http://lemis.com/broken-MUA.php --SUqD+ols+iQ17jOH Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iF0EARECAB0WIQSaG4ICvM64RvkvCawi5vKQUHpCIwUCZX0FkwAKCRAi5vKQUHpC I2BxAJ4rr9PQQ7pA5RBkRkHegM5khp9DkgCfWPepjmLbAWdPuqAp5PHrbvY+oe0= =r1JL -----END PGP SIGNATURE----- --SUqD+ols+iQ17jOH--