[comp.sys.amiga] Piggyback CPU boards

klm@munsell.UUCP (12/08/87)

I seem to recall that there is a 68020/68881 board for the Amiga that
you install by pulling out your 68000 and plugging this board into it's
socket.

Is there such a beast?

Is it too Amiga specific to be used as a general 68000 replacement?

A friend of mine has a <generic 68000 board> that he would like to
get a performance boost out of and this would seem like a rational
way to go without replacing his whole system.  He is a hardware person
and probably wouldn't be too afraid of doing some, ahem, hacking to
make it work.

If you have any comments, please e-mail them to Ted Warren tlw@munsell.

Don't reply to me or post to this group.  He doesn't read this group,
and I am leaving this site as of the 18th of December.  I may be back
on the net with a new address in the future.  Then again, I may not.
Goodbye Y'all, it's been fun.

-- 
Kevin McBride - Newsaholic in Withdrawal  //       | Goodbye and so long
Eikonix - A Kodak Co.                    //        |  until I get an account
Until December 18th                  \\ //  Amiga  |   set up at my new
{encore,adelie}!munsell!klm           \X/   Rules! |      employer...

spierce@pnet01.cts.com (Stuart Pierce) (12/09/87)

A friend of mine added a 68020/68881 board to his Amiga 500.  All of the games
that we tried broke.  I don't know whether this is because of the heavy
copy-protection on the software, or what, but it has discouraged me from even
considering a board of this type.
Stuart Pierce

cmcmanis%pepper@Sun.COM (Chuck McManis) (12/10/87)

In article <2118@crash.cts.com> spierce@pnet01.cts.com (Stuart Pierce) writes:
>A friend of mine added a 68020/68881 board to his Amiga 500.  All of the games
>that we tried broke.  I don't know whether this is because of the heavy
>copy-protection on the software, or what, but it has discouraged me from even
>considering a board of this type.

Generally, people who write games have the annoying habit of ignoring all
the rules in the interest of speed. Invariably this breaks when the user
upgrades the system. (Which is why the rules are there in the first place).
What usually gets people is the Move SR, instruction which is privledged
in the '020. If they had bothered to use the exec GetCC() function 
it would not be a problem. The other problem is that these programmers
often have is that they use software timing loops that on the '020 make
no sense at all. So the bottom line is if you just want to play games
an '020 is not for you. It does however make compiles go faster.



--Chuck McManis
uucp: {anywhere}!sun!cmcmanis   BIX: cmcmanis  ARPAnet: cmcmanis@sun.com
These opinions are my own and no one elses, but you knew that didn't you.

rusty@vertigo.UUCP (M.W.HADDOCK) (12/10/87)

In article <36064@sun.uucp> cmcmanis@sun.UUCP (Chuck McManis) writes:
>In article <2118@crash.cts.com> spierce@pnet01.cts.com (Stuart Pierce) writes:
>>A friend of mine added a 68020/68881 board to his Amiga 500.  All of the games
>>that we tried broke.  I don't know whether this is because of the heavy

I guess you didn't try Marble Madness....  I play it on my CSA '020.
The '020 actually makes the game playable and ==VERY== responsive - even
by TWO people and then it's still got some CPU to spare!!!  And no,
I play from a Marauder backup but I haven't moved the thing to RAM yet.

>>copy-protection on the software, or what, but it has discouraged me from even
>>considering a board of this type.
>
>So the bottom line is if you just want to play games
>an '020 is not for you. It does however make compiles go faster.

Maybe I'm not much of a game player but I'd try the game on an '020
first before saying "pphhht" to it.   Compiles with Manx go REALLY
fast especially when everything's in RAM.  I've never seen a compiler
move that quick b'fore.

Cache off,

			-Rusty-
-- 
Rusty Haddock {{uunet!likewise!}cbosgd,rutgers!moss}!vertigo!rusty
AT&T-IS Consumer Products Laboratories - Human Factors Laboratory
Holmdel, New Joysey  07733		(201) 834-1023
     -- Being schizophrenic is better than living alone. --

john13@garfield.UUCP (John Russell) (12/11/87)

