TimeDX Help.

PIO Test.

    The PIO Test is divided into two modes, one for the add in PIO card (the DMDX "pio12" input device) and the other for using the joystick port (the DMDX "rawjoystick" device) below. Selecting "Joystick at 201" (only available on win9x OSes) for the address of the PIO makes this test monitor the Joystick, otherwise it monitors the PIO-12 .

    If you aren't using Windows NT, 2000 or XP (or later OSes) the address of the PIO can either be entered as a hexadecimal value for ISA based cards, or selected from the registry in the case of the PCI PIO cards. If you are using NT, 2k or XP you can install the InstaCal drivers that come with a Computer Boards interface cards or the wretched DriverLINX stuff that comes with the Keithley cards (there's also some auxiliary stuff that's useful for PCMCIA Keithley cards), then the InstaCal card number or the DriverLINX device number can be used allowing windows versions based on NT (NT itself, windows 2000 and XP so far) to use a PIO.
    When listing PCI cards TimeDX under win9x OSes can't tell exactly what in the registry is an 8255 (the mere fact that it reads the registry to determine the base address of the 8255 is an extreme hack, utterly undocumented by anyone), it simply hunts for resources that describe groups of 4 I/O ports and lists them as possible candidates along with the device's description.
    When using NT based operating systems only Computer Boards InstaCal cards or Keithley DriverLINX boards will be listed because using direct port I/O under NT will result in immediate protection faults. Additionally the Keithley DriverLINX stuff will have to configure the various ports on the PIO for input and output as you desire because DriverLINX doesn't let applications configure the card. Another failing of the Keitley DriverLINX stuff (it can't handle multiple threads and DMDX is massively multithreaded) would appear to mandate the use of the queued PIO devices in DMDX, the plain PIO12 device will cause DMDX to fail with the second item file run so
<id QPIO12> must be used instead.
    The benchmark button times how long the input and output functions take to execute when the test is running.  Overhead is a measure of how much time is related to TimeDX executing the test itself, figures in brackets are the times minus the overhead.


    This is to verify that a MetraByte PIO-12 or ComputerBoards PIO24 has been installed correctly and is indeed functioning. The default address that Dmastr has used in the past for an ISA PIO-12 is port 310 Hex as opposed to 300H that the card ships set to. The correct switch settings for this ISA interface card at 310H read from switch 1 to 8 are OFF, OFF, ON, ON, ON, OFF, ON, ON. Clicking Start causes TimeDX to read the contents of the address edit box and setup an 8255 (the chip that is the PIO) at that address -- if you specify an incorrect address at best you will be unable to see the card, at worst you will have sent commands to some system device and the results can be catastrophic. Clicking Save writes the port address to the registry for DMDX to use.

    Assuming you have some test hardware and can monitor the output of PORT C clicking on the output controls changes the state of that output bit, checked being LOW (which would light a led with the test jig provided below).

    The Inputs are monitored every 20 ms (in this test, for DMDX it is every millisecond), for Dmastr's usage LOW (switched to ground as opposed to pulled up to +5V) is the closed switch state.

    Unused inputs should be pulled up unless they are specifically disabled with the DMDX MIP word. The default value for MIP is 7 enabling pa0, pa1 and pa2, if you aren't using all of those three then the unused ones should ether be pulled up or another MIP value explicitly set in the item file.
USB PIO12 devices.

    Given the prevalence of laptops these days using a USB version of a PIO12 is becoming a more common thing.  There are a few extraneous considerations here.  Firstly the USB 1.0 and USB 1.1 devices are slow to communicate with, it typically taking 2 milliseconds to poll their inputs so making sure you have a USB 2.0 device and a USB 2.0 port to plug it in to is well worth it if you want the best timing available (USB 3 when it comes out being better still).  Second, using a Windows USB rate tweaker isn't going to do anything for these devices, they will only yield improved timing on gamepads and other standard input devices.

PIO12 connector.


pin 37 - pa0:REQUEST
pin 36 - pa1:NEG_RESP
pin 35 - pa2:POS_RESP
pin 34 - pa3:TAPE_PULSE
pin 33 - pa4:VOX
pin 32 - pa5:aux input Bit5
pin 31 - pa6:aux input Bit6
pin 30 - pa7:aux input Bit7
pin 10 - pb0:aux input Bit8
pin 11 - pb1:aux input Bit9
pin 12 - pb2:aux input Bit10
pin 13 - pb3:aux input Bit11
pin 14 - pb4:aux input Bit12
pin 15 - pb5:aux input Bit13
pin 16 - pb6:aux input Bit14
pin 17 - pb7:aux input Bit15
pin 29 - pc0:output 0
pin 28 - pc1:output 1
pin 27 - pc2:output 2
pin 26 - pc3:output 3
pin 25 - pc4:output 4
pin 24 - pc5:output 5
pin 23 - pc6:output 6
pin 22 - pc7:output 7

Standard switch wiring in our labs:

Optional test jig for outputs.

    This jig will light the LED when the output is LOW (0V, logic 0), the usual active state when interfacing to other pieces of equipment.

Additional ground pins 17, 15, 13, 11, 21. Additional +5v supply pin 20.

+12v pin 16. -12v pin 14. -5v pin 12.


    The default IBM analog joystick interface lives at port 201H, if you do not have some USB or other advanced type of joystick then you can use this test mode to determine if your joystick buttons have been hooked up correctly, otherwise you will have to use the Input test. There are no output pins in the Joystick mode and only four input lines.

    When wiring up buttons the input lines do not need to be pulled up as they do for the PIO-12, the joystick interface does this internally.

Joystick connector.


Unused inputs can be left NC.

pin 1XY1 (+5v)(ignore)
pin 2Switch 1REQUEST
pin 3X1(ignore)
pin 4Ground
pin 5Ground
pin 6Y1(ignore)
pin 7Switch 2NEG_RESP
pin 8N.C.(ignore)
pin 9XY2 (+5v)(ignore)
pin 10Switch 3POS_RESP
pin 11X2(ignore)
pin 12MIDI TXD(ignore)
pin 13Y2(ignore)
pin 14Switch 4VOX
pin 15MIDI RXD(ignore)

Switch wiring:

TimeDX Index.