[comp.sys.atari.st] a 68010 for your st?

LINDAHL@brandeis.BITNET (03/06/87)

Date:     Fri, 6 Mar 87 14:54 EST
From:     <LINDAHL@BRANDEIS.BITNET> (Greg Lindahl [lindahl@brandeis.bitnet])
Subject:  a 68010 for your st?
To:       info-atari16@score.stanford.edu
X-Original-To:  atari16, LINDAHL

i'm on spring break, and since i have nothing better to do i was thinking
of hooking up a 68010 to my st. yes, it's a disgusting hack from the hardware
side... i was wondering: has anyone else done this? what software problems
do you have other than MOVE SR,<ea> (fixable by grabbing the priv violation
vector)?

i know that the different stack frames will probably clobber my favorite
debugger, but after looking into the st bios i don't think that it ever
looks at the stack frame except for the bomb handler, which doesn't care what
kind of stack frame it is.

comments anyone?

Greg Lindahl                          | bitnet:   lindahl@brandeis.bitnet
brandeis radio astronomy group (BRAG) | ci$:      [76515,1122]
--------------------------------------| us snail: box 2522 brandeis university
"OK, if stupidity isn't an impeachable|           waltham mass (usa) 02254-9110
 offense, then what is?"              | telco:    (617) 899-5884

[ don't send me mail thru the ucbvax gate, 'cuz UCBJADE doesn't know that
  Brandeis exists... ]

dyer@atari.UUCP (Landon Dyer) (03/08/87)

> i'm on spring break, and since i have nothing better to do i was thinking
> of hooking up a 68010 to my st. yes, it's a disgusting hack from the hardware
> side... i was wondering: has anyone else done this? what software problems
> do you have other than MOVE SR,<ea> (fixable by grabbing the priv violation
> vector)?
> 
> i know that the different stack frames will probably clobber my favorite
> debugger, but after looking into the st bios i don't think that it ever
> looks at the stack frame except for the bomb handler, which doesn't care what
> kind of stack frame it is.

It's not really a disgusting hardware hack, since the 68000 and
68010 are pin compatible.  But TOS will not work with a 68010;
it dies on the first "constructed" RTE.

HOWEVER, at least for boot ROMs, the system will get far enough
into system initialization to load an executable boot sector from
floppy.  I can't say this for sure about TOS in ROM, and since
I've never tried it, well, it probably doesn't work....

Adding a 68010 will not noticably increase your machine's
performance, unless you are prepared to re-write the graphics
primitives to take advantage of the DBRA loop-mode.

And naturally [I more or less have to say this] Atari doesn't
condone making this kind of modification to your machine....

-- 
-Landon Dyer, Atari Corp.	    {sun,lll-lcc,imagen}!atari!dyer

The views expressed here do not not		
necessarily reflect those of Atari Corp.	Segments are for worms.

fletch@fluke.UUCP (03/13/87)

In article <8703062012.AA22292@ucbvax.Berkeley.EDU> LINDAHL%BRANDEIS.BITNET@forsythe.stanford.edu writes:
>i'm on spring break, and since i have nothing better to do i was thinking
>of hooking up a 68010 to my st. yes, it's a disgusting hack from the hardware
>side... i was wondering: has anyone else done this? what software problems
>do you have other than MOVE SR,<ea> (fixable by grabbing the priv violation
>vector)?
>
>i know that the different stack frames will probably clobber my favorite
>debugger, but after looking into the st bios i don't think that it ever
>looks at the stack frame except for the bomb handler, which doesn't care what
>kind of stack frame it is.
>
>comments anyone?
>
I have taken the first step of the installing a 68010 in place of the 68000;
I simply swapped microprocessor chips.  TOS (dated 11-20-1985 in code) will
not boot with the 68010.  I observed both bus errors and privilege violations.

When I have the ability to make cartridges, I plan on making a cartridge to
allow TOS to run on the 68010.  The vector base register will allow all
exceptions to be intercepted, even if apps redefine the vectors.

The idea is to intercept all vectors, handle group 0 exeptions (bus error,
address error and reset) and emulate the MOVE from SR instruction.

TOS may make this difficult.  It appears that not all exception returns are
done with the RTE instruction, but some are.  The extra word on the stack
(extra 23 words for bus errors) cannot be played with unless it is known
how TOS will return from the exception.

The benefits of the 68010 would be faster multiple/divide times, pre-fetch
and a fast loop mode.  The loop mode would be nice for things like clearing
memory.  I am disappointed that the code in ROM was not written in a way to
be compatible with the 68010 chip.  Apparenty the Amiga OS was.

I would be interested in mail from others who have looked at something like
this or have comments/warnings/dire predictions.  Simple fixes always welcome.

fletch@fluke.UUCP (03/13/87)

