Path: csiph.com!eternal-september.org!feeder.eternal-september.org!nntp.eternal-september.org!.POSTED!not-for-mail From: Lynn Wheeler Newsgroups: alt.folklore.computers,alt.sys.pdp8 Subject: Re: position-independent code (was Re: CMS, Self-hosting and the 6502) Date: Sat, 12 Sep 2026 15:12:56 -1000 Organization: Wheeler&Wheeler Lines: 41 Message-ID: <874ifu0x9j.fsf@localhost> References: <10qehuo$2nu4m$1@dont-email.me> <87h5pqwd5j.fsf@localhost> <10qs7og$129km$4@dont-email.me> <10qt6h6$19mab$1@dont-email.me> <10qucqd$cs9$2@gal.iecc.com> <10qv31u$1l5fk$3@paganini.bofh.team> <10qv7t7$1re07$2@dont-email.me> <10qvlrb$1uf62$2@dont-email.me> <10r0g2r$25l0l$1@dont-email.me> <875x64ugxl.fsf@localhost> <87ld98c634.fsf_-_@debian> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Date: Sun, 13 Sep 2026 01:13:01 +0000 (UTC) Injection-Info: dont-email.me; logging-data="247173"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/Uje1E9n08CiEFwmR5cOS7YsZfRWEc6vY="; posting-host="e5bbf9cf81d96432ad63a411999323a3" User-Agent: Gnus/5.13 (Gnus v5.13) Cancel-Lock: sha1:GsypL6vB+ccNa1fzekbH/tauIt8= sha1:PpD1K43ViYKujvBRN0mojjIqSY4= sha256:jYQPYq4mV0/9U5Hpx2sCjyH3Fe5mUvods4alnEse9H0= sha1:xtqEZwBh25cAYomOePq0JKqaUqw= sha256:ON+IwhZxaMN6Qw5hd/lyog/LOp7bGGaRJ4X0fJDKFnA= Xref: csiph.com alt.folklore.computers:235596 alt.sys.pdp8:2888 Kragen Javier Sitaker writes: > I’ve never programmed the PDP-8, but, as I understand it, its 7-bit > address field in the 12-bit instruction format effectively divides the > 4096-word address space into 128-word “pages”. An 8th bit specifies > which page the address field is interpreted relative to: either a > 6502-like zero page, or the current page. So, in effect, you have two > 5-bit “base registers”: one hardwired to 00000, and the other one that’s > the high 5 bits of the program counter. (Later PDP-8s extended the > address bus to the left and needed additional registers to select which > 12-bit memory space you were running in.) OS/360 compilers generated TXT decks that had RLD (relocation directory) unresolved addresses for other programs that were being loaded in one large group (their "ESD" entry, the ID of program being referenced and displacement within the program). The "loader" would resolve the "fixed" desired addresses (from combination of ESD and displacement) before execution. CP67/CMS adopted OS/360 compilers (and later VM370/CMS the OS/370 compilers). By comparison TSS/360 kept an external map for each virtual address space .... where its programs were loaded. Issue was initially virtual address space was 16 1mbyte virtual address segments. Somebody might 1st load the fortran compiler into its segment one and somebody else might have first loaded something else into segment one and then also wanted to load the ("same") fortran compiler image into its virtual address space. The OS/360 paradigm wouldn't support it ... it needed either 1) a different copy of the fortran compiler image loaded, if it was to run at different address or 2) had a predefined location for every application in the system (in order to have virtual address space to have a single shared application image). With only 16 shared segments, would only be able to have 16 locations for predefined "shared image" application copies. -- virtualization experience starting Jan1968, online at home since Mar1970