DMDX Help.


DMDX History.


    This is the history of DMDX's development.  It was written by Jonathan C. Forster at the University of Arizona and continues to be maintained by him however it is the most recent incarnation of DMASTR, originally developed on a PDP-11 (hence the 6 character name, D as in display, master) in macro assembler by Kenneth Forster and Rod Dickinson in 1975 at Monash University, Victoria, Australia.  After that DM, the DOS C version was written by Kenneth Forster and Mike Durham in 1983 with additional assistance from Kevin Ackley.  And then the Turbo Graphic and Enhanced Experimenter's Display version called DMTG was written by Jonathan C. Forster in 1988 at the University of Arizona using TurboC.  After those three earlier versions the Windows version DMDX was created targeting Win32 and DirectX in 1997 using the Borland C compiler with the Direct3D renderer in 2014 and DirectShow VMR9 support in 2016 by Jonathan C. Forster using various flavors of MSVC.

    Version numbers (current version number is here) and dates below indicate major milestones in DMDX's development.  Largely from version 3 onwards there were hundreds of other releases, some more minor than others and I'm sure I'm overlooking some major things (like the introduction of <inst> in version 4.0.1.0 which was a revelation for certain people) but so be it.

    Version 0 begun on 10/17/97 from initial TimeDX work using the Borland compiler after I noticed the announcements that DirectX was going to allow direct access to the hardware under Windows and I'm like That's the future of DMASTR.

    Version 1 on 05/04/99 worked on 486 class machines, the first generally usable release.  Version 1.1 on 06/02/99 added DirectSoundCapture support for the DigitalVOX and RecordVocal input devices.  More work on the audio side of things followed in version 1.2 on 02/01/00.

    Version 2 on 07/07/00 dropped support for 486 class machines allowing much more accurate timing using the high performance counter present on Pentium grade CPUs and generally cleaned up a lot of stuff like multi-monitor support.   Version 2.1 on 09/07/00 switched to the DirectX 7 SDK (we had been using a combination of 2 and 3); version 2.2 on 10/13/00 added counters and the ability to branch on them; version 2.3 on 10/24/00 added support for JPEG images; version 2.4 on 01/27/01 added variable grouping to the scramble routines and shortly after that multi-scrambling was introduced.  Version 2.5 on 10/01/01 added the skip display item CR indicator to facilitate sophisticated branching paradigms; version 2.6 on 02/14/02 added CALC.C support to evaluate expressions in counter arithmetic blowing the door wide open on branching and version 2.7 on 02/14/02 added the ability to chain item files.  Version 2.8 on 04/15/02 added the InstaCal interface for Measurement Computing interface cards (direct I/O was getting a little challenging by then) and version 2.9 on 04/29/02 added the first few test modes.

    Version 3 on 07/31/02 switched to the MS Visual C compiler, cut support for Windows 95, radically restructured the Audio Input and introduced the DMDX installer and .CHM help files.  Version 3.1 on 10/11/04 added 2D input devices and version 3.2 on 09/13/06 added various options to those 2D devices like datalogging.  Version 3.3 on 03/06/09 added the first cut of the Unicode option to support someone with Tamil in their item file that was otherwise unusable.

    Version 4 on 05/13/09 added macro support to the Unicode option (a very deep and distressful thing to do) and addressed the long standing trouble DMDX had with other applications stealing it's focus.  In addition version 4 also introduced Auto Mode that allows DMDX to operate without the use of TimeDX (all but essential for remote testing); version 4.1 was largely internal research into using DevIL for image loading (that has been left inactive as it suffered from the same memory leak that our libjpeg solution suffers from) and a compiler update; version 4.2 on 02/05/13 expanded the support for millisecond (as opposed to tick) display durations and added macro push and pop string manipulation options.  Version 4.3 on 07/26/13 introduced variable length macro names making their use much more readable. 

    Version 5 on 01/10/14 added a Direct3D rendering path using DirectX 9 that is required for Windows 8 and later operating systems as DirectDraw (the original rendering API) is now emulated.  Version 5 also dispenses with operating systems earlier than Windows XP.  Version 5.1 on 06/17/14 added support for NVidia 3D shutter glasses and that would have been it for DMDX as my position was terminated shortly thereafter however retirement boredom set in and version 5.2 on 03/27/18 added support for AMD FreeSync and NVidia G-Sync displays (simply so I could stop thinking about the changes needed to do so) allowing DMDX to have a variable retrace rate and arbitrary display durations not tied to the raster interval.  Interestingly almost a decade later with modern OS interfaces no longer providing the necessary functions to track the raster this code may wind up being the only way future machines can sync DMDX's display to the raster (at least until 480 Hz monitors become commonly available regardless of whether they're adaptive sync monitors or not where the retrace rate almost effectively becomes millisecond timing and by the time 1 kHz devices are available it's literally millisecond timing) what to speak of machines that overheat when DMDX hammers the raster status.  After that version 5.3 on 10/30/18 significantly tightened up DMDX's parsing of keyword parameters and added an Introduction button that runs a built in item file introducing DMDX's features and exposes some test modes so one doesn't need an item file to quickly test if a machine is going to run DMDX at all well (it wasn't fully blocked out for about another 18 months and still receives periodic updates, it's text is included here). 

    Version 6 on 02/27/19 dispensed with support for Windows XP (and Vista I suspect but who ever used that?) with the addition of support for Windows Touch touch screen devices (the ones built into Windows tablets and so on).  Actually I suspect version 5.1.3.4 was the last version that XP could execute as there was a compiler update in there (actually a complete new development system on account of me "retiring") that I only post facto realized produced binaries that XP chokes on, oops.  Version 6.1 on 10/03/19 added support for eye trackers such as those made by Gazepoint and other devices controlled over a TCP/IP connection (not necessarily limited to eye trackers, for instance <id tcpip> will let DMDX send codes to EEG and other machines without the need for an interface card and cables and so on as long as the EEG machine has a network interface and you can figure out how to connect to it).  Version 6.2 on 06/11/21 added global support for non-Roman character sets in file names using UTF-8, be it in item file names or in resource file names and version 6.3 on 07/11/21 added support for named counters in addition to the classic numbered ones matching the variable length macro names from version 4.3.  As of version 6.4 on 02/28/24 DMDX now parses Unicode outside quotes to UTF-8 in item files (prior to that Unicode was only preserved inside quotes and even then it was a form of UTF-16, outside quotes it was simply eliminated) which means file names and other names that used to have to be quoted if they weren't using Roman characters no longer need to be quoted.  6.4's modifications also add support for Unicode in counter and macro names (including emoticons!) and should end the decade plus long odyssey of Unicode development in DMDX because if there's another place that could possibly be tripped up by Unicode characters I sure can't imagine where it is.  This involved tearing apart DMDX's recursive macro code (originally added in DMTG in the late 80's) and I realized having done that much I might as well take a crack at in place macros and after much thought (and extensive use of the modern debugger that runs rings around what I was using back when DMDX was created) now with version 6.5 on 04/11/24 when a back tick ` is used for a lead in to a macro instead of the legacy tilde you don't have to make sure your macros are defined before the item they're used in -- something that's pissed me off for decades but was never prepared to address because it was such a daunting thing to try and do, shows you how boring retirement can be...
 

There are some exceptions to this rule, notably if the characters you're using are in the code page the machine is using you could probably get away without quotes before version 6.4. OTOH if your file name has spaces in them quotes are likely to still be needed...

 



DMDX Index.