home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / audiopdd.zip / init.c < prev    next >
C/C++ Source or Header  |  1999-02-27  |  4KB  |  157 lines

  1. //
  2. // init.c
  3. // 3-Feb-99
  4. //
  5. // USHORT stratMode2Init(REQPACK __far *rpPtr);
  6. //
  7. // will make call into slam basedev to get resources (won't use RM... but have to
  8. // write a slam, with IDC hook, probably use assembly like wacker...?)
  9.  
  10. #pragma code_seg ("_INITTEXT");
  11. #pragma data_seg ("_INITDATA","ENDDS");
  12.  
  13. #include "cs40.h"
  14.  
  15. extern USHORT endCode;
  16. extern USHORT endData;
  17.  
  18. // -------------------------------------
  19. // in:
  20. //out:
  21. //nts:
  22.  
  23. USHORT stratMode2Init(REQPACK __far *rpPtr) {
  24.  
  25.  USHORT rc = 0;
  26.  USHORT heapSize;
  27.  USHORT dmaPlayChannel, dmaRecChannel, irq;
  28.  USHORT bp, cp, mode, make = 0;
  29.  USHORT flags = 0;
  30.  USHORT typeFdmaPlay = 0, typeFdmaRec = 0, dtmFlag = 0;
  31.  
  32.  Device_Help = rpPtr->init.Device_Help;
  33.  
  34.  rpPtr->status = RPDONE | RPERR | RPGENFAIL;
  35.  rpPtr->init.sizeCS = 0;
  36.  rpPtr->init.sizeDS = 0;
  37.  
  38.  heapSize = HeapInit(8192);
  39.  
  40.  // do any log setup here...
  41.  
  42.  // handle cmd line here...
  43.  
  44.  // temp for now, knows about -x only
  45.  
  46.  {
  47.   UCHAR __far *tPtr = rpPtr->init.argsPtr;
  48.  
  49.   while (*tPtr && *tPtr != ' ') { // skip over filename
  50.      tPtr++;
  51.   }
  52.  
  53.   while (*tPtr && *tPtr != '-') { // look for a -
  54.      tPtr++;
  55.   }
  56.   if (*tPtr) {                    // will have a - or a -0-
  57.      tPtr++;
  58.      if (*tPtr == 'x') make = 0x101;
  59.   }
  60.  
  61.   if (make == 0) {
  62.  
  63.      typeFdmaPlay = 1;
  64.      typeFdmaRec = 1;
  65.      dmaPlayChannel = 1;
  66.      dmaRecChannel = 0;
  67.      flags = FLAGS_WAVEAUDIO_FULLDUPLEX;
  68.      dtmFlag = 1;
  69.  
  70.      irq = 5;
  71.      bp = 0x534;
  72.      cp = 0x538;
  73.      mode = 2;
  74.      make = 0;   // 0=CS, 0x100=Yamaha, 0x101=3DXG
  75.   }
  76.   else {
  77.  
  78.      typeFdmaPlay = 1;
  79.      typeFdmaRec = 1;
  80.      dmaPlayChannel = 3;
  81.      dmaRecChannel = 0;
  82.      flags = FLAGS_WAVEAUDIO_FULLDUPLEX;
  83.      dtmFlag = 1;
  84.  
  85.      irq = 11;
  86.      bp = 0x534;
  87.      cp = 0x390;
  88.      mode = 2;
  89.      make = 0x101;  // 0=CS, 0x100=Yamaha, 0x101=3DXG
  90.   }
  91.  }
  92.  
  93.  
  94.  // resource manager access here (create, detect PnP, etc.) here...
  95.  
  96.  // had created IRQ object for timer here...
  97.  // had setup more hardware types here (FMSYNTH or MPU...)
  98.  
  99.  if (dmaPlayChannel >= 4) flags = flags | FLAGS_WAVEAUDIO_DMA16;
  100.  if (typeFdmaPlay)        flags = flags | FLAGS_WAVEAUDIO_FTYPEDMA;
  101.  
  102.  rc = waveplayInit(dmaPlayChannel, flags, irq);
  103.  if (rc) {
  104. ddprintf("waveplayInit() failed, rc=%u\n");
  105.     goto ExitNow;
  106.  }
  107.  
  108.  flags = flags & ~(FLAGS_WAVEAUDIO_DMA16 | FLAGS_WAVEAUDIO_FTYPEDMA);
  109.  if (dmaRecChannel >= 4) flags = flags | FLAGS_WAVEAUDIO_DMA16;
  110.  if (typeFdmaRec)        flags = flags | FLAGS_WAVEAUDIO_FTYPEDMA;
  111.  
  112.  rc = waverecInit(dmaRecChannel, flags, irq);
  113.  if (rc) {
  114. ddprintf("waverecInit() failed, rc=%u\n");
  115.     goto ExitNow;
  116.  }
  117.  
  118.  rc = chipsetInit(bp, cp, mode, make);
  119.  if (rc) goto ExitNow;
  120.  
  121.  chipsetSetDTM(dtmFlag);
  122.  
  123.  
  124.  // had init'ed mixer here...
  125.  //InitMixer();
  126.  
  127.  // had done VDD setup here...
  128.  // fill in the ADAPTERINFO
  129.  //codec_info.ulNumPorts = NUMIORANGES;
  130.  //codec_info.Range[0].ulPort  =  pResourcesWSS->uIOBase[0];
  131.  //codec_info.Range[0].ulRange =  pResourcesWSS->uIOLength[0];
  132.  //...
  133.  //// set up the addressing to the codec data for the vdd
  134.  //pfcodec_info = (ADAPTERINFO __far *)&codec_info;
  135.  //DevHelp_VirtToLin (SELECTOROF(pfcodec_info), (ULONG)(OFFSETOF(pfcodec_info)),(PLIN)&pLincodec);
  136.  // copy the pdd name out of the header.
  137.  //for (i = 0; i < sizeof(szPddName)-1 ; i++) {
  138.  //   if (phdr->abName[i] <= ' ')
  139.  //      break;
  140.  //   szPddName[i] = phdr->abName[i];
  141.  //}
  142.  //// register the VDD IDC entry point..
  143.  //DevHelp_RegisterPDD ((NPSZ)szPddName, (PFN)IDCEntry_VDD);
  144.  
  145.  if (rc) goto ExitNow;
  146.  
  147.  rpPtr->status = RPDONE;
  148.  rpPtr->init.sizeCS = (USHORT)&endCode;
  149.  rpPtr->init.sizeDS = (USHORT)&endData;
  150.  
  151. ddprintf("stratMode2Init:endCode=%x, endData=%x, ds=%x\n",rpPtr->init.sizeCS,rpPtr->init.sizeDS,_DS());
  152.  
  153. ExitNow:
  154.  return rc;
  155. }
  156.  
  157.