[comp.sys.atari.st] cartridge port addressing

dnewton@carroll1.UUCP (Dave Newton) (05/24/89)

   A lot of people (including myself) have wanted ATARI to put expansion
slots on their machine.  What I am considering is this:  get a whole big
bunch of people to come up with a standard interface, publish it, and get
hardware for it.
   What I need to know is this:  A bus error (illegal address) is generated
when writing to the cartridge port.  Is this error hardware or software
generated?  If it's software generated, we can re-code the ROMS to get around
it, bring out a WRITE line, and stick an expansion box onto the cartridge
port.  If it's hardware generated, we'll need to come up with a relatively
easy hardware hack to get all the signals out.
   What I would propose in this latter case is this:  the hardware hack would
consist of unsoldering (? or is it socketed?) the 68000 MPU, inserting a
socket with a ribbon cable, then sticking the 68000 back in.  The cable would
lead to a box with a buffering system on it and a bunch of expansion slots.
All signals necessary for healthy ST operation would be there.
   On a mega ST this would be easier, since there's already a port--the 520/
1040's would need more work.

   Anyone interested?  I think it's necessary for ST survival.  The reason
the Amiga is growing faster is because of this feature alone--the desktop
looks awful.  Expandability/versatility is needed desparately on this
machine.

-- 
         "If I cannot create it, I do not understand it"
                                        -Richard Feynman
David L. Newton           (414) 524-7465        dnewton@carroll1.cc.edu
=8-) (smiley w/ a mohawk) (414) 524-7343     uunet!marque!carroll1!dnewton

cs163afu@sdcc10.ucsd.EDU (Some call me...Tim) (05/24/89)

In article <419@carroll1.UUCP> dnewton@carroll1.UUCP (Dave Newton) writes:
>
>   A lot of people (including myself) have wanted ATARI to put expansion
>slots on their machine.  What I am considering is this:  get a whole big
>bunch of people to come up with a standard interface, publish it, and get
>hardware for it.
>   What I need to know is this:  A bus error (illegal address) is generated
>when writing to the cartridge port.  Is this error hardware or software
>generated? 

The error, so I'm told, is generated in hardware.  It's hardwired
into one of the custom chips of the ST--probably the MMU, though
someone tried to tell me it was the GLUE chip.

A better interface would be DMA based--1.3 Megabytes per second is a
sufficient transfer rate for almost anything.  A card cage with a
simple bus based on the DMA port would be best.

Of course those of us with Megas have a bus expansion option that
could easily be brought out into a card cage, with some simple
electronics.  Depending on what kinds of loads you expect, it may
also need its own power supply.

One alternative that works for simple expansions (home grown ones
come to mind, but a multi-joystick expansion uses this path) is
through the parallel port.  For some reason, it's bi-directional--
you could communicate with a device plugged in there.  

I've yet to do any hardware hacking on the ST (other than installing
many ROM sets and a 4096 color board), though I've done some hacking
on other computers...but the DMA port is somewhat intimidating,
probably because of my lack of documentation covering it...

_________,_________
  /im |\/|ensch	    |	"Life is full of infinite absurdities, which,
      '	 	    |	strangely enough, do not even need to
tmensch@ucsd.edu    |	appear plausible, since they are true."
					--Luigi Pirandello.

dvlsan@apollon.cs.umu.se (05/24/89)

In article <116@sdcc10.ucsd.EDU> cs163afu@sdcc10.ucsd.edu.UUCP 
(Some call me...Tim) writes:
>...
>One alternative that works for simple expansions (home grown ones
>come to mind, but a multi-joystick expansion uses this path) is
>through the parallel port.  For some reason, it's bi-directional--
>you could communicate with a device plugged in there.  
>...
Gee... I wanna know how to do this, could you please post info about it(
or e-mail, if that feels better).  (I guess it involves low level programming
of whatever chip drives the centronics interface, but there's no need to
reinvent the wheel :-))

Some time ago i saw an article in byte about writing to the ST cartridge port.
It involved using special hardware (fairly simple, as I recall it) to 
multiplex data and adress out on the adress bus, thereby performing a "write".
If there is sufficient interest, I could dig it out of my bookshelf,
and post a summary.

