home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-387-Vol-3of3.iso / g / gtak212.zip / OS2-DD / strategy.c < prev   
C/C++ Source or Header  |  1993-01-16  |  3KB  |  144 lines

  1. /*****************************************************************************
  2.  * $Id: strategy.c,v 1.4 1992/07/24 11:37:08 ak Exp $
  3.  *****************************************************************************
  4.  * $Log: strategy.c,v $
  5.  * Revision 1.4  1992/07/24  11:37:08  ak
  6.  * OS/2 2.0
  7.  * BASEDEV drivers
  8.  * VGA debugging
  9.  *
  10.  * Revision 1.3  1992/01/06  22:37:29  ak
  11.  * MSC does't call _STI_debug automatically.
  12.  *
  13.  * Revision 1.2  1992/01/06  20:09:57  ak
  14.  * *** empty log message ***
  15.  *
  16.  * Revision 1.1.1.1  1992/01/06  19:55:11  ak
  17.  * Alpha version.
  18.  *
  19.  * Revision 1.1  1992/01/06  19:55:10  ak
  20.  * Initial revision
  21.  *
  22.  *****************************************************************************/
  23.  
  24. #include "dd.h"
  25. #include "dd_defs.h"
  26.  
  27. extern void
  28. strategy(ReqPtr p)
  29. {
  30.     word rc, dseg;
  31.  
  32.     switch (p->cmd) {
  33.  
  34.     case DevInit:
  35.         devhlp = p->u.ini.devhlp;
  36.  
  37.         dseg = ctors();
  38.  
  39.         if ((rc = DrvInit(p->u.ini.cmdline)) & ERROR) {
  40.             p->u.ino.nunits = 0;
  41.             p->u.ino.endCode = 0;
  42.             p->u.ino.endData = 0;
  43.         } else {
  44.             p->u.ino.endCode = Offset(&end_code);
  45.             p->u.ino.endData = dseg;
  46.         }
  47.         p->u.ino.bpb = 0;
  48.         break;
  49.  
  50.     case DevBaseInit:
  51.         devhlp = p->u.ini.devhlp;
  52.  
  53.         dseg = ctors();
  54.  
  55.         if ((rc = DrvInitBase(p->u.ini.cmdline)) & ERROR) {
  56.             p->u.ino.nunits = 0;
  57.             p->u.ino.endCode = 0;
  58.             p->u.ino.endData = 0;
  59.         } else {
  60.             p->u.ino.endCode = Offset(&end_code);
  61.             p->u.ino.endData = dseg;
  62.             p->u.ini.cmdline = 0;
  63.         }
  64.         p->u.ino.bpb = 0;
  65.         break;
  66.  
  67.     case DevRead:
  68.         PUTS(2, "DevRead file=");
  69.         PUTD(2, p->u.rw.fileno);
  70.         PUTS(2, ", count=");
  71.         PUTD(2, p->u.rw.count);
  72.         PUTC(2, '\n');
  73.         rc = DrvRead(p);
  74.         break;
  75.     case DevWrite:
  76.         PUTS(2, "DevWrite file=");
  77.         PUTD(2, p->u.rw.fileno);
  78.         PUTS(2, ", count=");
  79.         PUTD(2, p->u.rw.count);
  80.         PUTC(2, '\n');
  81.         rc = DrvWrite(p, 0);
  82.         break;
  83.     case DevWriteVerify:
  84.         PUTS(2, "DevWriteVerify file=");
  85.         PUTD(2, p->u.rw.fileno);
  86.         PUTS(2, ", count=");
  87.         PUTD(2, p->u.rw.count);
  88.         PUTC(2, '\n');
  89.         rc = DrvWrite(p, 1);
  90.         break;
  91.     case DevPeek:
  92.         PUTS(2, "DevPeek\n");
  93.         rc = DrvPeek(p);
  94.         break;
  95.     case DevInputStatus:
  96.         PUTS(2, "DevInputStatus\n");
  97.         rc = DrvInputStatus();
  98.         break;
  99.     case DevInputFlush:
  100.         PUTS(2, "DevInputFlush\n");
  101.         rc = DrvInputFlush();
  102.         break;
  103.     case DevOutputStatus:
  104.         PUTS(2, "DevOutputStatus\n");
  105.         rc = DrvOutputStatus();
  106.         break;
  107.     case DevOutputFlush:
  108.         PUTS(2, "DevOutputFlush\n");
  109.         rc = DrvOutputFlush();
  110.         break;
  111.     case DevOpen:
  112.         PUTS(2, "DevOpen file=");
  113.         PUTD(2, p->u.oc.fileno);
  114.         PUTC(2, '\n');
  115.         rc = DrvOpen(p);
  116.         break;
  117.     case DevClose:
  118.         PUTS(2, "DevClose file=");
  119.         PUTD(2, p->u.oc.fileno);
  120.         PUTC(2, '\n');
  121.         rc = DrvClose(p);
  122.         break;
  123.     case DevIOCtl:
  124.         PUTS(2, "DevIOCtl cat=");
  125.         PUTX(2, p->u.ioc.cat);
  126.         PUTS(2, ", fcn=");
  127.         PUTX(2, p->u.ioc.fcn);
  128.         PUTS(2, ", plen=");
  129.         PUTD(2, p->u.ioc.plen);
  130.         PUTS(2, ", dlen=");
  131.         PUTD(2, p->u.ioc.dlen);
  132.         PUTC(2, '\n');
  133.         rc = DrvIOCtl(p);
  134.         break;
  135.     default:
  136.         rc = ERROR + DONE + InvalidCommand;
  137.     }
  138.  
  139.     PUTS(2, "Status=");
  140.     PUTX(2, rc);
  141.     PUTC(2, '\n');
  142.     p->status = rc;
  143. }
  144.