This is the signature file for my preceding posting.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    fletcher holmquist		john fluke mfg co.         (206) 356-5051
	
  {cornell,decvax,ihnp4,sdcsvax,tektronix,utscrgv}!uw-beaver--\
  {decwrl!sun,decvax!microsof,ucbvax!lbl-csam,allegra,ssc-vax}--> !fluke!fletch

john@viper.UUCP (John Stanley) (03/17/87)

In article <574@tc-fletch.tc.fluke.COM> fletch@tc.fluke.COM (Fletcher Holmquist) writes:
 >
 >When I have the ability to make cartridges, I plan on making a cartridge to
 >allow TOS to run on the 68010.  The vector base register will allow all
 >exceptions to be intercepted, even if apps redefine the vectors.
 >

Good luck.  I'm looking forward to hearing more about your plans for this..

 >.......  I am disappointed that the code in ROM was not written in a way to
 >be compatible with the 68010 chip.  Apparenty the Amiga OS was.
 >

I've been discussing this with a small group of Amiga users.  They are having
the same problems upgrading to 68010's as we are.  Aparently there
is either an alternate "kick-start" disk for use with 68010 Amigas and/or
there are some people experimenting with a method of detecting the different
CPU's and booting the correct Amiga os based on what's in the machine.

  Either way, it means they have two different operating systems for the
different cpus.  This is a major problem all users wanting to upgrade are
going to have to face regardless of the machine (ST or Amiga) they're using.

--- 
John Stanley (john@viper.UUCP)
Software Consultant - DynaSoft Systems
UUCP: ...{amdahl,ihnp4,rutgers}!{meccts,dayton}!viper!john

grr@cbmvax.cbm.UUCP (George Robbins) (03/17/87)

In article <682@viper.UUCP> john@viper.UUCP (John Stanley) writes:
>
>I've been discussing this with a small group of Amiga users.  They are having
>the same problems upgrading to 68010's as we are.  Aparently there
>is either an alternate "kick-start" disk for use with 68010 Amigas and/or
>there are some people experimenting with a method of detecting the different
>CPU's and booting the correct Amiga os based on what's in the machine.
>
>  Either way, it means they have two different operating systems for the
>different cpus.  This is a major problem all users wanting to upgrade are
>going to have to face regardless of the machine (ST or Amiga) they're using.
>
>John Stanley (john@viper.UUCP) Software Consultant - DynaSoft Systems

I truely hope this will not be the beginning of another flame war!!!

The Amiga operating system was *designed* to work with 68000's, 68010's and
68020's interchangably, and does so remarkably well in the current 1.2
software release, thank you.

Some third party software writers were less cautious of this and other
expansion issues and as a result their *application* software fails to work
on enhanced systems.  There are a number of little band-aids available that
are intended to make this crippled software work in the 68010/020 environment.

The whole problem should go away when software authors and marketeers realize
that the Amiga is not a single machine, but rather a family of highly
compatible machines with differing features.

Persons finding any processor dependent bugs in the software are of course
encouraged to forward bug reports to Commodore, so that these things can
be fixed in our next software release.
-- 
George Robbins - now working for,	uucp: {ihnp4|seismo|rutgers}!cbmvax!grr
but no way officially representing	arpa: cbmvax!grr@seismo.css.GOV
Commodore, Engineering Department	fone: 215-431-9255 (only by moonlite)

daveh@cbmvax.cbm.UUCP (Dave Haynie) (03/17/87)

in article <682@viper.UUCP>, john@viper.UUCP (John Stanley) says:
> 
> I've been discussing this with a small group of Amiga users.  They are having
> the same problems upgrading to 68010's as we are.  Aparently there
> is either an alternate "kick-start" disk for use with 68010 Amigas and/or
> there are some people experimenting with a method of detecting the different
> CPU's and booting the correct Amiga os based on what's in the machine.
> 
>   Either way, it means they have two different operating systems for the
> different cpus.  This is a major problem all users wanting to upgrade are
> going to have to face regardless of the machine (ST or Amiga) they're using.

WRONG!!! The Amiga works just dandy with a 68010, 68020, etc.  No alternate
KickStart or other major modification is necessary (well, of course, you'd 
need some interface hardware for a 68020).  The Amiga's OS was designed from 
the start to support any of the 680xx chips running at any speed, and knows 
which chip is in the system, and provides processor independent ways of doing 
the things that cause problems in other OSs.

There are two major problems with running the 68010 or 68020 on a system that 
was originally intended for the 68000.  The first of these problems is the
use of the 68000's MOVE from SR instruction.  The newer processors allow this
instruction only in Supervisor mode so an operating system running in User
Mode can't see the "S" bit and tell that its really not in Supervisor mode,
where most OSs like to be.  The 68010 give you a MOVE from CCR instruction
to access the condition codes.  The Amiga's Exec provides a processor
independent function, "GetCC()", which allows a program to get condition
codes from any processor.  A (very) few developers have ignored this; 
fortunately for any application that does ignore this and uses the MOVE from
SR, its a small matter to install an exception handler that'll trap the
exception this causes, read the condition codes via GetCC(), and then resume
normal operation.

