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