Инструменты пользователя

Инструменты сайта


msx:rs-232c_basic

MSX RS-232C BASIC

FIXME

Используется в решении Yamaha Локальная сеть, версия 1.

Команды:

  • run"COM:"
  • save"COM:"
  • load"COM:"
  • merge"COM:"
  • CALL COMBREAK
  • CALL COMHELP
  • CALL COMINI
  • CALL COMOFF
  • CALL COMON
  • CALL COMSTAT
  • CALL COMSTOP
  • CALL COMTERM

RS-232C.DOC

RS-232C.DOC

Расширение MSX-Basic для работы с RS-232C

1) CALL COMINI

CALL COMINI ("
<device# {0,1,2...9}>:
<character length {5,6,7,8}>
<parity {E,O,I,N}>
<stop bits {1,2,3}>
<XON/XOFF {X,N}>
<CTS hand-shake {H,N}>
<auto LF on receive {A,N}>
<auto LF on transmit {A,N}>
<SI/SO {S,N}>"
,<receiver baud rate>
,<transmitter baud rate>
,<time out count>
)
Default:
CALL COMINI("0:8N1NNNNN",2400,2400,0)


2) OPEN "COM[n]:" [ FOR <mode>] AS [#] <file number>

     Эта команда открывает канал RS-232C для дальнейшей работы.
При этом отводится место под буфер.
     В данной версии BASIC'а n может принимать только значение 0.
     Открывается файл для связи с машиной 0.
     <mode> может принимать одно из следующих значений:

        OUTPUT: установка режима вывода
        INPUT : установка режима  ввода

Если тип <mode> не указан, то канал будет открыт для ввода и вывода одновременно. Однако, в этом случае не может быть  использован признак конца файла (EOF) в обычном значении.

Примеры:
     1) OPEN "COM0:" AS #1;
     2) OPEN "COM:" FOR INPUT AS 2.

3) Операторы ввода и вывода.

После того, как канал будет открыт для  режима  ввода  или файлового режима (без указания <mode>) символы из канала  связи могут быть считаны с помощью следующих команд:

        INPUT #n
        LINE INPUT #n
        INPUT$(#n,m)

В случае открытия канала для вывода файлового режима  (без указания <mode>) символы могут быть выведены в  канал  связи  с помощью следующих команд:
PRINT #n
PRINT #n USING

4) Команды загрузки-выгрузки программ.

        SAVE"COM[<n>]:"[,A]
        LOAD"COM[<n>]:"
        MERGE"COM[<n>]:"
        RUN"COM[<n>]:"[,R]

5) Команды прерываний по условию.

        CALL COMON("[<n>:]")

Данная команда разрешает прерывания по приходу символа через канал связи.

        CALL COMOFF("[<n>:]")

Данная команда запрещает прерывания по приходу символа через канал связи. При этом чистится буфер связи.

        CALL COMSTOP("[<n>:]")

Данная команда приостанавливает прерывания по приходу символа через канал связи.

CALL COM("[<n>:]",GOSUB <line number>)

Данная команда устанавливает номер строки, на которую следует перейти после поступления символа из сети.

6) Команды контроля.

 CALL COMBREAK("[<n>:"],<expression>)

     (??????????)  expression 3...32767

        CALL COMDTR("[<n>:"],<expression>)

     (Для Ямахи  не определена.)

        CALL COMSTAT("[<n>:"],<name of variable>)

Читает статус канала связи. Статус, переданный аппаратными средствами, идентифицируется с указанной переменной.

Расшифровка битов статуса:

