german:     DMX Interface Card Hardware: this is a complete step-by-step description how to access the hardware, and how to set the working parameters required for DMX512/1990. Find memory maps, hardware addresses and other hardware-related stuff.   
512ch DMX Send Card
512ch DMX Send Card
512ch opto-isolated card
10124ch DMX Read/Write Card
DMX PrinterPort Interface
PMX/DMX Serial Port Converter Interface
DMX USB Port Interface
PCMCIA DMX  Interface Card

Hardware Description
   Get this page in PDF format

ISA DMX-512 PC-Interface Card 1512B     [Software skeletons for this card]


SOUNDLIGHT offers a range of PC interface cards, not only readily available but affordable and easy to program. Besides we offer ready-to use software packages for free.

Programming of our interface cards is really simple. Here are the few steps to get things running.

  • very fast card, Clock = 16 MHz
  • opto-isolated output driver (potential-free output)
  • may read DMX data (for monitoring only)
  • low-cost

  • Memory Allocation of Interface Card 1512B:
    $0000-$03EF   DMX operating system, max. 1000 Bytes
    $03F0-$03FE   Operating System Parameters dmxdef()
    $0400-$05FF   Send Data for Channels 1-512
    $0800-$09FF   Receive Date for Channels 1-512

To initialize the card:

  1. Determine the card address.
    To do so, use a routine as outlined below. In all examples we will assume a card address of $0100:

    1. Write $FF to card address $0100
    2. Write $03 to card address $0101 (0100 +1)
      This sets the internal card RAM address to $03FF.
    3. Write $AA to card address $0102 (0100 +2)
    4. Read card address $0102 (0100+2)
    5. If the return value is $AA, the card is found.
    6. If not, repeat steps (1) thru (5) for addresses $0120, $0140, $0160

  2. Transfer the DMX Operating System into the card,
    to make the card operational. Assume you are going to find a 1512B card in your (unknown) computer.

    1. Read card address $0100 to reset the card, then
    2. open the file SLHDMX16.BIN.
      NOTE: Close this file before opening it. This ensures to never get a "file open" error. Depending on the programming language used, you must open the file as BINARY or RANDOM because all NULL bytes must be transferred exactly as read.

      Then the file will be transferred into the card RAM. The card address must be known to do so.

    3. Set RAM-Adress = $0000
    4. Write the RAM-Address LowByte to Card-Address +0
    5. Write the RAM-Address HighByte to Card-Address +1
    6. Read the next byte from file and write it to Card-Address +2
    7. Repeat (3) thru (5) until EOF

      We have now transferred the DMX operating system and are ready to start the card. This will enable the card processor to check the card status and return a card identification byte.

    8. Read Card Address +3 to start the card and wait at least 50us to read the result.
    9. Write $F9 to Card Address +0
    10. Write $03 to Card Address +1 This selects the return byte RAM address $03F9 within the card RAM.
    11. Read Card Address +2
      Return value $04: Card 1512C present
      Return value $05: Card 1512C present
      Return value $80: Card 1512A or 1512B/LC (12 MHz Card) present
      Return value $01: Card 1512B (16 MHz Card) present

      If a 1512B Card is identified the initialization is okay. f another card is being identified the complete initailization procedure has to be repeated, using the proper DMX operating system. Please use the following files:
      SLHDMX12.BIN for card 1512A or 1512B/LC
      SLHDMX16.BIN for card 1512B
      SLHDMX17.BIN for card 1512C
      After file transferral the retuirn value must be checked again. If the return value matches none of the values listed above, either the card or the DMX OS transfer process has shown defective. Return codes $06 to $1F are reserved for future SLH products.

  3. Transfer the Default Parameters into the card.
    The DMX operating system files allow individual setting of channel count, card timing an other parameters. If no or invalid parameters are set the card may automatically set valid parameters instead.

    ParameterDefault or
    typical Value
    $03F0Startsync Duration
    Minimum Value: 88us
    Value: n = Startsync * 2 / 3
    dmxdef(0) = 60
    for DMX Transmissions
    dmxdef(1) = 0
    $03F2End Idle Time (us)
    n = (Idle Time - 30us) / 2
    The minimum idle time after transmission of a complete DMX telegram is 30 us
    dmxdef(2) = 0
    LowByte Channel Count
    HighByte Channel Count
    LO: 001 HI: 000 1 channel sent
    LO: 002 HI: 000 2 channels sent
    LO: 003 HI: 000 3 channels sent
    LO: 000 HI: 000 256 channels sent
    LO: 001 HI: 001 257 channels sent
    LO: 002 HI: 001 258 channels sent
    LO: 255 HI: 001 511 channels sent
    LO: 000 HI: 001 512 channels sent

    LO = Channel Count AND 255
    HI = INT ((Channel Count -1)/256)

    dmxdef(3) = 0
    dmxdef(4) = 1
    $03F5Send Repeat
    $00: Send Once, then Stop (Recommended)
    $80: (<>0): Send continuously
    dmxdef(5) = 0
    $03F6Inter-Digit Time
    n = IDT * 16 / 24
    optimum Value: 0
    dmxdef(6) = 0
    $03F7not useddmxdef(7) = 0
    $03F8Card Mode
    $00 = Write Mode
    $FF = Read Mode
    dmxdef(8) = 0
    $03F8not useddmxdef(8) = 0
    $03F9Card Type Return Value
    see below
    dmxdef(9) = 0

    Now transfer the Default Parameter Values to the Card Data RAM:

    1. Set n=0
    2. Write $F0 + n to card address +0
    3. Write $03 to card address +1
    4. Write dmxdef(n) to card address +2
    5. n= n+1
    6. Repeat (2) thru (5) while n<10

    Now the card is ready for use. Eventually you may want to erase the DMX data RAM. To do so, simply write $00 to all remaining card RAM locations.

  4. Start the Card
    After initialization and setting of the operating system parameters the card may start its first transmission. To start the card, use the command:

    1. Read Card Address +3

    According to the card mode set above one or more DMX telegrams will be sent.

  5. Transfer DMX data to the card

    To transfer data to the card or read back data from the card) we highly recommend to use a timer. This will ensure the best data integrity, since access to the card during transmission may corrupt send data. Use a timer (timer repeat time >25 ms) to initiate the command sequence outlined below.
    Please note:

    • Each write access to the card will stop the card CPU, which must then be restarted.
    • After all memory updates heve been processed start the card to initiate e new DMX transmission.
    • The card wil then complete the current DMX telegram an await the next data update.

    1. Write LowByte of DMX Channel to CardAddress +0
    2. Write HighByte of DMX Channel to CardAddress +1
    3. Write Value of DMX Channel to CardAddress +2
    4. Repeat (1) thru (3) for all channels that have to be updated
    5. Start the card by reading from CardAddress +3


