/*-----------------------------------------------------*/
/*             Read Sector with Trackdisk-Device       */
/*                                                     */
/*                    JEA, 12-07-87                    */
/*-----------------------------------------------------*/
#include <exec/types.h>
#include <exec/memory.h>
#include <devices/trackdisk.h>

/*-----------------------------------------------------*/
/*                 Turn Motor on or off                */
/*                                                     */
/*                                                     */
/*-----------------------------------------------------*/
MotorSwitch( iosr, flag )
struct IOStdReq *iosr;
LONG flag;
{
  iosr->io_Command = TD_MOTOR;
   iosr->io_Length = flag;         /* 1=an  and  0=aus */
   DoIO(iosr);
}

/*-----------------------------------------------------*/
/*                  Read Logical Block                 */
/*                                                     */
/*                                                     */
/*-----------------------------------------------------*/
LONG *GetBlock( iosr, block, map )
struct IOStdReq *iosr;
LONG block;
LONG *map;
{
LONG *ret = NULL;


  iosr->io_Command = CMD_READ;
  iosr->io_Length = TD_SECTOR;
  iosr->io_Data = (APTR)map;
  iosr->io_Offset = TD_SECTOR * block;
  DoIO(iosr);

  return(ret);
}

/*-----------------------------------------------------*/
/*                      Read Sector                    */
/*                                                     */
/*                                                     */
/*-----------------------------------------------------*/
LONG *GetTSH( iosr, track, sector, head, map )
struct IOStdReq *iosr;
LONG track;
LONG sector;
LONG head;
LONG *map;
{
LONG *ret = NULL;

   iosr->io_Command = CMD_READ;
   iosr->io_Length = TD_SECTOR;
   iosr->io_Data = (APTR)map;
   iosr->io_Offset = TD_SECTOR*(sector + NUMSECS*head
                              + NUMSECS*NUMHEADS*track );
   DoIO(iosr);

   return(ret);
}

/*-----------------------------------------------------*/
/*                     Main Program                    */
/*                                                     */
/*                                                     */
/*-----------------------------------------------------*/
main()
{
struct MsgPort *diskport;
struct IOStdReq *diskreq;
LONG *buf;
LONG loop;

   buf = (LONG*) AllocMem( 512L, MEMF_CHIP );

   diskport = CreatePort( 0L, 0L );
   diskreq = CreateStdIO( diskport );
   OpenDevice( TD_NAME, 0, diskreq, 0 );

   MotorSwitch( diskreq, 1L );

   GetBlock( diskreq, 0L, buf );
   for( loop=0; loop<128; loop++ ){
      printf( "%lx ", buf[loop] );
   }
   printf( "\n\n" );

   GetTSH( diskreq, 0L, 0L, 0L, buf );
   for( loop=0; loop<128; loop++ ){
      printf( "%lx ", buf[loop] );
   }
   printf( "\n" );

   MotorSwitch( diskreq, 0L );

   CloseDevice( diskreq );
   DeleteStdIO( diskreq );
   DeletePort( diskport );

   FreeMem( buf, 512L );
}





































