Важная информация

User Tag List

Показано с 1 по 10 из 23

Тема: Передача параметров хитрой железке

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    ZEK
    Гость

    По умолчанию Передача параметров хитрой железке

    Граждане программеры, возник вопрос: щас прорабатывается концепция хитрой железки, и вот возникла необходимость железяке передавать команды и параметры, железяка достаточно умная теоретически умеет прослушивать шину спекка и соответствующим образом реагировать. В общем нужна помощь искушонных в Z80 людей.

    Так как планируется свести к минимуму колво портов в адресном пространстве машинки мы добавляем всего 2 порта 1-индекс внутреннего регистра, 2 непосредственно адресуемый регистр в связи с этим становиться неудобно передавать параметры,
    так как получается следующего вида манипуляции
    1. устанавливаем в первом порту номер регистра для параметра 1
    2. записываем параметр в порт 2

    и так для каждого регистра. плюс ситуация усугубляется еще и тем что параметры очень часто первышають 8 бит (то есть могут встречаться 2 байтные параметры)


    Была одна из мыслей реализовать следующим образом передачу параметров.
    ld h,код команды
    ld l, первый 1 байтый параметр
    push hl // записываем в стек

    ld hl,параметр2
    push hl
    ld hl,параметр3
    push hl
    ld hl,параметр4
    push hl

    ld a,a // признак железяке что необходимо исполнить команду

    // возвращаем стек в нормальное состояние
    pop hl
    pop hl
    pop hl
    pop hl

    Железяка ведет себя следующим образом, у нее есть FIFO буфер длинной в 8 байт, железяка прослушивает шину и видет что процу попалась команда PUSH HL после чего следует 2 цикла записи в память - железка пихает их в FIFO буфер

    Далее если процу попадается команда ld a,a она это дело воспринимает как признак для исполнения команды (код команды получается лежит в FIFO как самый старый байт). То есть метод как бы позволяет без проблем передавать 16 бит параметры и команды, но у него есть существенные недостатки
    1. Юзается стек
    2. если между инструкциями PUSH HL происходит прерыание и в обработчике прерываний тоже встречаются команды PUSH HL то естественно железяка засунет эти байты в FIFO очередь (то есть уже совсем левые параметры)
    3. Нужно стек возвращать в исходное состояние - а это лишние траты тактов проца

    В общем это я привел один из примеров что бы было видно что можно достаточно нетривиально поступать.

    Основные требования к методу это
    1. Скорость работы
    2. возможность удобно передавать 2 байтные параметры (хоят тут выменя можете разубедить что вы 2 байтные параметры можете пердавать и байтику и вам это не мешает)
    3. предусмотреть возможность что количество параметров может быть непостоянно

    И еще так как тема относиться вроде бы к железяке добавлю что железяку тут не обсужаю, важно мнение программистов которые теоретически будут работать с данным делом и важна оптимальность взаимоотношения железяки и программаного обеспечения
    Последний раз редактировалось ZEK; 12.07.2006 в 16:23.

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

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

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

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

Ваши права

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