Base Address +0Write Lo-Byte RAM-Address
Base Address +1Write Hi-Byte RAM-Address
Base Address +2Read DataWrite Data
Base Address +3Start DMX Transfer  

S/W Access Table Base Address = $100, $120, $140 or $160
Any Write Access stops the DMX-Transfer




All driver files are packed. Please use LHA.EXE to decompress files.

[BINfile]  Download Card Operating System SLHDMX12.BIN
       For cards 1512A and 1512B-LC, latest version.

[BINfile]  Download Card Operating System SLHDMX16.BIN
       For cards 1512B, latest version.

[BINfile]  Download Card Operating System SLHDMX17.BIN
       For cards 1512C, latest version.

[BINfile]  Download Dynamic Link Library SLHDMX2.DLL
       For 16-Bit Applications, latest DLL version.

[BINfile]  Download Dynamic Link Library SLHDMX32.DLL
       For 32-Bit Applications, first DLL version.

[BINfile]  Download Dynamic Link Library SLHDMX33.DLL
       For 32-Bit Applications, latest DLL version.

[Textfile]  Download Drivers Collection 1512B

[Textfile]  Operating manual 1512B

[Textfile]  Why opto-isolated? A technical Note

Application examples for SLH DMX512 PC Interface Cards

currently on TV
at RTL:

Millionär Gesucht
Numerous industrial applications have been set up using SLH PC DMX512 interfaces. And eventually you may have been watching some TV shows without knowing the effects have been powered by our interfaces. Current production on german TV is the RTL show "Millionär gesucht" (there is a similar show on british ITV called "Who wants to be a millionaire?"

DMX-Tester Measuring and Testing Equipment for Lab and Road Use
Interfaces DMX/Analog Decoder, Relay- and Dimmer-cards