In article <36064@sun.uucp> cmcmanis@sun.UUCP (Chuck McManis) writes:
>In article <2118@crash.cts.com> spierce@pnet01.cts.com (Stuart Pierce) writes:
>>A friend of mine added a 68020/68881 board to his Amiga 500.  All of the games
>>that we tried broke.  
>
>Generally, people who write games have the annoying habit of ignoring all
>the rules in the interest of speed. Invariably this breaks when the user
>upgrades the system. (Which is why the rules are there in the first place).
>What usually gets people is the Move SR, instruction which is privledged
>in the '020. If they had bothered to use the exec GetCC() function 
>it would not be a problem. 

I've seen this mentioned a number of times, but no concrete examples of how
it would be used or cases which would break with a 68020.

Is moving the status register something that would only happen if you used
assembler, or do any of the compilers generate it in certain cases? I certainly
wouldn't want statements like "if (x == 0)" to start breaking :-) ! I imagine
someone skilled enough to program a game on the Amiga in assembly who didn't use
GetCC() when appropriate simply had't run into it, tucked away as it is in the 
middle of the other Exec functions.

Speaking of things breaking, is a numeric constant of the form 08 or 09
strictly legal under K&R C? It showed up in an old C-A program compiled under
Greenhills C, and Manx complained since it expected numbers starting with 0
to be either hex (0x...) or octal (0...).

John
-- 
"Klaatu barada nikto... I always wondered what those words meant."
"It means live from New York, IT'S SATURDAY NIGHT!"
		-- Ronald Reagan (Phil Hartman) shows Mikhail Gorbachev
		   (Danny DeVito) the Washington sights

dillon@CORY.BERKELEY.EDU (Matt Dillon) (12/12/87)

>I've seen this mentioned a number of times, but no concrete examples of how
>it would be used or cases which would break with a 68020.
>
>Is moving the status register something that would only happen if you used
>assembler, or do any of the compilers generate it in certain cases? I certainly

	I know of no compilers which use MOVE SR, it is strickly a
hand-programmed opcode.  The SR contains the condition codes, supervisor state,
trace mode, and interrupt mask.  The only reason anybody uses MOVE SR,x  is
to check the trace mode, supervisor state, or interrupt mask.  The condition
codes can be read/written with MOVE CCR.  Motorola decided MOVE SR should 
become privilaged (user programs should not know about supervisor flags) under
the 68010 and 68020.

	I see it in copyprotection a lot, but not much else.

>Speaking of things breaking, is a numeric constant of the form 08 or 09
>strictly legal under K&R C? It showed up in an old C-A program compiled under

	Not legal.  It is supposed to be octal.

				-Matt

cmcmanis%pepper@Sun.COM (Chuck McManis) (12/12/87)

>I've seen this mentioned a number of times, but no concrete examples of how
>it would be used or cases which would break with a 68020.

What happens is that most games are written in assembler for speed. The
68000 keeps its condition codes in the status register. When you want to
check some combination of the status bits the assy programmer moves the
status register into a data register and then uses the TEST instruction
to sample the bits of interest. On a 68000 this works fine, on an '010
or '020 it cause a supervisor trap. 

> Is moving the status register something that would only happen
> if you used assembler, or do any of the compilers generate it
> in certain cases? I certainly wouldn't want statements like "if
> (x == 0)" to start breaking :-) ! 

Yes, all of the high level languages I know of use the GetCC form to 
get the condition codes from the status register.

>                               ... I imagine someone skilled
> enough to program a game on the Amiga in assembly who didn't
> use GetCC() when appropriate simply had't run into it, tucked
> away as it is in the middle of the other Exec functions.

Wrong, strangely enough a lot of people who program games for the Amiga
seem to be stuck in a C64 mentality mode. You can recognize them by their
desire to go to the hardware first rather than see if the OS can provide
what they need. I realize that sometimes this is required and have no
qualms with it when people can say "Well I tried using function X and 
just couldn't get the speed I needed, so I went directly to the hardware."
But things like dropping data in to absolute memory locations, doing 
their own memory allocation schemes (which cannot be later made to specify
chip memory only) etc etc. They say, "I'm not using Intuition, so why 
should I use Exec?" 

--Chuck McManis
uucp: {anywhere}!sun!cmcmanis   BIX: cmcmanis  ARPAnet: cmcmanis@sun.com
These opinions are my own and no one elses, but you knew that didn't you.

phils@tekig.TEK.COM (Phil Staub) (12/12/87)