/Stefan
+------------------------------------------------------------+
|  DISCLAIMER: Did I write this? I must be out of my mind... |
+------------------------------------------------------------+

hase@netmbx.UUCP (Hartmut Semken) (05/26/89)

In article <419@carroll1.UUCP> dnewton@carroll1.UUCP (Dave Newton) writes:
>   A lot of people (including myself) have wanted ATARI to put expansion
>slots on their machine.
>   What I need to know is this:  A bus error (illegal address) is generated
>when writing to the cartridge port.  Is this error hardware or software
>generated?

It's a BUS ERROR, right.

Let's have a short look at the 68k Bus interface (the asyncronous one):
Let's say the MPU wants to read (write) from (to) memory. It asserts its
adress lines and puts out an "adress strobe" (-AS signal).

After -AS the 68k waits for one of the following signals: -DTACK, -VPA
or -BUSERR. -DTACK means, the adress was ok and the memory has put out
(read in) the data. -VPA switches the 68k to the synchronous bus (to
adress slow, cheap peripheral chips like the 6850 ACIA); forget that.

-BUSERR signals an invalid adress ("no memory here, you fool!"). This is
used for virtual memory (paging or the like) with the 68010 or 020.

The ST GLUE generates the -BUSERR signal in a siple fashion: a monoflop
(a circuit that stays in one, unstable state for some time, then "falls
back" to the stable state) is triggered by -AS (the output stays HIGH
for some time after -AS). If there is no pulse on -AS for some time, the
output goes low; the output is connected to the -BUSERR pin of the MPU.

If no invalid adress is given, the MPU does something, and therefor does
something with memory (and therefor issues -AS pules): no bus error.
If the MPU outputs an invalid adress and neither -DTACK nor -VPA
acknowledge the request, it does not put out a new adress and there is
no new -AS pulse for some time: the monoflop issues -BUSERR.


Without hacking the hardware (DTACK generation and generation of a R/-W
line for the ROM port adesses), it is almost impossible to write to the
ROM port.

Almost means, it is impossible to put data on the data lines (D0 to D15)
to the ROM port.
Adresses are "written" to the ROM; so we can use these lines, to put out
our data:

When reading an ROM port adress (move.b $FA 0000, D0 or tst.b
$FA0000,D0) the adress FA0000h is put out. If we put the adress in an
adress register and read the port "adress register indirect" after
ADDing our data to that register, the adress $FA0000+data is put out.

To make things shorter: we can "write" data on the lower byte of the
adress bus to some external logic added to the ROM port (basically a
register/latch that fetches the low byte of the adress when reading ROM
adresses and puts it to the outer world...) without hacking the ST's
internal hardware.


This idea got realised by some german engeneer: he added an "universal
I/O port" to the ROM port, and later a more complex logic to mimick an
ECB slot (ECBus used by "old" Z80-CP/m machines), a PC Slot (yes, IBM
PC) and adress a 1 Megabyte EPROM disk.

This does work (even with a PC harddisk controller...) but is rather
expensive.


There is another fast port to consider: the DMA interface.

Ataris "almost SCSI" protocol is'nt too hard to handle (a simple 8031
does it all and is very flexible, even a bunch of PALs could do it
togerther with some software in the ST) and you could even mimick an
SH205 harddisk for I/O or write your own driver... 


But there will no be a "standard" without Atari Corp. supporting and
distributing it.

Not the best best ideas/machines/... do it. Standards are made by the
manufacturer (look at the Mac, the Pissi, the Amiga, the VAX...)

hase
-- 
Hartmut Semken, Lupsteiner Weg 67, 1000 Berlin 37 hase@netmbx.UUCP
If there is something more important than my Ego, I want it caught and shot.
Now! (Zaphod Beeblebrox)

whack@nmsu.edu (Warren J Hack) (05/29/89)

My first posting to the net fell victim to inexperience and was posted under
the wrong subject heading:  my apologies.  Please see the response to 
ST at 38k baud for a discussion concerning a way to WRITE to the port via
a 24 bit I/O board.  Again, sorry for the inconvience.