Daqarta for DOS Contents
Last driver update 5-22-99.
Please note that ESS makes chipsets, but not the actual boards that use them. Those could be made by a variety of suppliers, so your board may differ slightly from that used as the basis for this driver. You may not even be able to determine the actual board manufacturer, or it may be a company without "brand name" recognition.
The ES1868 allows either 8- or 16-bit mono operation on any input, plus full control of the OPL3 synthesizer for dual-channel stimulus generation. (But note that the ES688 requires installation of a separate OPL3 chip.)
This driver does not directly configure PnP (Plug 'n Play) cards. It reads the base address, IRQ, and DMA settings for the card from the BLASTER environment string, which should be set by a PnP configuration manager such as ESSCFG.EXE, or by a SET BLASTER= line in your AUTOEXEC.BAT file.
These parameters may be needed if you are using a second sound card, or you use another configuration manager that doesn't set the BLASTER string. You will then need to use another method to determine the PnP settings of the card.
DQA.CFG file. Each parameter is given as a letter and colon, followed immediately by a value. Use a space to separate parameters. For example:
ESS.ADC A:h220 D:1 I:5The order of the parameters is not important.
Daqarta will read the BLASTER environment string, if it is present, and use that to set the Address, IRQ, and DMA. If the mixer chip uses a different address than the DSP, which is a possibility with PnP models, then the BLASTER string will also include an M value which Daqarta will use. Setting an A:, I:, or D: value on the ESS.ADC line will cause that value to be used in preference to the equivalent BLASTER value. A special A:M parameter allows you to set a different mixer address.
You may need to override the BLASTER settings if there is more than one sound card in your system, since there will be only one BLASTER string in the environment. You can view the BLASTER string by entering SET at the DOS prompt.
The configuration manager must appear in CONFIG.SYS or AUTOEXEC.BAT to configure the PnP card properly before Daqarta runs. This actually sets the physical address of the card, and without it the card is invisible to your system.
Daqarta ignores any non-Daqarta drivers that may have been installed for your board, whether Windows or DOS.
Daqarta will exit with an error message if it finds a problem in the ESS.ADC parameters. Once Daqarta is running, you can check to see which parameters have been set by the BLASTER string, configuration line, or default, by checking the board information summary available via the ALT-H Plug-In Help system.
The most likely reason for the BLASTER string being wrong is that you have more than one sound card installed, and the single BLASTER string is for another card. For non-PnP cards like the ES688, there is also the possibility that the jumpers on the card don't match the BLASTER value.
If you do need to give the A: parameter here, note that all Daqarta parameters require a colon, and that you should use an 'h' prefix before hexadecimal values, as in:
Compare this to the BLASTER format, which would be just A240. The default address for ESS.ADC is hex 220, which will be used if there is no BLASTER string and no A: parameter.
Daqarta checks the address given, and if it does not find a valid ESS-compatible board there it exits with a message giving the address it tried:
ESS board not found at 0240h.The only exception is if you set A:0 to allow viewing of this board Help system without having a board installed or properly configured.
If it finds a board at the given address, Daqarta checks the DSP version number. In reality, this DSP version is a "fake" returned by the ESS chip to make it appear to be an 8-bit Creative Labs Sound Blaster Pro card, since the ESS chip is capable of emulating many of the features of the SB Pro. But the ESS chip can actually do much more than that, including 16-bit operation with finer control over sample rates and input filter cutoff frequency. The ES1868 chip always reports a DSP version of 3.01, and if anything else is found Daqarta will exit with a message telling you what was found and what was needed, as in:
Board found with DSP version 02.10. Requires ESS board with DSP version 3.01.
configured with the mixer functions in a different address range than the base (DSP) address given by the A: parameter (or the A parameter in BLASTER). In that case, the BLASTER environment will also have an M parameter present. This driver normally responds to that automatically, but if you have more than one card there will only be a single BLASTER string. If the card that you want to use with this driver is not the one in the string, and if it has a different mixer address, then besides giving the A: parameter you must also give an A:M parameter.
For example, if you want to use a card with a base address of 240h and a mixer address of 260h, you would give:
ESS.ADC A:h240 A:Mh260
Note the 'h' before the value to indicate hexadecimal. If you give an A: parameter but no A:M parameter, then the mixer address is assumed to be the same as the base address... the usual case.
C:\PCAUDIO\ESSCFG /A:220 /I:5 /D:1 /J:E /B:330and should have been added automatically when you ran the installation software for your PnP board.
DWCFGMG.SYS is an alternate PnP manager that may be used in CONFIG.SYS, but it uses 1700 bytes of low DOS memory whereas ESSCFG.EXE does not, and doesn't set the BLASTER string in the DOS environment.
Note that the ESSCFG default values may need to be changed to avoid system conflicts. If you are running Windows 9x, a complete PnP determination is performed at start-up, and the proper settings are used within Windows 9x. However, when you exit to DOS to run Daqarta, Windows capriciously clears the PnP registers on your board, making it invisible until ESSCFG is run.
Your best bet is to set the ESSCFG parameters to the same values that Windows 9x uses. Go to Start, Programs, and MS-DOS Prompt and enter SET at the command prompt. You will see several lines, including one like:
BLASTER=A220 I5 D1These are the actual settings assigned by the Windows 9x PnP configuration manager. Check that these values match those on the ESSCFG line of AUTOEXEC.BAT and C:\WINDOWS\DOSSTART.BAT and everything should be OK.
(AUTOEXEC.BAT is the file used when starting directly to DOS without entering Windows 9x. DOSSTART.BAT is what Windows 95 uses when you exit or shut down to DOS from Windows. A more detailed discussion of PnP issues appears in the README.TXT file that comes with Daqarta.)
ESSCFG sets the physical address for the PnP board, as well as the IRQ and DMA levels. These must match the BLASTER environment string if Daqarta is to read them automatically. If not, then you must give A:, I:, and D: values on the ESS.ADC line of DQA.CFG.
Bits control to 8 or 16 bits. Most users will want to omit this parameter and accept the default 16-bit operation. This only affects the initial mode... you can toggle to the other from the board menu Bits control.
To start in 8-bit mode, use:
Input channel that will be used when you first activate this driver via the Board option. This parameter requires either a number or a letter (case-insensitive):
Number OR Letter Mic C:0 C:M CD R C:1 C:D CD L C:2 C:C Line R C:3 C:R Line L C:4 C:LAs a mnemonic for the CD selection letters, think of the C and D as the left and right letters in 'CD'. The letter codes are the same as those for the G: Gain calibration parameter.
For example, to select the Mic input as the default, you would use either:
ESS.ADC C:0 or ESS.ADC C:MChannel numbers are reported in the Daqarta title line as "Ch0" instead of "M" or "Mic" for file compatibility between different boards.
The default value is the Left Line input (Line L), which is Ch4.
DMA operation for all data acquisition. Although the ES1868 is a 16-bit card, it uses an 8-bit DMA channel for all data. This entails twice as many transfers with 16-bit data, but there is usually negligible impact upon performance.
DMA levels of 0, 1, or 3 may be selected via the /D: parameter on the ESSCFG.EXE line in your AUTOEXEC.BAT or DOSSTART.BAT file. The ESS.ADC line must hold the same value (without a /), unless you are using the default value of DMA 1. To use DMA 3, for example, you would set:
Usually, Daqarta can read the D value directly from your BLASTER environment. Note that forcing a value via the D: parameter on the ESS.ADC line will overrule the BLASTER setting, but it does not actually change the value used by the card, which must be done via ESSCFG (or by jumpers on ES688 models).
configuration line tells the driver not to look for the file. You would probably only want to use this option if you are really short of DOS memory, since loading the Help file only increases memory use by a few hundred bytes for its separate link stack and directory. (The file itself shares the text buffer of the Main Help file.)
Note that ALL Help files, including main, can be omitted via an F:0 parameter on the INIT line (first line) of the DQA.CFG file. If this is present, no individual module Help will be loaded.
R: parameter to preset the input Range. Instead, the G: parameter allows you to compensate for externally-applied Gain from a preamp or attenuator, for example.
The G: parameter is similar to the main User Unit/V Factor control, except that here the Gain may be different for different inputs. When you switch between them via the Input item of the Board menu, the range calibration will change to match. Note, however, that all inputs are assumed to have the same units, which you can change via the main User Units Name control.
The G: parameter must be followed by a letter to indicate the input it applies to, followed by the sensitivity value. For example,
ESS.ADC G:M12.34specifies that the Microphone input has a sensitivity of 12.34 Volts full-scale on the default Range (8). The Range may be changed via the R: parameter or the board menu Range control, and the sensitivity will be scaled appropriately. See the Calibration section for details on setting the G: value for ranges other than the default.
The input letter codes (case-insensitive) are:
M Microphone L Left Line R Right Line C Left CD D Right CDAs a mnemonic, think of the C and D letters as the left and right letters in 'CD'. (These are the same letter codes that can be used with the C: Channel parameter.)
The value that follows the input letter may be either a normal decimal value or may use "European" notation, with the units prefix replacing the decimal. The prefix character must be one of the standard scientific prefixes recognized by Daqarta, which also allows 'u' instead of 'µ' and 'K' instead of 'k'. Otherwise, this is case-sensitive: 'm' is 'milli' and 'M' is 'Mega', for instance.
Neither the integer nor fraction part of the entry may exceed 65535. If no integer part is desired, you MUST include a leading 0 as a placeholder, as in 'G:M0m12345'. If no fraction part is desired, it may be omitted completely. The following are all valid entries:
ESS.ADC G:m12u345 ; 12.345 microVolts on Microphone ESS.ADC G:L123.45 ; 123.45 Volts on Left Line ESS.ADC G:r10 ; 10 Volts on Right Line ESS.ADC G:C10m ; 10 milliVolts on Left CD ESS.ADC G:d0f999 ; 0.999 femtoVolts on Right CD
You may use separate G: parameters for as many of the inputs as desired. The rest will remain at default values, which are 21.25 mV for the Mic input and 1.712 V for all others.
The values entered this way have no effect on which input is selected at startup... that's always Left Line unless set otherwise via the C: Channel parameter.
interrupt-driven sampling used for RTime operation on some "basic" laboratory-type boards, where an interrupt request is generated for each sample acquired. Here the IRQ is used only in conjunction with DMA sampling, to signify the completion of an entire buffer full of data. It does NOT require the special DDISK13 driver that interrupt-driven boards may need for DDisk operation.
Allowable values for I: are 2, 5, 7, or 10. The value must match that given by the /I: parameter on the ESSCFG.EXE line. The ESS.ADC default is 5, so if ESSCFG uses 7, for example, you would set:
Usually, Daqarta can read the I value directly from your BLASTER environment. Although forcing a value via the D: parameter on the ESS.ADC line will overrule the BLASTER setting, it does not actually change the value used by the card, which must be done via ESSCFG (or by jumpers on ES688 models).
Note that 2 and 10 use the second (AT) interrupt controller and hence use a second End Of Interrupt (EOI) command that is not needed when using 5 or 7. Although the time to give this extra command is unlikely to ever be a problem, you might want to use 5 or 7 if there is no other conflict.
IRQ 2 is really the same as IRQ 9, and Daqarta will accept I:9 instead of I:2.
configuration line, for example, LPT1 will be used to provide optional external triggering, stimulus pulse output, Averager remote control, and DDisk remote control.
The DB25 pin assignments for these (all standard TTL) are:
Stimulus Pulse OUT 2 DDisk Remote IN 12 Averager Remote IN 13 External Trigger IN 15
If the LPT number is not in the range of 1 to 4, Daqarta will exit immediately with:
'LPT value out of range.'
Most computer systems come with a single standard printer port, and if you need more than that you will have to install a separate board. All DOS systems can support ports LPT1 through LPT3 "naturally", without special software. The system BIOS keeps a record of the location of each LPT that it recognizes, and that record is consulted to validate the LPT value that you use here. If there is no entry for the LPT number you give (L:3 in this example), Daqarta exits with a message like:
'LPT3 not recognized by BIOS.' 'BIOS recognizes only LPT1 to LPT2.'where the message will reflect actual LPT availability.
Problems may be due to adding a new printer port board and getting the jumpers or switches wrong. Most boards allow designation as LPT1 or LPT2. If you need to add LPT3, be sure the board allows it before you buy. Some boards allow LPT4 use, but not all systems support this. For example, IBM PS/2 systems use the LPT4 location in the BIOS data area for other purposes.
You can use the LTEST.EXE utility supplied with Daqarta to see the port addresses corresponding to each LPT, as read from the BIOS data area just like this driver does. A typical display would be:
Printer Port assignments: LPT1: 0378h LPT2: 0000h LPT3: 0000h LPT4: 9FC0hIn this example, only LPT1 is installed, at address 378h. LPT2 and LPT3 are available, but LPT4 is clearly in use for something else. LPT ports are always assigned consecutively by the BIOS, so this can't be a hidden port. It's also beyond the highest possible port address of 3FFh.
Even if LTEST shows that the LPT4 location is available to install a new port, you may need to run special software (supplied with your port board) to make use of it... not all BIOSes will assign this automatically on start-up.
input range, the input filter cutoff frequency, and finer control over the sample rate. These features will be enabled automatically if a valid ESS board is found.
However, all ESS models have not been tested. If your board doesn't support these extended features, you can prevent attempts to use them via:
Conversely, if for some reason this driver is unable to properly detect the ESS model number, you can attempt to force the use of these extended features by giving any value other than 0.
The automatically-detected ESS model number will appear in the title of the board menu, but if you use the M: parameter the title will simply show 'ESS'.
Range control of the Board menu.
Note that the R: parameter (or Range control) changes the actual input sensitivity like a level control, whereas the G: parameter simply changes the calibration factor so that different Y-axis values are shown without affecting the actual size of the signal.
Ranges may be preset to any value between 0 and 15. For example, set range 9 with:
ESS.ADC R:9Note that analog signal overload typically occurs at around +/- 1 Volt, which may be well below the ADC limits for the less-sensitive Range settings, such as below 8. There is no point in using these ranges... they just waste ADC bits from the more-positive and more-negative portions where no signal can reach.
If you use the M:0 parameter to force Compatible mode, the Range will be forced to 8 regardless of the R: parameter.
C: parameter on the second (ADC) line of the configuration file. Daqarta refers to each input as a "Channel" on the main title line:
Mic Ch0 CD R Ch1 CD L Ch2 Line R Ch3 Line L Ch4The start-up default is 'Line L' or Ch4. The CD and Line inputs are equivalent in sensitivity, whereas the Mic input is much more sensitive.
If you plug one of the standard cables that come with many boards into the Line input, the red "phono" connector is the Line Right input... R for Red and Right. The white (sometimes black) phono is then the Line Left input. If you plug the same cable into the Mic input instead, only the white phono connector is the active Mic input... the red one is not used.
The CD inputs are typically small white connectors on the board itself... they don't appear on the rear panel. These "extra" inputs are handy for rapid switching between different signals. One excellent use is to monitor the direct stimulus (such as from the built-in synthesizer) that you are using to drive your experiment. This allows you to verify timing, waveform, spectrum, rise/fall shapes, and so on.
You can buy a CD-ROM cable for a few dollars and snip off the CD connector, leaving only the end that plugs in to the board. Then wire the free end to your choice of connectors mounted on a spare card-slot cover plate. The typical white Panasonic or Mitsumi CD connector pins are spaced on 2mm centers, but if your board has a Sony connector (usually black, with no raised collar) you may be able to use a standard 0.1 inch connector, which you may already have on hand.
The Sony connector may have an outline around the pins, to show the orientation of the cable connector. But since the center 2 pins are grounds, the worst that can happen if you reverse this is that Left and Right inputs will be reversed. That doesn't matter much, since they are added together internally in the mono mode used here.
.---. SONY .---. | `------' | | o o o o | `--------------' Right Gnds Left
Y-axis if you are viewing a waveform or linear magnitude spectrum. (The Y-log Power Spectrum is always relative to full-scale sensitivity for the range, so its axis doesn't change.) Higher Range values give higher input sensitivity. The exact sensitivity depends on the Input selected, as well as any Gain parameter, so you should refer to the Y-axis values.
Each Input has its own Range setting (and could likewise have its own Gain calibration), so you can maintain different sensitivities appropriate for the signal connected to each input. When you select a different Input, the Range that was previously set for that input is automatically used.
The Range settings run from 0 to 15, with sensitivity increasing in approximately 1.5 dB steps. Avoid the lower ranges on Line and CD inputs, since their full-scale sensitivities may be much lower than the analog signal overload limit, typically around +/- 1 Volt. On the reference board used for driver development, Range 8 is +/- 1.712 Volts and Range 0 is +/- 6.82 Volts.
Range 0 thus utilizes less than 15 percent of the ADC range before signal overload is reached. When this happens, the top and/or bottom of the waveform will become flattened or "clipped" to the limiting value. This produces distortion, mostly odd harmonics of the input fundamental frequency if the signal is a symmetrical waveform.
If your board is like this, Range 11 would be a better fit between the ADC and the analog input limits. Use higher ranges if you have lower-level signals that need boosting.
G: parameter to calibrate each of the input sources for different external Gains. The values entered via the G: parameter refer to the default Range 8, which is the only range available in Compatible mode (with the M:0 parameter). If you want a certain calibration on another range, you must compute the equivalent setting on Range 8 when setting the G: parameter.
The simplest way to do this is to apply a calibration signal of known amplitude to the desired input on the desired range. A sine wave of 500 to 1000 Hz is best, since you can use FFT mode to view its magnitude directly on a cursor readout. (Very high or low frequencies run the risk of being unduly affected by the frequency response of the board.) You can use the built-in synthesizer to generate the sine wave, and measure its output with an external voltmeter that is accurate enough to serve as the calibration reference.
Adjust the sine frequency or the sample rate to get minimum spectral leakage "skirts". If you are simultaneously reading the sine amplitude with an external AC voltmeter, use the Daqarta RMS magnitude mode for direct comparison without calculations. Most meters are calibrated to read in RMS Volts with a sine wave input, even if they do not use true RMS for correct results with complex waveforms.
(This method only works with sine waves. If you must use a different waveform, you will need to measure peak-to-peak or zero-to-peak values while viewing the waveform directly. You can use the ZeroP option to read zero-to-peak from a single cursor readout without subtraction. Of course, you will also need a way to know the peak value by independent means. Remember that there may be waveform changes due to the frequency response of the board.)
Now divide the true (voltmeter) value by the cursor readout to find the factor that must be multiplied by the full-scale Gain value to make the cursor readout match the meter. It doesn't matter what Range you used for the measurements, since the same factor will be automatically applied to all ranges.
But the G: parameter must be specified for Range 8, so multiply by 1.712 Volts for Line or CD inputs, or by 21.25 mV for Mic input, and use that value as the G: parameter for the given input.
As you change Range settings, the internal Range gain and the external Gain factor are combined appropriately to insure that the Daqarta Y-axis always shows the proper values.
Input or Range is to use a low-distortion sine wave as the input signal. The built-in OPL3 synthesizer is not really "low distortion", and its software Level control resolution is only 1 dB, but this is probably adequate for most purposes.
Adjust the signal frequency to about 500 Hz and set the level for a mid-range waveform that is not obviously distorted. Observe the power spectrum and fine-tune the signal frequency for a single line spectrum without "skirts". Start with a sample rate of around 20 kHz, but if your signal source doesn't allow fine adjustment you can tweak the sample rate to get the single line spectrum.
Now slowly raise the signal level until you see a forest of lines arise from the spectrum noise floor. This is the onset of distortion. To increase your ability to determine the exact threshold as you raise and lower the level slightly, use a small amount of signal averaging, say 16 or 32 sweeps, in the Exponential mode. This will reduce the noise floor jitter and make the onset of distortion stand out more clearly, although you must adjust levels slowly to allow time for the exponential decay of the averaging.
After you find the distortion threshold in this manner, it is quite revealing to see how much higher you must raise the input level before you can detect any distortion when viewing only the waveform display.
aliasing if you must use a sample rate that is less than twice the highest frequency present in your signal. (It has a much sharper cutoff than a simple R-C low-pass filter.) Of course, you can also use the filter simply to reduce high-frequency noise or other interfering components in your signals even if aliasing is not a problem.
The input filter is set to 'Auto' by default, which gives a high-frequency cutoff (-3 dB) of about 87 percent of the full-scale X-axis (Nyquist) frequency. You can set any value from 341 to 43658 Hz here... the actual displayed value will reflect the resolution of the ES1868, which is better at low frequencies than high.
However, the accuracy of the setting is not as good as implied by the single-Hz display resolution, since the filtering is performed by an analog switched-capacitor filter, not a digital DSP algorithm. Measured cutoff accuracy is typically within a few percent of the displayed value.
To return to Auto mode, enter a value of 0.
See Measuring Input Frequency Response for a simple way to create a plot of the filter response for any given setting.
input filter requires a definite settling time for transients to die down after a signal is applied. Since Sequential mode in effect shuts off the signal between sweeps and reapplies it at the start of each new sweep, the beginning of the trace could show transient effects of the filter which are not representative of the actual input signal.
Note that transients take longer to die down at lower cutoff frequency settings. You can easily see this effect by viewing a continuous sine wave (such as from the OPL3 synthesizer) as you change the filter cutoff. At low cutoffs (though still above the signal frequency), you may see some pronounced amplitude variations near the start of the trace. These will vanish completely in RTime mode.
The simplest way to avoid settling time problems is to run in RTime mode, since the signal is continuously applied to the chip. (Transients in the signal itself may still have an effect, however.) But RTime mode does not support the Burst or Gap options of the OPL3 synthesizer, nor does it allow External Trigger or Trigger Pulse output options.
To use Sequential mode in these cases, simply set the Trigger Cycle to a duration long enough for the filter to settle. Daqarta will start acquiring data at the beginning of each sweep, but will ignore all data prior to the end of the Cycle delay.
Adjustment of the Cycle value is easily accomplished while viewing a continuous sine wave signal, which may come from the OPL3 synthesizer: Start with a Cycle setting that is several milliseconds longer than the X-axis itself, so that the Speed readout shows SPEC instead of SLOW. At this point the Cycle is just long enough to include the data acquisition and processing time for each sweep, without much delay needed at the start of the next sweep to reach the specified total Cycle. Now increase the Cycle time until the trace no longer shows any undesireable transients.
high-pass filter with -3 dB cutoffs of about 18 Hz. Below is the measured response, relative to the response at 500 Hz. Measured values are arranged in sequence, NOT TO SCALE:
dB Frequency 0 500 -0.1 110 -0.5 50 -1 35 -2 23 -3 18 -4 15 -6 11These measurements were made with the low-pass Input Filter cutoff set to maximum. That filter allows control over the high frequency response, not shown here.
These values were obtained by calculations from peak-to-peak waveform measurements of a laboratory reference oscillator with a known flat output response in this range. Although tedious, this allows somewhat better frequency resolution than direct spectral methods. But the direct methods are probably suitable for checking the performance of your particular board, and are fine for measuring high frequency response:
RTime mode to avoid possible settling-time problems. You will need a separate "known flat" sine wave oscillator, since the OPL3 synthesizer has its own response fall-off at low and high frequencies. Use the Y-log (Power Spectrum) mode to read dB directly. Set the Spectrum Averager to Peak mode, and set Sweeps to Continuous (1 or less).
For best frequency resolution, you may want to measure the low-frequency response separately. Use the lowest sample rate the board allows (3906 Hz) tfor low frequencies. Start with the input frequency at about 500 Hz. Now slowly adjust it down to zero and a low-frequency response curve will appear. If you move the frequency too quickly, you will get dips in the response curve. Just go back and fill them in by moving more slowly... the ability to do this is one of the advantages of Peak mode.
To plot the high frequency response, simply repeat the above frequency adjustment for the higher input frequencies. Be sure to set a higher sample rate after the above tests... select a rate typical of your anticipated use. The response will be dependent upon the input filter setting, which is controlled by sample rate when set to Auto.
Direct-to-Disk (DDisk) files is a real problem, the default 16-bit mode is a better choice for most work.
Use the B:8 parameter to start in 8-bit mode automatically.
Questions? Comments? Contact us!We respond to ALL inquiries, typically within 24 hrs.
25 Years of Innovative Instrumentation
© Copyright 1999 - 2006 by Interstellar Research