In article <8712111630.AA17999@cory.Berkeley.EDU> dillon@CORY.BERKELEY.EDU (Matt Dillon) writes:
>	I know of no compilers which use MOVE SR, it is strickly a
>hand-programmed opcode.  The SR contains the condition codes, supervisor state,
>trace mode, and interrupt mask.  The only reason anybody uses MOVE SR,x  is
>to check the trace mode, supervisor state, or interrupt mask.  The condition
>codes can be read/written with MOVE CCR.  Motorola decided MOVE SR should 
>become privilaged (user programs should not know about supervisor flags) under
>the 68010 and 68020.
>
>	I see it in copyprotection a lot, but not much else.
>
>				-Matt

Check the edge of the page describing the MOVE CCR,<ea> instruction in
the 68000 Programmers Reference Manual, and you'll see a little black
bar indicating that a MOVE with a source operand of CCR is a
68010/68012 only instruction. This is the real problem. 68000 programs
often use MOVE SR,<ea> to read the condition codes, since the MOVE
CCR,<ea> instruction does not exist. 68010 programs *should* use MOVE
CCR,<ea> to achieve the same purpose (i.e., if *all* they're interested
in is the condition codes). There is no single solution which works on
both processors, hence the GetCC() function. AmigaDOS determines which
processor is installed on bootup and ensures that the right instruction
(MOVE CCR, or MOVE SR,) gets executed as a result of branching to the 
GetCC vector in the jump table for the Exec library.

Phil

-- 
------------------------------------------------------------------------------
Phil Staub                     "I do NOT approve. I merely said I UNDERSTAND."
tektronix!tekigm2!phils                                              - Spock
phils@tekigm2.TEK.COM

randy@peora.ccur.com (Randy Hendry) (12/17/87)

>>Speaking of things breaking, is a numeric constant of the form 08 or 09
>>strictly legal under K&R C? It showed up in an old C-A program compiled under
> 
> 	Not legal.  It is supposed to be octal.

Legal (but strange):

K&R p.180 2.4.1 Integer constants:

"An integer constant consisting of a sequence of digits is taken to be octal
if it begins with 0 (digit zero), decimal otherwise.  The digits 8 and 9 have
octal value 10 and 11 respectively."

However, the ANSI draft states things differently.
X3J11/87-140 (August 3, 1987) p.24 ll.27-29:

"A decimal constant begins with a nonzero digit and consists of a sequence of
decimal digits.  An octal constant consists of the prefix 0 optionally followed
by a sequence of the digits 0 throught 7 only."
-- 
Randy Hendry	randy@peora.ccur.com	(305) 850-1040
Concurrent Computer Corporation	2486 Sand Lake Road, Orlando, FL 32809-7642

cks@radio.toronto.edu (Chris Siebenmann) (12/17/87)

In article <8712111630.AA17999@cory.Berkeley.EDU> dillon@CORY.BERKELEY.EDU (Matt Dillon) writes:
>>Speaking of things breaking, is a numeric constant of the form 08 or 09
>>strictly legal under K&R C? It showed up in an old C-A program compiled under
>
>	Not legal.  It is supposed to be octal.

 It is actually legal in K&R C. I don't know about its status in ANSI
C; H&S says that 'originally, C also allowed the digits 8 and 9 in
octal constants, but using them was always considered to be bad style'
which leads me to suspect that many modern compilers no longer support
them. The people in comp.lang.c would probably know the current status
if anyone is really interested.

 Our Sun compiler (SunOS 3.4) supports them; Amiga Aztec C doesn't.
Does anyone know if Lattice C does?

[References: H&S section 2.7.1 (page 17 of the first edition) and K&R
page 180, section 2.4.1.]
-- 
	"Hey, that's why Dad moved to Colorado. He sits Zen now.  Me, I like 
	 the mountains."
Chris Siebenmann		{allegra,mnetor,decvax,pyramid}!utgpu!radio!cks
cks@radio.toronto.edu	     or	...!utgpu!{yetti!lethe, darwin}!ontmoh!cks

alex@.UUCP (Alex Laney) (12/18/87)

In article <2118@crash.cts.com>, spierce@pnet01.cts.com (Stuart Pierce) writes:
> A friend of mine added a 68020/68881 board to his Amiga 500.  All of the games
> that we tried broke.


Tell us which ones! Most games are written in assembler, (should be:-) so they
probably break on the old status register access instruction which is
privileged on the '010,'020, etc.
-- 
Alex Laney   alex@xicom.UUCP   ...utzoo!dciem!nrcaer!xios!xicom!alex
Xicom Technologies, 205-1545 Carling Av., Ottawa, Ontario, Canada
We may have written the SNA software you use.
The opinions are my own.

