[comp.sys.amiga] 2000 incompatiblities

jbwaters@bsu-cs.UUCP (J. Brian Waters) (01/07/88)

I just recieved my amiga 2000 yesterday and tried to run a terminal program
on it that I had written.  It runs just fine on my 1000, but give a guru
#A on the 2000.  It does this regardless of using the nofastmem program.

What other problems are there of incompatiblity from the 1000 to the 2000
besides those solved by nofastmem?
The program uses the serial device and the console device and does not go
directly to the keyboard or serial port.  Does anyone have a list of 
things to watch for in programming to make sure it runs on all the amigas?

 
-- 
Brian Waters              <backbone>!---\ 
                                   ihpn4!{iuvax|pur-ee}!bsu-cs!jbwaters
                                              uunet!---/

daveh@cbmvax.UUCP (Dave Haynie) (01/08/88)

in article <1786@bsu-cs.UUCP>, jbwaters@bsu-cs.UUCP (J. Brian Waters) says:
> Keywords: 2000,1000,programing,guru

> I just recieved my amiga 2000 yesterday and tried to run a terminal program
> on it that I had written.  It runs just fine on my 1000, but give a guru
> #A on the 2000.  It does this regardless of using the nofastmem program.

> What other problems are there of incompatiblity from the 1000 to the 2000
> besides those solved by nofastmem?

Well, even if you run NoFastMem, you're still getting system stuff put up
in FAST RAM.  This won't normally cause the problems that things like
improper memory allocations for graphics can cause, but its still a
potential problem with some old software.  Specifically, anything that
thinks it knows where in memory it's running, or does other wierd things
based on addresses.  We found an early version of the Amiga3D program had
some signed 24 bit math in it that caused the program to barf on any system
with memory above $7fffff.

The mysterious thing in this case was that the program didn't contain this
code on it's own, we had versions that didn't exhibit the problem.  It
turns out that the problem was based on either the startup or library
code that's associated with the C compiler used to build the program.  My
suggestion would be, once you're sure that YOU aren't doing anything 
strange with addresses that might cause such problems, would be to re-compile
your program, making sure you're using up-to-date startup and library
code.

> The program uses the serial device and the console device and does not go
> directly to the keyboard or serial port.  Does anyone have a list of 
> things to watch for in programming to make sure it runs on all the amigas?

	- Watch your allocation of graphics and trackdisk buffers to make
	  sure they sit in CHIP RAM.

	- Don't assume you're running on anything other than a full 32 bit
	  machine (no monkey business with address bits 24..31).

	- Don't use signed math on addresses.

	- Don't ever make an assumption about any routine being at any
	  particular location.

	- Watch your word alignment, especially you 68020 users.

	- Never MOVE SR, <ea>; use GetCC() in the exec.library instead.

	- If you're playing with exception stack frames, make sure you 
	  check the CPU type and make your code work with all CPUs.

** Anyone got anything else to add? **

>  
> -- 
> Brian Waters              <backbone>!---\ 
>                                    ihpn4!{iuvax|pur-ee}!bsu-cs!jbwaters
>                                               uunet!---/
-- 
Dave Haynie  "The B2000 Guy"     Commodore-Amiga  "The Crew That Never Rests"
   {ihnp4|uunet|rutgers}!cbmvax!daveh      PLINK: D-DAVE H     BIX: hazy
		"I can't relax, 'cause I'm a Boinger!"

rusty@vertigo.UUCP (M.W.HADDOCK) (01/09/88)

In article <3106@cbmvax.UUCP> daveh@cbmvax.UUCP (Dave Haynie) writes:
>in article <1786@bsu-cs.UUCP>, jbwaters@bsu-cs.UUCP (J. Brian Waters) says:
>> Keywords: 2000,1000,programing,guru
>** Anyone got anything else to add? **

Yes, use the system's timing routines if you MIGHT need delays.
My '020 runs much faster than your '000.

When double buffering make sure that the screens get displayed!
Don't know what happens but the "Space Invaders" game that was
posted runs on my '020 but after a while things get real messed
up and they stop moving!  After a little bit they start appearing
again but the old ones don't go away.  It works OK when I take
the '020 off the side.

Anyone know what's going on???

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

bryce@hoser.berkeley.edu (Bryce Nesbitt) (01/09/88)

In article <3106@cbmvax.UUCP> daveh@cbmvax.UUCP (Dave Haynie) writes:
>
>** Anyone got anything else to add? **

Yes: It is possible to write a game that will work BETTER if a 68020
system is in use.  Many games just become unplayable.  Methods differ,
but here are two starting points:

