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

User Tag List

Показано с 1 по 5 из 5

Тема: OUTI\OUTD правильная последовательность действий

  1. #1
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию OUTI\OUTD правильная последовательность действий и неправильная его работа EmuZWin

    при описании работы команд OUTI и OUTD
    везде описывается одна и та же последовательность
    Reads from (HL) and writes to the (C) port. HL is then incremented, and B is decremented.

    перекинули содержимое (hl) в порт (c)
    а только потом инкремент hl и декремент b

    как в итоге оказалось
    TRUЪ ПОСЛЕДОВАТЕЛЬНОСТЬ ВОТ ТАКАЯ!!!
    Код:
    B←B-1 
    (C)←(HL)
    HL←HL+1
    А В EMUZWIN ОНО ИСПОЛНЯЕТСЯ НЕПРАВИЛЬНО!!!!!


    но SIDBASICSP для вывода использует такую последовательность

    bc = $C0FD ; $C0FD зеркало $FFFD

    out (c),a
    outi

    то есть по логике оно должно 2 раза отправить данные в порт $C0FD
    (что и происходит в emuzwin и он молчит (он прекрасно поддерживает зеркало $C0FD!!!!))

    но даже на реальном железе оно работает
    то есть декремент B происходит до вывода в порт
    и данные успешно идут в порт $BFFD
    (так же работает в куче эмуляторов (и в unreal тоже))

    ВОПРОС ШОЗАНАХ?????

    я убил кучу времени в попытке понять чего оно не работает

    - - - Добавлено - - -

    щас залезу в фирменный мануал

    вот оно
    (C) ← (HL), B ← B – 1, HL ← HL + 1
    при этом далее все описывается правильно
    The contents of the HL register pair are placed on the address bus to select a location in
    memory. The byte contained in this memory location is temporarily stored in the CPU.
    Then, after the byte counter (B) is decremented, the contents of Register C are placed on
    the bottom half (A0 through A7) of the address bus to select the I/O device at one of 256
    possible ports. Register B can be used as a byte counter, and its decremented value is
    placed on the top half (A8 through A15) of the address bus. The byte to be output is placed
    on the data bus and written to a selected peripheral device. Finally, the register pair HL is
    incremented.
    Последний раз редактировалось NEO SPECTRUMAN; 07.03.2017 в 15:36.

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

  3. #2
    Guru Аватар для SAM style
    Регистрация
    28.02.2005
    Адрес
    Великий Новгород
    Сообщений
    2,055
    Спасибо Благодарностей отдано 
    10
    Спасибо Благодарностей получено 
    218
    Поблагодарили
    92 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Таки да. Сначала читается с (HL), потом декремент B, потом вывод в порт BC считанного значения, потом инкремент HL и расстановка флагов

    Из официальной доки по Z80


    Description:The contents of the HL register pair are placed on the address bus to select a
    location in memory. The byte contained in this memory location is
    temporarily stored in the CPU. Then, after the byte counter (B) is
    decremented, the contents of register C are placed on the bottom half (A0
    through A7) of the address bus to select the I/O device at one of 256
    possible ports. Register B may be used as a byte counter, and its
    decremented value is placed on the top half (A8 through A15) of the
    address bus. The byte to be output is placed on the data bus and written to a
    selected peripheral device. Finally, the register pair HL is incremented.
    [свернуть]


    PS: к слову, INI/IND работает наоборот - там B уменьшается после ввода из порта
    Последний раз редактировалось SAM style; 07.03.2017 в 14:18.
    Все любят гипножабу

  4. #3
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    тоесть в эмузвин и тут косяк...

    - - - Добавлено - - -

    а описание такое как будто и не предусматривается адресовать 64К портов...


    но зато во всех мануалах
    (C)←(HL)
    HL←HL+1
    B←B-1
    видно тоже сходу непонели
    http://z80-heaven.wikidot.com/instructions-setuti

    боже сколько подводных граблей...
    Последний раз редактировалось NEO SPECTRUMAN; 07.03.2017 в 14:26.

  5. #4
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,751
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    266
    Поблагодарили
    200 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    NEO SPECTRUMAN, ну дык мы то еще 3 года назад выяснили когда ТСконфу разбирали
    С уважением,
    Jerri / Red Triangle.

  6. #5
    Banned
    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,841
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    658
    Поблагодарили
    512 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    NEO SPECTRUMAN, ну дык мы то еще 3 года назад выяснили когда ТСконфу разбирали
    ну дык а мну 5 лет практически не проявлял тут активности

    - - - Добавлено - - -

    Кстате уже есть похожая тема
    пусть эта будет про баг в эмузвин
    Последний раз редактировалось NEO SPECTRUMAN; 07.03.2017 в 15:12.

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

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

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

Похожие темы

  1. Команды OUTI, INI и подобные и 16-битные порты
    от Gutten в разделе Программирование
    Ответов: 11
    Последнее: 11.12.2016, 21:31
  2. Правильная коллекция на реале
    от harushima в разделе Музыка
    Ответов: 42
    Последнее: 12.11.2013, 14:10
  3. какая ZX Wiki самая правильная?
    от research в разделе Люди
    Ответов: 5
    Последнее: 17.06.2013, 16:46
  4. Правильная эмуляция TR-DOS'а?
    от Vladimir Kladov в разделе Эмуляторы
    Ответов: 4
    Последнее: 23.02.2008, 19:39

Ваши права

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