🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.prolog
Article #840

Re: taking a predicate name as an a

#840
From: Richard A. O'Keefe
Date: Fri, 25 May 1990 01:56
62 lines
3766 bytes
In article <26900003@teapot>, milgr@teapot.prime.com writes:
> I like Quintus, however it is out of my department's price range for
> two reasons:
> 1. Quintus does not want to port to Primos.  I suppose that if
>    Prime paid enough, Quintus might, but our budget is real
>    limited.

What's one of the big no-nos for writing portable C code?
Assuming that 'foo *' and 'long' (or possibly 'int') are the same size.
If you were twiddling tag bits on pointers in C, what assumption
would be very natural, indeed, very hard to avoid?
What machines does that break on?  [Hint: the name starts like PR...]

Given that the Quintus Prolog emulator was designed for machines
with "enough" general registers, and that a PR1ME 50-series machine
running in 32V mode has, strictly speaking, _no_ *general* registers
(you think the 386 is bad?  You've not seen 32V mode), is it a
surprise that Quintus don't want to port to PR1MEs?

Then too, there are those 64 kword (where word=16 bits) segments.
32I mode may be able to ignore them, but in 32V mode the X and Y
index registers wrap around at 16 bits.  A PR1ME pointer is
	1 "validity" bit (is the pointer usable at all)
	1 "length" bit (is this a 32-bit or a 48-bit pointer?)
	2 "ring" bits (protection ring 0=kernel,1=system,3=user)
       12 "segment" bits (the 4k segments are divided, roughly, into
	   O/S 00xxxx, shared libraries 01xxxx, user 10xxxx,
	   system per-user data (e.g. command interpreter) 11xxxx;
	   so a user process has up to 1k segments; this was under
	   PR1MOS, what PR1MIX does I have no idea)
       16 "word" bits (16-bit word within segment)
	4 "bit" bits (in a long pointer, actually only 1 bit is used)
       12 "spare" bits (in a long pointer)
X- and Y-register indexing affects only the "word" bits of an address.
If you want an array bigger than 64kwords, you have to use the L
register and do the addition yourself.

    The PCL (procedure call) instruction poses serious difficulties
of its own, which I'll skip.  Suffice it to say that I'm sure it
suits Fortran 77 very well.

    I have written assembly code for a P400.  (The first model from
PR1ME to include the 32V instruction set.)  If you've read Stephen
Jay Gould's "Wonderful Life", you'll understand when I compare it to
Opibinia.  How can something that strange live?  I regard the people
who put Salford Prolog together as heros of the modern world, even
if they did make a number of pointless changes to Prolog.  Anyone who
has what it takes to make a usable Prolog system on so unrelentingly
hostile an architecture has my whole-hearted admiration.  I think they
deserve that market niche to themselves!

    Let me offer you a fair comparison:  I was one of the people who
made Quintus Prolog run on Xerox Lisp machines.  That hasn't got C at
all.  It is my considered opinion that it would be more work for
Quintus to port Quintus Prolog to PR1ME machines running the 32V
instruction set than it was to port Quintus Prolog to Xerox Dandelions.
I no longer work for Quintus, and am not privy to their future porting
plans, but I would be _very_ surprised if they announced a PR1ME port
any time this century.  
-- 
"A 7th class of programs, correct in every way, is believed to exist by a
few computer scientists.  However, no example could be found to include here."
Technical Details
Message-ID: <3064@goanna.cs.rmit.oz.au>
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!samsung!munnari.oz.au!bruce!goanna!ok
References: <3017@goanna.cs.rmit.oz.au> <26900003@teapot>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!attcan!uunet!samsung!munnari.oz.au!bruce!goanna!ok
From: ok@goanna.cs.rmit.oz.au (Richard A. O'Keefe)
Newsgroups: comp.lang.prolog
Subject: Re: taking a predicate name as an a
Message-ID: <3064@goanna.cs.rmit.oz.au>
Date: 25 May 90 01:56:50 GMT
References: <3017@goanna.cs.rmit.oz.au> <26900003@teapot>
Organization: Comp Sci, RMIT, Melbourne, Australia
Lines: 62