▐  Номер бита      ▐                  Значение                                ▐
▐      15          ▐    Ошибка переполнения буфера                            ▐
▐                  ▐       0:  Нет переполнения ;   1:  Буфер переполнен      ▐
▐      14          ▐    Ошибка времени ожидания ( TMENBT )                    ▐
▐                  ▐       0:  Нет ошибки времени ; 1:  Время кончилось       ▐
▐      13          ▐    Framing Error                                         ▐
▐                  ▐       0: No framing error occured                        ▐
▐                  ▐       1: Framing error occured                           ▐
▐      12          ▐    Over Run Error                                        ▐
▐                  ▐       0: No over run error occured                       ▐
▐                  ▐       1: Over run error occured                          ▐
.⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃█⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▀
▐      11          ▐    Parity Error                                          ▐
▐                  ▐       0: Character has no parity error                   ▐
▐                  ▐       1: Character has parity error                      ▐
.⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃█⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▀
▐      10          ▐    Прерывание с клавиатуры                               ▐
▐                  ▐      0: Не было                                          ▐
▐                  ▐      1: Были нажаты клавиши прерывания ( BRONBT )        ▐

▐      9,8         ▐    Не используется                                       ▐

▐       7          ▐    Clear To Send          (Для Ямахи незначащий)         ▐
▐                  ▐      0: False        ;  1: True                          ▐
▐       6          ▐    Timer/Counter Output⁃2                                ▐
▐                  ▐      0: Timer/Counter Output⁃2 negated                   ▐
▐                  ▐      1: Timer/Counter Output⁃2 asserted                  ▐

▐      5,4         ▐    Не используется                                       ▐

▐       3          ▐    Data Set Ready         (Для Ямахи незначащий)         ▐
▐                  ▐      0: False        ;  1: True                          ▐

▐       2          ▐    Break Detect           (Для Ямахи незначащий)         ▐
▐                  ▐      0: Not detected ;  1: Detected                      ▐
▐       1          ▐    Ring Indicator         (Для Ямахи незначащий)         ▐
▐                  ▐      0: False        ;  1: True                          ▐

▐       0          ▐    Carrier Detect         (Для Ямахи незначащий)         ▐
▐                  ▐      0: False        ;  1: True                          ▐
7) Функции
        EOF(<file number>)
     Возвращает ⁃1 (true) если EOF (признак  конца  файла)  был
передан. Иначе возвращает 0.

        LOC(<file number>)
     Возвращает количество символов в буфере сети. (Размер  бу.
фера ⁃ 255 байт)

        LOF(<file number>)
  Возвращает размер свободного места в буфере сети
⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃

       Распределение контактов сетевого разьема.

                  ▞▞▊▊▊▊▊▊▊▊▊▊▊▞▞
               ▞▊▊  ▞▞▊▊█ █▊▊▞▞  ▊▊▞
              █  ▞▊▊    ▊▊▊    ▊▊▞  █
             █  █                 █  █
            █  █                   █  █
           ▐▌ ▐▌  3             1  ▐▌ ▐▌
            █  █                   █  █
             █  █   5         4   █  █
              █  ▊▞▞     2     ▞▞▊  █
               ▊▞▞  ▊▊▞▞▞▞▞▞▞▊▊  ▞▞▊
                  ▊▊▞▞▞▞▞▞▞▞▞▞▞▊▊

▐  контакт  ▐                       Сигнал                    ▐
▐     1     ▐   Напряжение по каналу A (CH.A)                 ▐
▐     2     ▐   Земля                                         ▐
▐     3     ▐   Напряжение по каналу B (CH.B)                 ▐
▐     4     ▐   Данные CH.A                                   ▐
▐     5     ▐   Данные CH.B                                   ▐

БИС, применяемые в адаптере
        8251 - БИС последовательного интерфейса
        8253 - БИС таймера-счетчика

Порты ввода-вывода

▐ Номер ▐ статус ▐                       Функции                            ▐
▐ порта ▐        ▐                                                          ▐

▐  00   ▐  ч/з   ▐                    порт данных 8251                      ▐
▐  01   ▐  ч/з   ▐                    порт команд/состояния 8251            ▐
▐  02   ▐   ч    ▐                    порт состояния для таймера и счетчика ▐
▐       ▐        ▐                           2 в 8253                       ▐
▐  02   ▐   з    ▐                    регистр маски прерываний              ▐
▐  04   ▐  ч/з   ▐  счетчик CH0 в 8253 - установка скорости обмена (Rx)     ▐
▐  05   ▐  ч/з   ▐  счетчик CH1 в 8253 - установка скорости обмена (Tx)     ▐
▐  06   ▐  ч/з   ▐  счетчик CH2 в 8253 - задействован в прогр. обеспечении  ▐
▐       ▐        ▐  (Проверка показала, что он не считает. Как задейств. -  ▐
▐       ▐        ▐   не понятно. Быть м. только во время обмена с сетью. )  ▐
▐  07   ▐   з    ▐                      регистр режимов 8253                ▐


