home *** CD-ROM | disk | FTP | other *** search
/ Multimedia Classic / MultimediaClassic.mdf / utility / vts139b.arj / LIB / DEVDAC.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-04-25  |  6.3 KB  |  233 lines

  1. {****************************************************************************}
  2. {                                                                            }
  3. { MODULE:         DevDac                                                     }
  4. {                                                                            }
  5. { DESCRIPTION:    Device driver for all DAC-type sound cards. This includes  }
  6. {                 Uses timer polling.                                        }
  7. {                                                                            }
  8. { AUTHOR:         Juan Carlos ArĂ©valo                                        }
  9. {                                                                            }
  10. { MODIFICATIONS:  Nobody (yet ;-)                                            }
  11. {                                                                            }
  12. { HISTORY:        12-Nov-1992 Documentation.                                 }
  13. {                                                                            }
  14. { (C) 1992 VangeliSTeam                                                      }
  15. {____________________________________________________________________________}
  16.  
  17. UNIT DevDAC;
  18.  
  19. INTERFACE
  20.  
  21. CONST                           { Device ID Strings. }
  22.   DACDevID      = 'DAC-Mono';
  23.   DAC2DevID     = 'DAC-Stereo';
  24.   MixDAC2DevID  = 'Mix-DAC-Stereo';
  25.   Mix2DAC2DevID = 'Mix2-DAC-Stereo';
  26.  
  27.  
  28. { Configuration. }
  29.  
  30. IMPLEMENTATION
  31.  
  32. USES SoundDevices, StrConst;
  33.  
  34.  
  35.  
  36.  
  37. {----------------------------------------------------------------------------}
  38. { Name functions.                                                            }
  39. {____________________________________________________________________________}
  40.  
  41. FUNCTION DACName : TDevName; FAR;
  42.   BEGIN
  43.     DACName := GetString(StrDevDACName);
  44.   END;
  45.  
  46. FUNCTION DAC2Name : TDevName; FAR;
  47.   BEGIN
  48.     DAC2Name := GetString(StrDevDAC2Name);
  49.   END;
  50.  
  51. FUNCTION MixDAC2Name : TDevName; FAR;
  52.   BEGIN
  53.     MixDAC2Name := GetString(StrDevMixDAC2Name);
  54.   END;
  55.  
  56. FUNCTION Mix2DAC2Name : TDevName; FAR;
  57.   BEGIN
  58.     Mix2DAC2Name := GetString(StrDevMix2DAC2Name);
  59.   END;
  60.  
  61.  
  62.  
  63.  
  64. {----------------------------------------------------------------------------}
  65. { Autodetect routine. It's always present (can't be detected).               }
  66. {____________________________________________________________________________}
  67.  
  68. FUNCTION DACDetect : BOOLEAN; FAR;
  69.   BEGIN
  70.     DACDetect := TRUE;
  71.   END;
  72.  
  73.  
  74.  
  75.  
  76. {----------------------------------------------------------------------------}
  77. { Device Initialisation routine.                                             }
  78. {____________________________________________________________________________}
  79.  
  80. PROCEDURE Init(Hz: WORD); FAR; 
  81.   BEGIN
  82.     CalcTimerData(Hz);    { Standard polling initialisation. }
  83.     InitTimer;
  84.   END;
  85.  
  86. PROCEDURE InitMono(Hz: WORD); FAR;
  87.   BEGIN
  88.     Stereo    := FALSE;
  89.     MixMethod := 0;
  90.     DevInitDac(FALSE, 8);
  91.     Init(Hz);
  92.   END;
  93.  
  94. PROCEDURE InitSter(Hz: WORD); FAR;
  95.   BEGIN
  96.     Stereo    := TRUE;
  97.     MixMethod := 1;
  98.     DevInitDac(TRUE, 8);
  99.     Init(Hz);
  100.   END;
  101.  
  102. PROCEDURE InitSterMix(Hz: WORD); FAR;
  103.   BEGIN
  104.     Stereo    := TRUE;
  105.     MixMethod := 2;
  106.     DevInitDac(TRUE, 8);
  107.     Init(Hz);
  108.   END;
  109.  
  110. PROCEDURE InitSterMix2(Hz: WORD); FAR;
  111.   BEGIN
  112.     Stereo    := TRUE;
  113.     MixMethod := 3;
  114.     DevInitDac(TRUE, 8);
  115.     Init(Hz);
  116.   END;
  117.  
  118.  
  119.  
  120.  
  121. {----------------------------------------------------------------------------}
  122. { Device deinitialisation routine.                                           }
  123. {____________________________________________________________________________}
  124.  
  125. PROCEDURE DevEnd; FAR; ASSEMBLER;
  126.   ASM
  127.   END;
  128.  
  129.  
  130.  
  131.  
  132. {----------------------------------------------------------------------------}
  133. { Accesory routines.                                                         }
  134. {____________________________________________________________________________}
  135.  
  136. PROCEDURE DevChgHz(Hz: WORD); FAR;
  137.   BEGIN
  138.     CalcTimerData(Hz);
  139.     InitTimer;
  140.   END;
  141.  
  142. PROCEDURE DevPoll; FAR;
  143.   BEGIN
  144.   END;
  145.  
  146.  
  147.  
  148.  
  149. {----------------------------------------------------------------------------}
  150. { Device records.                                                            }
  151. {____________________________________________________________________________}
  152.  
  153. CONST
  154.   DACData : TSoundDevice = (
  155.     DevID      : DACDevID;
  156.     DMA        : FALSE
  157.   );
  158.  
  159.   DAC2Data : TSoundDevice = (
  160.     DevID      : DAC2DevID;
  161.     DMA        : FALSE
  162.   );
  163.  
  164.   MixDAC2Data : TSoundDevice = (
  165.     DevID      : MixDAC2DevID;
  166.     DMA        : FALSE
  167.   );
  168.  
  169.   Mix2DAC2Data : TSoundDevice = (
  170.     DevID      : Mix2DAC2DevID;
  171.     DMA        : FALSE
  172.   );
  173.  
  174.  
  175.  
  176.  
  177. {----------------------------------------------------------------------------}
  178. { Init code.                                                                 }
  179. {____________________________________________________________________________}
  180.  
  181. BEGIN
  182.  
  183.   WITH DACData DO BEGIN
  184.     Name            := DACName;
  185.     AutoDetect      := DACDetect;
  186.     InitRut         := InitMono;
  187.     ChgHzProc       := DevChgHz;
  188.     GetRealFreqProc := GetRealFreq;
  189.     TimerHandler    := SoundDevices.TimerHandler;
  190.     PollRut         := DevPoll;
  191.     EndRut          := DevEnd;
  192.   END;
  193.  
  194.   WITH DAC2Data DO BEGIN
  195.     Name            := DAC2Name;
  196.     AutoDetect      := DACDetect;
  197.     InitRut         := InitSter;
  198.     ChgHzProc       := DevChgHz;
  199.     GetRealFreqProc := GetRealFreq;
  200.     TimerHandler    := SoundDevices.TimerHandler;
  201.     PollRut         := DevPoll;
  202.     EndRut          := DevEnd;
  203.   END;
  204.  
  205.   WITH MixDAC2Data DO BEGIN
  206.     Name            := MixDAC2Name;
  207.     AutoDetect      := DACDetect;
  208.     InitRut         := InitSterMix;
  209.     ChgHzProc       := DevChgHz;
  210.     GetRealFreqProc := GetRealFreq;
  211.     TimerHandler    := SoundDevices.TimerHandler;
  212.     PollRut         := DevPoll;
  213.     EndRut          := DevEnd;
  214.   END;
  215.  
  216.   WITH Mix2DAC2Data DO BEGIN
  217.     Name            := Mix2DAC2Name;
  218.     AutoDetect      := DACDetect;
  219.     InitRut         := InitSterMix2;
  220.     ChgHzProc       := DevChgHz;
  221.     GetRealFreqProc := GetRealFreq;
  222.     TimerHandler    := SoundDevices.TimerHandler;
  223.     PollRut         := DevPoll;
  224.     EndRut          := DevEnd;
  225.   END;
  226.  
  227.   InitDevice(@Mix2DAC2Data);
  228.   InitDevice(@MixDAC2Data);
  229.   InitDevice(@DAC2Data);
  230.   InitDevice(@DACData);
  231.  
  232. END.
  233.