kkaempf@rmi.UUCP (Klaus Kaempf) (12/19/87)

Sorry to post this, but i think this might be of interest for all.

A company in Germany produces such a board, with a 7.2 Mhz 68020 and
a 12 Mhz 68881, that replaces the 68000 directly. The unpopulated PCB
cost DM 50.-, fully populated and tested ca. DM 1000.-.
I don't have the address of the company with me know, but i can post it
if there's enough interest.

A friend of mine got this board for his Amiga A2000 last week. He is
about to write an article for a german amiga-magazine about his experience.

But the board and the A2000 don't seem to be close friends. Every 10 Minutes
to 2 hours the machine simply stops working and even refuses to boot.
It seems that the problem is with the DTACK timing. The A2000 is one of
the first that were available in Germany. A small label on the PCB board
says 'Production date Feb 87'.
Has this problem been solved with the B2000 ? Has anybody else experience
with a 68020 in his amiga ? Is there a solution for the older A2000 ?

Thanks in advance,

Klaus

cthulhu@athena.mit.edu (Jim Reich) (12/22/87)

In article <486@.UUCP> alex@.UUCP (Alex Laney) writes:
> Most games are written in assembler, (should be:-) so they
>probably break on the old status register access instruction which is
>privileged on the '010,'020, etc.

I know that most of the 68020 boards for the 1000 and 2000 fix the problem
with the privileged instructions, but if that's the problem, worry not (yet).
There is a hack.  Lurking out there somewhere in Netland and BBSland (but does
anyone out there remember where?) is a file describing a do-it-yourself 68010
upgrade.  It included a software "wedge," a small assembler program which
hunted down and intercepted the nasty instructions...  May not help with
copy protected programs, though...

					-- Jim
					   cthulhu@athena.mit.edu

---------------------------------------------------------------------------
"Does the Amiga ever get user meditation errors?"
---------------------------------------------------------------------------

schein@cbmvax.UUCP (Dan Schein CATS) (12/22/87)

In article <2086@bloom-beacon.MIT.EDU> cthulhu@athena.mit.edu (Jim Reich) writes:
>In article <486@.UUCP> alex@.UUCP (Alex Laney) writes:
>> Most games are written in assembler, (should be:-) so they
>>probably break on the old status register access instruction which is
>>privileged on the '010,'020, etc.
>
>I know that most of the 68020 boards for the 1000 and 2000 fix the problem
>with the privileged instructions, but if that's the problem, worry not (yet).
>There is a hack.  Lurking out there somewhere in Netland and BBSland (but does
>anyone out there remember where?) is a file describing a do-it-yourself 68010
>upgrade.  It included a software "wedge," a small assembler program which
>hunted down and intercepted the nasty instructions...  May not help with
>copy protected programs, though...

 This wedge is called DeciGel. I think it is on one of the Fish disks and 
 if not - its on the commercial services (or maybe a BBS near you).
>
>"Does the Amiga ever get user meditation errors?"

 I don't know about user meditation errors, but my hacking sure causes my
 Amiga to get upset with me at times :-)

-- 
   Dan Schein		 uucp: {ihnp4|allegra|burdvax|rutgers}!cbmvax!schein
   Commodore AMIGA			Bix: dschein	     Plink: Dan*CATS
   1200 Wilson Drive			phone: (215) 431-9100	   ext. 9542
   West Chester PA 19380
+----------------------------------------------------------------------------+
   All spelling mistakes are a result of my efforts to avoid education  :-)
+----------------------------------------------------------------------------+
        I help Commodore by supporting the AMIGA. Commodore supports
         me by allowing me to form my own suggestions and comments.

phils@tekig.TEK.COM (Phil Staub) (12/23/87)

In article <2086@bloom-beacon.MIT.EDU> cthulhu@athena.mit.edu (Jim Reich) writes:
.I know that most of the 68020 boards for the 1000 and 2000 fix the problem
.with the privileged instructions, but if that's the problem, worry not (yet).
.There is a hack.  Lurking out there somewhere in Netland and BBSland (but does
.anyone out there remember where?) is a file describing a do-it-yourself 68010
                           ^^^^^^