▊⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▌⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃#
▐бит данных ▐ Описание битов порта 02: чтение - проверка состояния системы  ▐
.⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃█⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▀
▐     7     ▐          всегда должен быть равен 0                           ▐
.⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃█⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▀
▐     6     ▐          сигнал от таймера/счетчика 2 в 8253                  ▐
.⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃█⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▀
▐    5-0    ▐  Значения битов соответствуют установке микропереключателя    ▐
▐           ▐  DIP-SWITCH, имеющегося в корпусе адаптера. (ON=0,OFF=1)      ▐
▄⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▇⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▊

▊⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▌⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃#
▐бит данных ▐ Описание битов порта 02: запись - регистр маски прерываний    ▐
.⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃█⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▀
▐    7-1    ▐          Зарезервированы                                      ▐
.⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃█⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▀
▐     0     ▐          Сигнал RxReady (Готов к приему даннных)              ▐
▐           ▐   1 - прерывание замаскировано (исходное состояние)           ▐
▐           ▐   0 - прерывание разрешено                                    ▐
▄⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▇⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃▊

Частота задающего генератора CERALOC - 1,843 MHz
▐    Скорость передачи данных    ▐     Коэффициент деления    ▐
▐                50              ▐             2304           ▐
▐                75              ▐             1536           ▐
▐               110              ▐             1047           ▐
▐               150              ▐              768           ▐
▐               300              ▐              384           ▐
▐               600              ▐              192           ▐
▐              1200              ▐               96           ▐
▐              1800              ▐               64           ▐
▐              2000              ▐               58           ▐
▐              2400              ▐               48           ▐
▐              3600              ▐               32           ▐
▐              4800              ▐               24           ▐


RS-232C может быть  использована  прикладными  программами находящимися на других слотах (расширенный Basic). Эти программы могут обращаться к RS-232C через таблицу ссылок с ипользованием межслотового вызова (BIOS).

4010:   DB    1000 0000, 00, 00   ; Device information
              ▐▐▐▐ ▐▐▐▄⁃⁃  Reserved
              ▐▐▐▐ ▐▐▄⁃⁃⁃  no TxReady interrupt
              ▐▐▐▐ ▐▄⁃⁃⁃⁃  no Sync/Break charakter
              ▐▐▐▐ ▄⁃⁃⁃⁃⁃  no Timer interrup
              ▐▐▐▄⁃⁃⁃⁃⁃⁃⁃  no Carrier detect
              ▐▐▄⁃⁃⁃⁃⁃⁃⁃⁃  no Ring indicator
              ▐▄⁃⁃⁃⁃⁃⁃⁃⁃⁃  Reserved
              ▄⁃⁃⁃⁃⁃⁃⁃⁃⁃⁃  Reserved

4013:   JP    4040      ;  INIT
4016:   JP    426A      ;  OPEN
4019:   JP    5153      ;  STAT
401C:   JP    42CF      ;  GETCHR
401F:   JP    4FD2      ;  SNDCHR
4022:   JP    429A      ;  CLOSE
4025:   JP    406A      ;  EOF
4028:   JP    4321      ;  LOC
402B:   JP    434C      ;  LOF
402E:   JP    4389      ;  BACKUP
4031:   JP    50D6      ;  SNDBRK
4034:   JP    513B      ;  DTR
4037:   RET, RET, RET   ;  NOENT
403A:   RET, RET, RET   ;  NOENT
403D:   RET, RET, RET   ;  NOENT

RS-232C драйвер адресуется как устройство 8.

Документация на подобное устройство

Ссылки

msx/rs-232c_basic.txt · Последние изменения: 2023-06-05 21:05 — GreyWolf