User Tag List

Страница 4 из 4 ПерваяПервая 1234
Показано с 31 по 39 из 39

Тема: Вектор-06Ц: Эмуляция - Виртуальные контроллеры

  1. #31

    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,299
    Спасибо Благодарностей отдано 
    1,028
    Спасибо Благодарностей получено 
    813
    Поблагодарили
    484 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в оффтопку

    Зачетная игра по переписке, изначально для Game Boy Advance: https://awbw.amarriner.com/
    [свернуть]
    Больше игр нет

  2. #31
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #32

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от KTSerg Посмотреть сообщение
    Вечером дома гляну
    Посмотрел в эмуляторе. Не похоже это на ВВ51. Моё предположение такое:
    8 двунаправленных сигналов данных, направлением рулит сервер (управляющий сигнал не показан на схеме)
    1 управляющий сигнал от сервера команда/данные (на твоей схеме обозначен "передача")
    1 сигнал запрос/подтверждение от сервера к клиентам (у тебя "байт на шине", запрос это или подтверждение зависит от направления передачи)
    1 сигнал запрос/подтверждение от клиентов к серверу (у тебя "байт прочитан")

    После того, как клиент обнаружил команду, предназначенную ему, он подтверждает её. И это единственный вывод в порт В в загрузчике. Формат команды NNNAAAAA, где N - номер команды (0 - начальная загрузка), а A - адресат.
    Номера других команд и формат их пакетов, естесственно, неизвестен.

  4. #33

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, согласен. Не похоже на ВВ51.
    Глянул код инициализации, не вижу классической инициализации (загрузки настроек и команд в регистры контроллера), в порт В выводится только то, что до этого считывается из порта А (с маской 1Fh). И сразу после этого Вектор ожидает начала сеанса.
    Вроде как прочитал из порта А свой адрес, выдал его в контроллер (порт В), и ждёт что контроллер будет готов к работе.
    После начальной билитристики, ВВ55 настраивает младшие биты порта С как вЫходные сигналы (при этом в загрузчике используется только один бит - подтверждение приёма байта), а старшие биты порта С - входные сигналы (старший бит в загрузчике не используется).
    Т.к. нет ни настоящего контроллера, и нет родного ПО с полноценной реализацией протокола, нам остаётся только гадать на кофейной гуще.

  5. #34

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    b2m, у описания соединения:
    com5 : K580ww51 {
    connect="tcp:30360:127.0.0.1"
    }
    есть ещё какие-то параметры?
    "логин/пароль" например, или ещё что-то, что могло-бы идентифицировать данного "клиента" на стороне "сервера", кроме номера порта клиента, который выбирается системой случайным образом (первый из свободных).

  6. #35

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нет, либо с IP адресом, чтобы сам коннектился, либо без, чтобы ждал соединения. В последнем случае первым байтом выдаст номер соединения (нужен для сетей). Когда работает в качестве сервера, то данные рассылает всем клиентам.

  7. #36

    Регистрация
    22.02.2014
    Адрес
    г. Курган
    Сообщений
    1,706
    Спасибо Благодарностей отдано 
    275
    Спасибо Благодарностей получено 
    318
    Поблагодарили
    222 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сомневаюсь, что это представляет для кого-то интерес.
    Но выложу папку с проектом виртуального контроллера ЛВС на Delphi7.
    Удобно, что эмулятор emu удерживает данные (отправленные в сокет) для порта Вектора даже когда порт уже был прочитан программой Вектора.
    Например при опросе наличия контроллера, программа читает из порта 3 байта (с ожиданием синхры передачи байта) и проверяет на соответствие 55h.
    А виртуальному контроллеру, в этой ситуации достаточно один раз отправить в сокет байт 55h и три пары байт синхры - передачи байта информации. Программа Вектора читая порты воспринимает это как положено.

    Заменил исходники. Обнаружил избыточность передачи синхры, и добавил возможность менять номера портов для серверов.
    Вложения Вложения
    Последний раз редактировалось KTSerg; 13.06.2020 в 10:25.

    Этот пользователь поблагодарил KTSerg за это полезное сообщение:

    Improver(13.06.2020)

  8. #37

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Сомневаюсь, что это представляет для кого-то интерес.
    Но... Прикрутил я к эмулятору язычёк под названием Lua (ниже ссылка на архив с плагином). Очень уж захотелось сделать виртуальный контроллер ЛВС.

    Сначала я не хотел выкидывать ВВ55, чтобы не париться с её реализацией в Lua, но как выяснилось, при настройке порта на ввод, эмуль ничего не пишет в связанное с этим портом устройством (на ввод же программируем). Т.е. привязка к еденице в реальном устройстве не будет эмулироваться как хотелось бы. В связи с этим пришлось полностью заменить ВВ55 виртуальным устройством на Lua.

    Для начала меняем конфиг:
    Код:
    ext : lua-script {
      script="Vector06c\lua\locnet.lua"
      data.onread="read"
      data.onwrite="write"
    }
    Тут мы задаём имя файла со скриптом и имена функций для устройства ext.data (вместо data могло быть что-то иное, но я решил оставить имя, которое было у ВВ55).

    Привязка к портам процессора осталась как и была у ВВ55:
    Код:
    CPU : K580wm80a {
    ...
      port~[04-07]=ext.data
    ...
    Минимальный .lua в данном случае мог выглядеть так:
    Код:
    function read(addr)
      return 0
    end
    function write(addr, val)
    end
    То есть при чтении всегда выдаётся 0, а при записи ничего не делаем.

    Первым делом я сделал протоколирование обращения к устройству:
    Код:
    local f = io.open("test.txt", "w+")
    
    function read(addr)
      local val = 0
      f:write("rd ", addr, " ", val, "\n")
      return val
    end
    
    function write(addr, val)
      f:write("wr ", addr, " ", val, "\n")
    end
    Далее, в зависимости от режима ВВ55 (поддерживаются только некоторые из всех возможных) я сделал возможность выполнять разные действия, и одним из первых стал режим детектирования контроллера ЛВС:

    Скрытый текст

    Код:
    local function zero() return 0 end
    local function nop(val) end
    
    local detval = 0
    local function rdet() return detval end
    local function wdet(val) detval = (val&0x80)>>4 end
    
    local default = {
    name = "default",
    read = {zero,zero,zero,zero},
    write = {nop,nop,nop},
    enter = nop
    }
    
    local recv = {
    name = "recv",
    read = {zero,zero,zero,zero},
    write = {nop,nop,nop},
    enter = nop
    }
    
    local send = {
    name = "send",
    read = {zero,zero,zero,zero},
    write = {nop,nop,nop},
    enter = nop
    }
    
    local detect = {
    name = "detect",
    read = {zero,zero,rdet,zero},
    write = {wdet,nop,nop},
    enter = nop
    }
    
    local modesel = {
    [0x9B] = default,
    [0x9A] = recv,
    [0x98] = send,
    [0x8B] = detect
    }
    
    local mode = default
    
    local f = io.open("test.txt", "w+")
    
    function read(addr)
      local val = mode.read[addr+1]()
      f:write("rd ", addr, " ", val, "\n")
      return val
    end
    
    function write(addr, val)
      if addr==3 then
        mode = modesel[val] or default
        mode.enter()
        f:write("mode ", mode.name, "\n")
      else
        mode.write[addr+1](val)
        f:write("wr ", addr, " ", val, "\n")
      end
    end
    [свернуть]

    Имейте ввиду, что если массивы задаются списком, то первый элемент имеет индекс 1.

    Ну а далее шаг за шагом реализовывался весь (известный) протокол ЛВС. Конечный вариант есть в архиве. Имя загружаемого файла задаётся в самом скрипте.

    Архив с плагином: luaplug.zip

    Эти 2 пользователя(ей) поблагодарили b2m за это полезное сообщение:

    KTSerg(14.06.2020), svofski(14.06.2020)

  9. #38

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я пролистал тред и только запутался. Вся борьба за эмуляцию чего? подключенного к Вектору через ВВ51 некоего LAN-устройства? какого именно? А то уже тут ЛУА, и неясно во что именно в железе выльются все эмуляторские изыски.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

  10. #39

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,926
    Спасибо Благодарностей отдано 
    105
    Спасибо Благодарностей получено 
    290
    Поблагодарили
    216 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Error404 Посмотреть сообщение
    Я пролистал тред и только запутался
    Название треда вроде говорит само за себя: эмуляция виртуального контроллера. Гипотетическое устройство, подключаемое к портам эмулируемого Вектора. При желании, можно реализовать какое-либо реальное устройство. В данном случае рассматривался контроллер локальной сети, который в железе теперь очень сложно найти. И найдёт ли кто-нибудь - неизвестно.

Страница 4 из 4 ПерваяПервая 1234

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Вектор-06Ц: Эмуляция
    от ZEman в разделе Вектор
    Ответов: 1516
    Последнее: 16.10.2025, 11:13
  2. Вектор-06Ц: Эмуляция - КР580ВИ53
    от Tim0xA в разделе Вектор
    Ответов: 264
    Последнее: 05.06.2025, 14:20
  3. Вектор-06Ц: Эмуляция - КР580ВМ1
    от svofski в разделе Вектор
    Ответов: 50
    Последнее: 06.10.2023, 21:11
  4. Вектор-06Ц: Эмуляция - КР580ВМ80А
    от Ramiros в разделе Вектор
    Ответов: 199
    Последнее: 17.08.2014, 22:19
  5. Ответов: 40
    Последнее: 27.07.2012, 13:07

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •