#include <exec/types.h>
#include <exec/memory.h>
#include <devices/trackdisk.h>

main()
{
  struct MsgPort *mport;
  struct IOStdReq *iorequest;

  mport = CreatePort(0L,0L);
  iorequest = CreateStdIO(mport);
  OpenDevice(TD_NAME,0L,iorequest,0L);
   /* PrÜfen, ob Diskette im Laufwerk */
    iorequest->io_Command = TD_CHANGESTATE;
    DoIO(iorequest);
    if (iorequest->io_Actual != 0)
      printf("Keine Diskette im Laufwerk!\n");
    else
      printf("Diskette ist eingelegt.\n");
   /* PrÜfen auf Schreibschutz */
    iorequest->io_Command = TD_PROTSTATUS;
    DoIO(iorequest);
    if (iorequest->io_Actual == 0)
      printf("Diskette ist NICHT schreibgeschÜtzt!\n");
    else
      printf("Diskette ist schreibgeschÜtzt!\n");
   /* Laufwerkstyp ermitteln */
    iorequest->io_Command = TD_GETDRIVETYPE;
    DoIO(iorequest);
    if (iorequest->io_Actual == 1)
      printf ("Laufwerkstyp: 3.25' (logisch, beim internen Laufwerk!?)\n");
    if (iorequest->io_Actual == 2)
      printf ("Laufwerkstyp: 5.25' (wird bei df0: nie auftreten!!!)\n");
   /* Anzahl der Tracks ermitteln */
    iorequest->io_Command = TD_GETNUMTRACKS;
    DoIO(iorequest);
    if (iorequest->io_Actual == NUMTRACKS)
      printf ("Normale Anzahl Tracks (160 Tracks oder 80 Cylinder)\n");
    else
      printf ("Gesamtzahl der Tracks ist NICHT 160 (komisch)\n");
   /* Zählstand fÜr Diskettenwechsel ermitteln */
    iorequest->io_Command = TD_CHANGENUM;
    DoIO(iorequest);
    printf ("Zählstand: %ld\n",iorequest->io_Actual);
   /* Schreib-/Lesekopf bewegen */
    iorequest->io_Command = TD_SEEK;
    iorequest->io_Offset = 0L;   /* Zu Spur 0 bewegen */
    DoIO(iorequest);
   /* Device schließen und Speicher freigeben */
  CloseDevice(iorequest);
  DeleteStdIO(iorequest);
  DeletePort(mport);
}