1> Use the system timer for your object moves.  Under a 68020 the
effective frame rate/smoothness goes up.

2> Time your frame rate, and make that the "standard".  During execution
check the frame count... if you are over or the same, flip right away.  If
you are under, Wait() until the proper frame.

The first makes a better game on the faster CPU.  The second gives the
same game, with more spare CPU for other tasks.

-------

In reality, people won't do this until faster systems are more common.
>Sigh<.  At least the A500/A2000 just about seals the "Fast memory" problem.
Think how long that would have hung on if the A500/A2000 had 1 meg of chip/
0K of fast as the standard configuration.

>Dave Haynie

|\ /|  . Ack! (NAK, SOH, EOT)
{o O} . bryce@hoser.berkeley.EDU -or- ucbvax!hoser!bryce (or try "cogsci")
 (")
  U	"Your theory is crazy... but not crazy enought to be true." -Niels Bohr

drs-ano@duvan.nada.kth.se (Arne Nordmark) (01/09/88)

In article <3106@cbmvax.UUCP> daveh@cbmvax.UUCP (Dave Haynie) writes:
>
>	- If you're playing with exception stack frames, make sure you 
>	  check the CPU type and make your code work with all CPUs.
>
>Dave Haynie  "The B2000 Guy"     Commodore-Amiga  "The Crew That Never Rests"
>   {ihnp4|uunet|rutgers}!cbmvax!daveh      PLINK: D-DAVE H     BIX: hazy
>		"I can't relax, 'cause I'm a Boinger!"

Oops! I added a "trap trap" to my standard startup code mostly to get rid
of the famous division-by-zero guru (#00000005).
Ehem...what if I try my programs on a 680X0-Amy. (My code never gurus but...:-)

Perhaps a quick tutorial on 680X0 exception stack frames?  Please?

  - Gunnar Nordmark -      elin.lne.kth.se!NORDMARK@enea.UUCP

( That's right, I'm posting this from my brother Arne's account again.
  He'll kill me, but don't worry, I'm used to it. )

daveh@cbmvax.UUCP (Dave Haynie) (01/13/88)

in article <22471@ucbvax.BERKELEY.EDU>, bryce@hoser.berkeley.edu (Bryce Nesbitt) says:

> In article <3106@cbmvax.UUCP> daveh@cbmvax.UUCP (Dave Haynie) writes:

>>** Anyone got anything else to add? **

> Yes: It is possible to write a game that will work BETTER if a 68020
> system is in use.  Many games just become unplayable.  Methods differ,
> but here are two starting points:

> 1> Use the system timer for your object moves.  Under a 68020 the
> effective frame rate/smoothness goes up.  ...
> In reality, people won't do this until faster systems are more common.

Don't bet on it.  And I was surprised, too.  But Marble Madness, from 
Electronic "We develop on PC-ATs" Arts, of all things, runs BETTER on a
68020 system, in exactly the way you mention above.  It's apparently
synced to the video frame rate, not the CPU speed, and the main effect of
running it on a FAST 68020 based system is that the mouse control gets
much smoother and easier to handle.  So your score goes up.  I recally maybe
one feature, I think it was the countdown timer before, but not during,
each race, that's too fast on the '020, but otherwise, this is apparently a
very well done game.  Which proves than anyone writing games which work 
worse on a 68020 than a 68000 based system is out to lunch.

> |\ /|  . Ack! (NAK, SOH, EOT)
> {o O} . bryce@hoser.berkeley.EDU -or- ucbvax!hoser!bryce (or try "cogsci")
>  (")
>   U	"Your theory is crazy... but not crazy enought to be true." -Niels Bohr
-- 
Dave Haynie  "The B2000 Guy"     Commodore-Amiga  "The Crew That Never Rests"
   {ihnp4|uunet|rutgers}!cbmvax!daveh      PLINK: D-DAVE H     BIX: hazy
		"I can't relax, 'cause I'm a Boinger!"

peter@sugar.UUCP (Peter da Silva) (01/16/88)

In article ... bryce@hoser.berkeley.edu (Bryce Nesbitt) writes:
> 2> Time your frame rate, and make that the "standard".  During execution
> check the frame count... if you are over or the same, flip right away.  If
> you are under, Wait() until the proper frame.

This is what "Tracers", our new video-game, does. On a 68020 you would expect
to keep total smoothness right up to the highest level of difficulty. On
the 68000 it does slow down just a tad at the higher levels.
-- 
-- Peter da Silva  `-_-'  ...!hoptoad!academ!uhnix1!sugar!peter
-- Disclaimer: These U aren't mere opinions... these are *values*.