
#include <stdio.h>

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

#include <clib/alib_protos.h>
#include <clib/exec_protos.h>


int main(int argc, char **argv)
{
    struct IOStdReq *ioreq;
    int signal;
    struct MsgPort *port;

    UBYTE *buffer;
    char devicebuf[256];
    char *devicename = "trackdisk.device";
    char devicenum = 0;
    int i;

    for (i = 1; i < argc; i++) {
	if (isdigit(*(argv[i])))
	    devicenum = atoi(argv[i]);
	else {
	    sprintf(devicebuf, "%s.device", argv[i]);
	    devicename = devicebuf;
	}
    }
    buffer = AllocMem(512, MEMF_CHIP);
    port = CreatePort(0, 0);
    if (port) {
	ioreq = CreateStdIO(port);
	if (ioreq) {
	    if (OpenDevice(devicename, devicenum, ioreq, 0) == 0) {
		int tr, sec;
		ioreq->io_Command = CMD_READ;
		ioreq->io_Length = 512;
		ioreq->io_Data = buffer;
		for (tr = 0; tr < 160; tr++) {
		    for (sec = 0; sec < 11; sec++) {
			ioreq->io_Offset = 512 * (tr * 11 + sec);
			DoIO(ioreq);
			fwrite(buffer, sizeof(UBYTE), 512, stdout);
		    }
		}
		CloseDevice(ioreq);
	    } else
		fprintf(stderr,"Unable to open %s unit %d\n", devicename, devicenum);
	    DeleteStdIO(ioreq);
	}
    }
    FreeMem(buffer, 512);
}
