[comp.sys.atari.st] DMA/FDC-1772

lf@lri.lri.fr (Lionel Fournigault) (02/18/88)

 	I tried to use the write-sector command of the FDC 1772 on atari 1040
without the DMA and I have had some problems: After the write_sector command
has been issued, the status register always contains 0xff and so the data
request condition cannot tested.

	My question is : Is it possible to put the DMA in transparent mode
		during a write operation.

Please answered by E-mail. Many thanx.

	Lionel Fournigault
	Laboratoire de recherche en informatique
	Universite Paris Sud. Orsay
	France
	
	lf@sun8.lri.fr
	lf@lri.uucp
...
c_function ()
{
	write_fdc_track_register ( no_track );	/* No problem	*/
	write_fdc_sector_register ( no_sect );	/* No problem	*/

	asm {
		MOVEM.L	A0-A1/D1-D7,-(A7)
		LEA.L	00ff8606,A0		/* DMA		*/
		LEA.L	00ff8604,A1		/* FDC access	*/
		
		MOVE.W	#0x0a,D4	/* Write-sector command */
		MOVE.W	#0x80,D5	/* Status Register	*/
		MOVE.W	#0x180,D6	/* Command Register	*/
		MOVE.W	#0x186,D2	/* Data Register (write)*/
		MOVE.W	#0xd0,D3	/* Force command	*/
		
		MOVE.W	#25,D7		/* Copy 25 bytes	*/
		
		MOVE.W	D6,(A0)		/* Command access	*/
		MOVE.W	D4,(A1)		/* Write-sector running	*/
		
	cnt:	SUBI	#1,D7
		/* Problem begin here */
	r_st:	MOVE.W	D5,(A0)		/* Status Register access	*/
		MOVE.W	(A1),D1		/* read 0xffff ????		*/
		BTST	#1,D1		/* Data Request ?		*/
		BNE.S	r_st
		
		MOVE.W	D2,(A0)		/* Data Register access		*/
		MOVE.W	#0xaa,(A1)	/* Copy 0xaa			*/
		
		CMP.W	#0,D7
		BNE.S	cnt
		
		MOVE.W	D6,(A0)		/* Command access		*/
		MOVE.W	D3,(A1)		/* Stop command			*/
		
		MOVEM.L	+(A7),A0-A1/D1-D7
	}
}