Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Posting-Version: version B 2.10.1 6/24/83; site harvard.ARPA
Path: utzoo!watmath!clyde!burl!ulysses!mhuxl!houxm!houxz!vax135!cornell!uw-beaver!tektronix!hplabs!hao!seismo!harvard!breuel
From: breuel@harvard.ARPA (Thomas M. Breuel)
Newsgroups: net.micro.68k,net.micro.apple
Subject: Re: 68000 inconsistency
Message-ID: <8@harvard.ARPA>
Date: Fri, 10-Aug-84 18:57:38 EDT
Article-I.D.: harvard.8
Posted: Fri Aug 10 18:57:38 1984
Date-Received: Mon, 13-Aug-84 00:25:20 EDT
Organization: Aiken Computation Lab, Harvard
Lines: 43

Doug MacGregor (Motorolas) writes: 'The 68000 does not lose the upper 8
bits of the address'.

Well, my 68000 *does* seem to loose the upper 8 bits when loading an
absolute address from memory. Again, consider the following code
fragments (they were run as such under LisaBug, and the register
contents are what LisaBug reported):

----------

1000: 4ef9 ff00 1006	jmp $ff001006
1006: 41fa fffe		lea *,a0

	a0 = $00001006

1000: 227c ff00 1008 	move.l #$ff001008,a1
1006: 4ed1		jmp (a1)
1008: 41fa fffe		lea *,a0

	a0 = $ff001008

----------

Or is there another explanation?

						Thomas.

P.S.: About choice of implementation of type tags: given that the LISP
runs on an MacIntosh with very limited memory resources, given that the
Mac has a "fixed" architecture and is unlikely to profit from
Motorola's corrections to the 68000 (as in the 68010), and given that
the LISP performs very well speedwise, I think the choice of putting
type tags into the "unused" msb of pointers, and not explicitely
stripping them before dereferencing (except for the case of indirect
jumps :-) is justified.  Since all type reconisers and selectors are
defined as macros, this efficiency hack even leaves the program
portable.  Normally, I prefer partitioning to tagging, but in the case
of the MacIntosh there isn't much choice.



			Thomas M. Breuel
	...{genrad!wjh12!tardis,allegra!harvard}!gallifrey!tmb