User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 174

Тема: команда BIT n,(HL)

Комбинированный просмотр

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

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    у меня уже прошел, осталось мелочи: объясни, boo-boo (коль те так больше нравится): что в btest2 такое тесты cpd/cpdr/cpi/cpdr и как для них правильно загружать адрес в memptr (или не адрес, а значение? из A? или из (HL)?). И пожалуйста, чуть подробнее насчет EI HALT в IM2 - откуда в регистр попадать должно? (Хоть бы исходники положил что ли, по дизассемблерному коду лазить не смешно).
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

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

  3. #2

    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию тест на bit n,(hl)

    благодаря Wlodek'у и CHRV мы теперь имеем над чем подумать

    в тестировании принимали участие:
    Z0840008,Т34ВМ1,КР1858ВМ3,Z084C0010,КР185 8ВМ1 от CHRV,
    пентагон Wlodek'a с неизвестным кристаллом (однако, не являющимся одним из вышеперечисленных)

    у родных Z084C00010, Z0840008 все одинаково.
    остальные кристаллы отличаются или по memptr, или по другим флагам.

    итак, memptr, внутренний регистр z80, из старшего байта которого берутся 3 и 5 биты F при выполнении опкода bit n,(hl). судя по результатам теста вырисовывается такая картина (тут плюсиками помечены пункты, совпадающие с nocash-докой, минусом -- несовпадающие или отсутствующие, загогулиной -- ни то, ни се.):

    + LD A,(addr)
    memptr=addr+1

    ~ LD (addr),A
    для Z0840008, Z084C00010, КР1858ВМ3: memptr=A*0x100
    на пентагоне Wlodek'a, Т34ВМ1, КР1858ВМ1: memptr=0

    ~ LD (addr), rp; LD rp,(addr)
    memptr=addr+1

    + EX (SP),rp
    memptr=rp

    + ADD/ADC/SBC rp,rp2
    memptr=rp+1

    + RLD/RRD
    memptr=HL+1

    + JP/JR/CALL/DJNZ/RET/RETI/?RST? addr (при переходе)
    memptr=addr

    + JP/CALL при отрицательном условии
    memptr=addr

    + IN A,(port)
    memptr=полный_адрес_порта(A*0x100+ port) + 1

    - OUT (port),A
    для Z0840008, Z084C00010, КР1858ВМ3: memptr=полный_адрес_порта(A*0x100+ port)
    для пентагона Wlodek'a, Т34ВМ1, КР1858ВМ1: memptr=0

    + IN A(C)
    memptr=BC+1

    + OUT (C),A
    memptr=BC+1

    - CPI/CPD/CPIR/CPDR
    самое непонятное... иногда меняет memptr, неясно, по какому принципу.
    [в этом тесте все cpi обнуляют memptr, cpd оставляют как есть, все cpir изменяют непонятно как (первые два обнуляют, остальные, которые при BC=5 выставляют 3й бит), первые два cpdr оставляют как есть, последующие три (BC=5) выставляют 3й бит]

    - INI/INIR/OTI/OTIR/IND/INDR/OUTD/OTDR
    или просто memptr=0, или что-то похитрее, ведется следствие...

    - прерывания:
    как при обычном переходе. то есть memptr=адрес обработчика прерывания

    + любая инструкция с (IX/IY+d)
    memptr=IX/IY+d

    за остальными инструкциями ничего подозрительного не замечено.

    пристегиваю архив с результатами теста и самим тестом (сорс для sjasmplus, сляпано быстро и на коленке, звиняюсь ,)
    Вложения Вложения
    Последний раз редактировалось boo_boo; 27.02.2006 в 00:26.

  4. #3

    Регистрация
    15.01.2005
    Адрес
    USSR
    Сообщений
    2,038
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от boo_boo
    в тестировании принимали участие:
    пентагон Wlodek'a с неизвестным кристаллом
    По-моему, на нём написано "Z80A GoldStar". Уточнить вряд ли удастся, потому что на него давно наклеен радиатор.

  5. #4

    Регистрация
    05.05.2005
    Адрес
    Германия
    Сообщений
    1,614
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от boo_boo
    пристегиваю архив с результатами теста и самим тестом (сорс для sjasmplus, сляпано быстро и на коленке, звиняюсь ,)
    Если дашь тест в формате TAP или TZX то протестю на оригинальном ZX Spectrum+. Если надо, могу посмотреть чем камень в нём стоит.

  6. #5

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    или в CPI/CPD попадает не тот регистр. Варианты: A, DE+1 (а вдруг), BC-1 (тогда откель 1 взялась), (HL) - смотрел?, A-(HL). Для CPIR/CPDR (а может и CPI/CPD - почему бы и) может еще PC (адрес самой команды CPIR/CPDR), причем еще смотреть надо какой байт, старший или младший. Думаю, стоит именно вот эти варианты рассматривать, для них тщательный тест делать, остальные версии вряд ли иммет смысл сейчас муссировать.

    (Хм, а что если MemPtr - не один, и в нескольких таких регистрах за 1 такт выполняется несколько инкрементов нескольких регистров, а попасть в xy в команде bit может из какого-нибудь, и не всегда одного и того же)
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  7. #6

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    С CPI/CPD/CPIR/CDPR ясно:
    первые 2 не влияют, вторые влияют, если команда выполняется более чем 1 раз, действие такое же как для JP на начало команды после каждого исполнения.
    Boo-boo, подтверждай. Я пока 3-й тест гляну.

    (Хотя конечно, почему же в LD<i,d>[r] по-другому. Хотя, с логикой тут вообще связки может и не быть. Как пришлось, так и сделали).
    Последний раз редактировалось Vladimir Kladov; 27.02.2006 в 19:28.
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  8. #7

    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    С CPI/CPD/CPIR/CDPR ясно:
    первые 2 не влияют, вторые влияют, если команда выполняется более чем 1 раз, действие такое же как для JP на начало команды после каждого исполнения.
    Boo-boo, подтверждай.
    насчет "как jp" похоже,
    однако, в предыдущей редакции теста аналогичный результат давала CPI (не помню, при каких условиях, исходника нет, надо дизасмить)...

    уточняю гипотезу -- CPI и CPIR обнуляют memptr при BC=1, и инициализируют его своим адресом (?или адресом +1?) в остальных случаях. CPD и CPDR не трогают memptr при BC=1 и инициализируют его адресом в остальных случаях.

    завтра выкачу очередной вариант теста -- проверим CP*, заодно прочие блочные команды при аналогичных условиях (а вдруг?), ну и еще кой-чего до кучи.

  9. #8

    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    19
    Поблагодарили
    19 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если смотреть на тест 3, то ничего CPI/CPD не обнуляют. Если конечно правильно понял, что во втором проходе @set@ означает что до теста memptr установлен, и проверка идет в том числе на то, что команда вообще его "сбрасывает".

    Я кстати замучился смотреть на тест 3. Сравнивать неудобно. Ты бы память инициализировал как-ниудь перед тестом, что ли. А то повторно тест запускать становится неинтересно, + и - вообще перестают совпадать. Различаются по + и - даже железные тесты. Сравнивалка тектовых файлов просто все считает насовпавшим (когдя я свои резултаты хочу сравнить), и приходится долго смотреть глазьями. Жуть!
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  10. #9

    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    Если смотреть на тест 3, то ничего CPI/CPD не обнуляют. Если конечно правильно понял, что во втором проходе @set@ означает что до теста memptr установлен, и проверка идет в том числе на то, что команда вообще его "сбрасывает".
    смотрю на результат последнего теста, вон на 1м проходе, при сброшенном memptr, все cpi дают 00, все cpd тоже 00, на втором, при установленном memptr, cpi опять 00 дают, а cpd 11. те cpi обнуляют, а cpd все пофиг.

    память инициализировать? O__o.... ок, сделаю

  11. #10

    Регистрация
    05.05.2005
    Адрес
    Германия
    Сообщений
    1,614
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    Сравнивалка тектовых файлов просто все считает насовпавшим (когдя я свои резултаты хочу сравнить), и приходится долго смотреть глазьями. Жуть!
    советую утилитку CompareIt! показывает именно несоотвествия построчно, выделяя их цветом. удобнее.

Страница 1 из 2 12 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Команда Outland corp
    от nyuk в разделе Люди
    Ответов: 12
    Последнее: 10.11.2006, 10:16

Ваши права

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