Общее описание Interface-карты Вы можете найти в разделе HARDWARE.
Под DOS область E/A Вашего компьютера непосредственно не реагирует. Каждый язык программирования имеет для этого определённую комманду; при этом специальный драйвер абсолютно не обязателен. Тем не менее написание драйвера для работы с картой может иметь определённое значение. Следующие примеры продемонстрируют это.
BASIC |
Следующий пример действует для карты 1512B-LC. Для других карт необходимо будет внести изменения. |
| Опознание карты | DECLARE SUB dmxinit ()
Ищет карту в компьютере и и присваивает адрес. Если карта не будет найдена, то программа заканчивает свою работу. В противном случае загружается операционная система карты, выставляются начальные значения и обнуляется память карты. cardadr = 0
FOR i = 0 TO 3
OUT &H100 + &H20 * i, 0
OUT &H101 + &H20 * i, 0
OUT &H102 + &H20 * i, &HAA
NEXT i
FOR i = 0 TO 3
OUT &H100 + &H20 * i, 0
OUT &H101 + &H20 * i, 0
porttest = INP(&H102 + &H20 * i)
IF porttest = &HAA THEN cardadr = (&H100 + &H20 * i)
NEXT i
IF cardadr = 0 THEN PRINT " Карта не найдена!": END
PRINT "---------------------------"
PRINT "Адрес карты: "; cardadr
PRINT "---------------------------"
' *******************************************
' переносит программу-операционную систему для
' карты, которую прочитывает из имени файла
' SLHDMX12.BIN.
' *******************************************
OPEN "SLHDMX12.BIN" FOR INPUT AS #1
i = 0
WHILE NOT EOF(1) ' читает/переносит
x$ = INPUT$(1, #1) ' операционная система
OUT cardadr, i AND 255 ' адрес lowbyte
OUT cardadr + 1, INT(i / 256) ' адрес highbyte
OUT cardadr + 2, ASC(x$)
i = i + 1
WEND
PRINT "--------------------------------------------"
PRINT "Операционная система "; i; " Байты загрузить "
PRINT "--------------------------------------------"
FOR i = 0 TO 8 ' переносит параметры
OUT cardadr, (i + &H7F0) AND 255 ' адрес lowbyte
OUT cardadr + 1, INT((i + &H7F0) / 256) ' адрес highbyte
OUT cardadr + 2, dmxdef(i) 'величина файла
NEXT i
FOR i = &H0 TO &HFF ' Устанавливает все каналы = 0
OUT cardadr, (i + &H400) AND 255 ' адрес lowbyte
OUT cardadr + 1, INT((i + &H400) / 256) ' адрес highbyte
OUT cardadr + 2, 0 'величини файла
OUT cardadr, (i + &H500) AND 255 ' адрес lowbyte
OUT cardadr + 1, INT((i + &H500) / 256) ' адрес highbyte
OUT cardadr + 2, 0 ' величина файла
NEXT i
END SUB
|
| Карту стартовать | DECLARE SUB dmxstart ()
Этот пример действует только для карты 1512B-LC. Для других карты необходимо произвести некоторые изменения. dummy = INP(cardadr + 3) END SUB |
| Карту остановить | DECLARE SUB dmxstop ()
Этот пример действует только для карты 1512B-LC. Для других карты необходимо произвести некоторые изменения. OUT cardadr, 0 END SUB |
| В карту записать | DECLARE SUB dmxtrans (kanal, value)
Этот пример действует только для карты 1512B-LC. Для других карты необходимо произвести некоторые изменения. IF kanal < 1 OR kanal > 512 THEN EXIT SUB ' Ошибка! IF value > 255 THEN EXIT SUB ' Ошибка! OUT cardadr, (&H400 + kanal - 1) AND 255 ' адрес lowbyte OUT cardadr + 1, INT((&H400 + kanal - 1) / 256) ' адрес highbyte OUT cardadr + 2, value ' Величинифайла END SUB |