The other big problem when upgrading processors is the fact that the newer
processors store much more information on their exception stacks than the
68000 does.  The 68010, for instance, stores information on the internal
processor state to support instruction continuation necessary for virtual
memory systems.  Unfortunately, lots of 68000 programmers like to play
around with what's on the stack after an exception.  If you switch from a
68000 to a 68010, there's going to be different stuff there, and if your
program depends on that stuff, it'll probably die with the 68010 or 68020
in place.  The Amiga's ExecBase structure contains a field that tells a
program the type of processor in use; thus, any exception handling code can
use this to examine exception stacks in a way appropriate to the processor
currently in use.  Unfortunately, this is a much more complicated problem
than the MOVE from SR problem, so there's no real way to fix programs that
don't watch out for other processors in place other than rewriting the
offending code (this if of course true for all 68000 systems, not just the
Amiga or Atari).  All of the Amiga's OS software works on any processor,
and probably more than 95% of all commercial and public domain software are
well (the Amiga ROM Kernal Manual talks about 68010 and 68020 compatibility
right on the 5th page of its preface; all the developers work from this
book).

> John Stanley (john@viper.UUCP)
> Software Consultant - DynaSoft Systems
> UUCP: ...{amdahl,ihnp4,rutgers}!{meccts,dayton}!viper!john
-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dave Haynie     Commodore Technology              // /|  ___   __   __   __ 
  {ihnp4|caip|rutgers}!cbmvax!daveh          |\  // /_|     | /  \ /  \ /  \
Commodore rarely admits to knowing me,        \\// /  |  +--+ |  | |  | |  |
  much less sharing my personal opinions.      \/ /   |  |___ \__/ \__/ \__/

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

cmcmanis@sun.uucp (Chuck McManis) (03/17/87)

In article <682@viper.UUCP>, john@viper.UUCP (John Stanley) writes:
> I've been discussing this with a small group of Amiga users.  They are having
> the same problems upgrading to 68010's as we are.  Aparently there
> is either an alternate "kick-start" disk for use with 68010 Amigas and/or
> there are some people experimenting with a method of detecting the different
> CPU's and booting the correct Amiga os based on what's in the machine.
> 
>   Either way, it means they have two different operating systems for the
> different cpus.  This is a major problem all users wanting to upgrade are
> going to have to face regardless of the machine (ST or Amiga) they're using.
> 
> --- 
> John Stanley (john@viper.UUCP)
> Software Consultant - DynaSoft Systems
> UUCP: ...{amdahl,ihnp4,rutgers}!{meccts,dayton}!viper!john

John is mistaken, the Amiga will boot with either a 68010 or a 68020
as the main processor. In the first case you simply replace the 68000
chip with an '010 and reboot. In the second you will need the CSA
adapter card since the '020 and '000 are not pin compatible. The
only problem you encounter arises from people using the dreaded
MOV  SR, EA instruction, which *none* of the C compilers generate.
(I understand TDI modula-2 may) There is an O/S function call to 
get the SR in a compatible way no matter what chip is installed.
Also there is a program to install an exception handler for misbehaving
programs but the OS totally and transparently supports the higher
level chips. DRI was exceptionally short sited in not providing that
support in GEM. 

Summary : The Amiga can run '000, '010, and '020 processors without a
change in the O/S or system software. All programs written in C work
also. 

			-- Inews filler.
			-- Inews filler.


-- 
--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.

john@viper.UUCP (John Stanley) (03/18/87)

In article <1563@cbmvax.cbmvax.cbm.UUCP> grr@cbmvax.UUCP (George Robbins) writes:
 >
 >Some third party software writers were less cautious of this and other
 >expansion issues and as a result their *application* software fails to work
 >on enhanced systems.  There are a number of little band-aids available that
 >are intended to make this crippled software work in the 68010/020 environment.

It turns out that *application* problems are, in fact, what was causing
the incompatability.  The people I was speaking to on this subject are
more "users" than "systems-people".  All they knew was they tried to run
some programs on an upgraded machine and it would bomb.  They went to the
shop where the upgrade was done.  The people there gave them new boot
disks and that solved their problems.  (It would appear that a patch
was added to those disks for the specific programs causing problems...)
They assumed it was a different OS and I, foolishly it appears, assumed
that they knew what they were talking about.  Sorry for any confusion...

--- 
John Stanley (john@viper.UUCP)
Software Consultant - DynaSoft Systems
UUCP: ...{amdahl,ihnp4,rutgers}!{meccts,dayton}!viper!john