/*

    QuickStep.c

    senkt tdu->StepDelay auf 1950ms
    -> leisere Laufwerke
    -> schneller bei häufigem Kopfrödeln

    Der Wert kann verändert werden, allerdings versagt
    ab 1800 abwärts mein externes Laufwerk...

    © 1990 Oliver Wagner
	   Landsberge 5
	   D-4322 Sprockhövel
	   Tel.: 02339/7536

    Vertrieb ohne vorherige schriftliche Genehmigung
    des Autors ist untersagt und wird verfolgt (mit
    mindestens sechs Wochen RTL-Plus o.ä.)

    Vielen Dank an Holger Lubitz für die Anregung!

    Für Lettuce-C V5.04

    lc -rr -v -ms -rr -csmuq -O quickstep
    blink quickstep.o

*/

#include <proto/exec.h>
#include <proto/dos.h>
#include <devices/trackdisk.h>
#include <exec/execbase.h>

int main(char*,int);

int main(char *line,int len)
{
    /* I Love Lettuce... */
    struct ExecBase **syb=(struct ExecBase**)4;
    struct Process *pr=(*syb)->ThisTask;
    struct MsgPort *mp=&pr->pr_MsgPort;

    /* Trackdisk stuff */
    struct IOStdReq ior;

    /* WB-Msg */
    struct Message *msg=0;
    int c;

    /* To CLI or not to CLI ? */
    if(!pr->pr_CLI) {
	WaitPort(mp);
	msg=GetMsg(mp);
    }

    ior.io_Message.mn_ReplyPort=mp;
    for(c=0; c<4; c++) {
	if(OpenDevice("trackdisk.device",c,&ior,0)) continue;
	((struct TDU_PublicUnit*)ior.io_Unit)->tdu_StepDelay=1950;
	CloseDevice(&ior);
    }

    /* Workbench ? */
    if(msg) {
	Forbid();
	ReplyMsg(msg);
    }
    return(0);
}