Yup, it's called DeciGel by Scott Turner and it's on FishDisk #18. Also, I 
used the concept in a program I send to the {sources|binaries} newsgroups
about a week ago. It should show up any day now. Look for it as
PSTransformer.

.upgrade.  It included a software "wedge," a small assembler program which
.hunted down and intercepted the nasty instructions...  May not help with
.copy protected programs, though...
.					-- Jim
.					   cthulhu@athena.mit.edu

Phil
-- 
------------------------------------------------------------------------------
Phil Staub                     "I do NOT approve. I merely said I UNDERSTAND."
tektronix!tekigm2!phils                                              - Spock
phils@tekigm2.TEK.COM

farren@gethen.UUCP (Michael J. Farren) (12/26/87)

In article <486@.UUCP> alex@.UUCP (Alex Laney) writes:
>Most games are written in assembler, (should be:-)

This is rather an outmoded statement.  While many games, especially
those written for the 6502 processors, were written in assembler,
this was mostly a response to the fact that higher-level languages
on 8-bit processors generally require such a performance hit that 
they just weren't suitable, especially for typical arcade games,
with their requirements for fast graphics.

Even there, though, the rule was not hard and fast.  In my five
years doing games, I wrote games in BASIC, both interpreted and
compiled, games in C, and games in assembler, depending on which
was required to do the job.  When you have a computer with the
processing power of the Amiga, especially when the graphics power
the co-processors give you is considered, the necessity for programming
in assembler becomes much smaller.  This isn't to say that assembler
has no place - any time you want to squeeze the last possible ounce
of performance in the minimum amount of memory, assembler is the way
to go - but it does mean that assembler is quite often a choice among
several choices, rather than the only way to go.

-- 
Michael J. Farren             | "INVESTIGATE your point of view, don't just 
{ucbvax, uunet, hoptoad}!     | dogmatize it!  Reflect on it and re-evaluate
        unisoft!gethen!farren | it.  You may want to change your mind someday."
gethen!farren@lll-winken.arpa |     Tom Reingold, from alt.flame 

grr@cbmvax.UUCP (George Robbins) (12/28/87)

In article <638@tekig.TEK.COM> phils@tekig.UUCP (Phil Staub) writes:
> In article <8712111630.AA17999@cory.Berkeley.EDU> dillon@CORY.BERKELEY.EDU (Matt Dillon) writes:
> >	I know of no compilers which use MOVE SR, it is strickly a
> >hand-programmed opcode.  The SR contains the condition codes, supervisor
> >state,
> >trace mode, and interrupt mask.  The only reason anybody uses MOVE SR,x  is
> >to check the trace mode, supervisor state, or interrupt mask.  The condition
> >codes can be read/written with MOVE CCR.  Motorola decided MOVE SR should 
> >become privilaged (user programs should not know about supervisor flags)
> >under the 68010 and 68020.
> 
> Check the edge of the page describing the MOVE CCR,<ea> instruction in
> the 68000 Programmers Reference Manual, and you'll see a little black
> bar indicating that a MOVE with a source operand of CCR is a
> 68010/68012 only instruction. This is the real problem. 68000 programs
> often use MOVE SR,<ea> to read the condition codes, since the MOVE
> CCR,<ea> instruction does not exist. 68010 programs *should* use MOVE
> CCR,<ea> to achieve the same purpose (i.e., if *all* they're interested
> in is the condition codes). There is no single solution which works on
> both processors, hence the GetCC() function. AmigaDOS determines which
> processor is installed on bootup and ensures that the right instruction
> (MOVE CCR, or MOVE SR,) gets executed as a result of branching to the 
> GetCC vector in the jump table for the Exec library.

Yes, Motorola screwed up on this, not implementing the MOV CCR register in
the first places, and then deciding MOV SR should be illegal in user mode,
rather than just masking off the bits that the user shouldn't be concerned
with.

In either case, one might argue that storing the condition codes, rather
than testing them is a unusual activity, best left to system software,
but once people have started using the instruction it's a little late.

I belive either case can be handled adequatly with a trap handler, but
for some reason (effiency? religion?) this is not built into the Amiga
software.


-- 
George Robbins - now working for,	uucp: {uunet|ihnp4|rutgers}!cbmvax!grr
but no way officially representing	arpa: cbmvax!grr@uunet.uu.net
Commodore, Engineering Department	fone: 215-431-9255 (only by moonlite)