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

User Tag List

Страница 6 из 18 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя
Показано с 51 по 60 из 174

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

  1. #51
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    сделаю, как написано в доке плюс ld sp,() / ld (),sp - чем sp хуже bc/de/hl? тогда большой тест пройдёт ;-)

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

    По умолчанию

    Цитата Сообщение от SMT
    сделаю, как написано в доке плюс ld sp,() / ld (),sp - чем sp хуже bc/de/hl? тогда большой тест пройдёт ;-)
    хе-хе а как насчет чтобы этот (последний в треде) тест совпал с реалом?

  3. #53
    Master Аватар для Vladimir Kladov
    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    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]

  4. #54
    Master Аватар для boo_boo
    Регистрация
    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.

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

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от boo_boo
    скачать реально, с opencores -- t80/tv80... только Zilog исходниками z80 с народом не делилась, сталбыть авторы этих ядер тоже работали по описаниям.
    "Исходников" Z80 быть не может. Кстати, обсуждалось недавно (месяца два назад) в comp.arch.fpga , "ссылку" я давал уже здесь.

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

    По умолчанию

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

  8. #58
    Master Аватар для Vladimir Kladov
    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    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]

  9. #59
    Master Аватар для Vladimir Kladov
    Регистрация
    09.02.2005
    Адрес
    Новосибирск
    Сообщений
    933
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    17
    Поблагодарили
    17 сообщений
    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]

  10. #60
    Master Аватар для boo_boo
    Регистрация
    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*, заодно прочие блочные команды при аналогичных условиях (а вдруг?), ну и еще кой-чего до кучи.

Страница 6 из 18 ПерваяПервая ... 2345678910 ... ПоследняяПоследняя

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

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

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

Похожие темы

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

Ваши права

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