home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1993 #2
/
Image.iso
/
os2
/
gtak212b.zip
/
SOURCE.ZIP
/
OS2-DD
/
strategy.c
< prev
Wrap
C/C++ Source or Header
|
1993-01-16
|
3KB
|
144 lines
/*****************************************************************************
* $Id: strategy.c,v 1.4 1992/07/24 11:37:08 ak Exp $
*****************************************************************************
* $Log: strategy.c,v $
* Revision 1.4 1992/07/24 11:37:08 ak
* OS/2 2.0
* BASEDEV drivers
* VGA debugging
*
* Revision 1.3 1992/01/06 22:37:29 ak
* MSC does't call _STI_debug automatically.
*
* Revision 1.2 1992/01/06 20:09:57 ak
* *** empty log message ***
*
* Revision 1.1.1.1 1992/01/06 19:55:11 ak
* Alpha version.
*
* Revision 1.1 1992/01/06 19:55:10 ak
* Initial revision
*
*****************************************************************************/
#include "dd.h"
#include "dd_defs.h"
extern void
strategy(ReqPtr p)
{
word rc, dseg;
switch (p->cmd) {
case DevInit:
devhlp = p->u.ini.devhlp;
dseg = ctors();
if ((rc = DrvInit(p->u.ini.cmdline)) & ERROR) {
p->u.ino.nunits = 0;
p->u.ino.endCode = 0;
p->u.ino.endData = 0;
} else {
p->u.ino.endCode = Offset(&end_code);
p->u.ino.endData = dseg;
}
p->u.ino.bpb = 0;
break;
case DevBaseInit:
devhlp = p->u.ini.devhlp;
dseg = ctors();
if ((rc = DrvInitBase(p->u.ini.cmdline)) & ERROR) {
p->u.ino.nunits = 0;
p->u.ino.endCode = 0;
p->u.ino.endData = 0;
} else {
p->u.ino.endCode = Offset(&end_code);
p->u.ino.endData = dseg;
p->u.ini.cmdline = 0;
}
p->u.ino.bpb = 0;
break;
case DevRead:
PUTS(2, "DevRead file=");
PUTD(2, p->u.rw.fileno);
PUTS(2, ", count=");
PUTD(2, p->u.rw.count);
PUTC(2, '\n');
rc = DrvRead(p);
break;
case DevWrite:
PUTS(2, "DevWrite file=");
PUTD(2, p->u.rw.fileno);
PUTS(2, ", count=");
PUTD(2, p->u.rw.count);
PUTC(2, '\n');
rc = DrvWrite(p, 0);
break;
case DevWriteVerify:
PUTS(2, "DevWriteVerify file=");
PUTD(2, p->u.rw.fileno);
PUTS(2, ", count=");
PUTD(2, p->u.rw.count);
PUTC(2, '\n');
rc = DrvWrite(p, 1);
break;
case DevPeek:
PUTS(2, "DevPeek\n");
rc = DrvPeek(p);
break;
case DevInputStatus:
PUTS(2, "DevInputStatus\n");
rc = DrvInputStatus();
break;
case DevInputFlush:
PUTS(2, "DevInputFlush\n");
rc = DrvInputFlush();
break;
case DevOutputStatus:
PUTS(2, "DevOutputStatus\n");
rc = DrvOutputStatus();
break;
case DevOutputFlush:
PUTS(2, "DevOutputFlush\n");
rc = DrvOutputFlush();
break;
case DevOpen:
PUTS(2, "DevOpen file=");
PUTD(2, p->u.oc.fileno);
PUTC(2, '\n');
rc = DrvOpen(p);
break;
case DevClose:
PUTS(2, "DevClose file=");
PUTD(2, p->u.oc.fileno);
PUTC(2, '\n');
rc = DrvClose(p);
break;
case DevIOCtl:
PUTS(2, "DevIOCtl cat=");
PUTX(2, p->u.ioc.cat);
PUTS(2, ", fcn=");
PUTX(2, p->u.ioc.fcn);
PUTS(2, ", plen=");
PUTD(2, p->u.ioc.plen);
PUTS(2, ", dlen=");
PUTD(2, p->u.ioc.dlen);
PUTC(2, '\n');
rc = DrvIOCtl(p);
break;
default:
rc = ERROR + DONE + InvalidCommand;
}
PUTS(2, "Status=");
PUTX(2, rc);
PUTC(2, '\n');
p->status = rc;
}