Subject: Re: Floppy Disk and "make world"
To: Leo Bicknell <bicknell@ufp.org>
From: Jonathan Stone <jonathan@DSG.Stanford.EDU>
List: port-pmax
Date: 07/21/1997 22:34:32
On Mon, 21 Jul 1997 22:55:56 -0400 (EDT),
   Leo Bicknell <bicknell@ufp.org> writes:


>1) It appears that the floppy disk on the Maxines
>   is not supported.  Has anyone tried working on 
>   this?  If not, does anyone have the documentation
>   on the interface?


I haven't really tried.  I know in principle how the hardware works.

There's a fancy DMA engine in the ioctl ASIC (ioasic) that's the same
as the DMA support on the 53c94, and the same as the ioasic audio DMA
support.  The TurboChannel Alpha reference manual documents this chip
as the `JUNKIO' subsystem; it's almost identical on pmaxes.


The medium answer, though is:
  * the IOCTL asic has double-buffered DMA pointers which interrupt
     when one empties.  SOftware has to refill the other pointer and
    acknowledge the interrupt.
  * Doing this  Right needs  guranteed low-latency interrupt support

  * Low-latency interrupt support means  reworking the interrupt
    enable/disable system. The kenerl needs  to _always_
    leave IOCTL interrupts enabled and manage SPLs by
    selectively masking and unmasking individual enable bits
    in the ioasic control register.

   * Software to service the DMA pointer-reload interrupts needs
     to be written and integrated into a common ioasic driver.

Doing it this way means we can have a single driver for ioasic audio
on both DECstations and Alphas, and the Maxine floppy and the 3MAXPLUS
and 3MIN (all TC decstations except the 5000/200) can use the exact
same code for the SCSI chip.

Everyone who's looked at it agrees this is the Right Thing To DO.

I've done the last part at least for the pmax 53c94. It works, except
the interrupt latency is too high.  Jason Thorpe has worked on
rototilling the pmax autoconfig code and new SPL and interrupt code
interrupts for the middle part.

This may not see the light of day before 1.3 is frozen, though.
It's a really  huge amount of changes.

Anyone who's interested in working on it should contact me and Jason
Thorpe (and Michael Hitch.)



[building userland]

the short answer is:
	*  sup or otherwise get all the sources
	* mount them on /usr/src (conventional)
	* create yourself a /usr/obj on a situable partition
	*  Do "make obj" in your /usr/src

then do `make build' as root, and  stand clear for at least 24 hours