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)

    По умолчанию

    вот такая штука. Стал смотреть что у меня по тесту неверно с командами CPD[r], CPI[r]. Нашел ошибку, исправил. Стало совпадать. Но по дороге качнул исходник US 0.34b, и посмотрел, так же он делает как я с этими командами. Оказалось, что совсем не так. У SMT в коде для CP к примеру:
    void __fastcall ope_A9(Z80 *cpu) { // cpd
    cpu->t += 8;
    unsigned char cf = cpu->f & CF;
    cp8(cpu, rm(cpu->hl--));
    cpu->f = (cpu->f & ~(CF|PV)) | cf;
    if (--cpu->bc16) cpu->f |= PV;
    }
    флажки XF и YF строятся на основании результата сранения A-(HL). А у меня по Янгу: YF=bit1 of n, XF=bit3 of n, где n=A-(HL)-HF. Результат "всеобъемлющего" теста тем не менее совпадает в обоих случаях. Какой же это тогда "всеобъемлющий" тест?

    Разбирясь с тем, как выполняет Spectaculator команду bit 0,b (первую же в этом тесте, я наткнулся вот на какую штуку. [...вырезано: LD SP,(addr) нет в списке влиящих на memptr, еще надо найти, какая же команда установила memptr перед попаданием на 9C09h, мда] Факт, однако: тест zexall по команде bit n,(HL) Spectaculator проходит, т.е. его контрольная сумма совпадает с результатами колонки Z80(real) для этой команды (замечу: у единственного из всех эмуляторов. Правда, у него есть другие ошибки, но на прошлой неделе это впрямь был самый точный среди всех ).

    Сейчас пытаюсь "прогнать" еще и Spin. Ага, есть результаты. Вот обновленная табличка.
    (Я свой EmuZWin пока не обновляю, хочу еще посмотреть чего-нибудь, и надо для случая fast CPIR/CPDR код поправить).

    Кстати, у кого под рукой линукс, не займетесь пополнением инфы для тамошних эмуляторов? Лично меня особо интересует Fuse, можно и глюкалку прогнать (так, кажется называется альтернатива на той платформе?).
    Последний раз редактировалось Vladimir Kladov; 24.02.2006 в 17:03.
    Последнюю версию 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)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    Кстати, у кого под рукой линукс, не займетесь пополнением инфы для тамошних эмуляторов? Лично меня особо интересует Fuse, можно и глюкалку прогнать (так, кажется называется альтернатива на той платформе?).
    с глюкалкой связываться смысла нет -- там 5 и 3 биты F ВООБЩЕ не эмулируются. Fuse лучше, ~80% пунктов теста проходит. Мое ядро (libz80ex) проходит все, кроме bit n,<b,c,d,e,h,l,(hl),a> (из-за bit n,(hl), который фиг знает как эмулировать, и ни одна редиска _мой_ тест на реале прогнать не сподобилась )

  4. #3

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

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    качнул исходник US 0.34b
    34b2 я ещё не выкладывал, а там по-другому

  5. #4

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

    По умолчанию

    Ха! Чтобы тест bit n,(hl) прошел и совпал с колонкой Z80(real), надо сделать ручкой Янгу, и напросто занулить XF и YF после этой команды...

    Или у Янга на руках был не тот процессор, либо одно из двух. Но именно так работает Spectaculator. Причем видимо не зависимо от того какой процессор выбран. Мда вот. А ведь даже в некоторых форматов снапшотов сохраняется теперь значение этого регистра, с комментарием, что дескать влияет на флажки в результате команды именно bit n,(hl)

    А с bit n,(ix+n) фишка вот какая. Здесь Янг может быть и прав. Но я пробовал сделать пару финтов. Например, занулить их. И тест все равно проходит! (Я, конечно, понимаю, там может быть IX всегда показывает сам на такой адрес, что ((IX+1)/256)&28h=0. Но тогда грош цена такому тесту!).

    В общем, народ. Если не найдутся реальщики готовые сотрудничать, чтобы подтвердить или наоборот развеять слухи о MemPtr-регистре, то ничего мы тут не добьемся. На данный момент результаты показывают: само существование этого регистра, возможно, результат работы с конкретным (горелым? левым?) Z80. Или тот тест прогонялся не на настоящем фирменном Z80, а на какой-нибудь под(д)елке (из Китая?). Даже на команды CPDr, CPIr он тоже похоже не влияет. Какие еще команды якобы берут из него флажки? (Сейчас выяснится, что слухи о memptr не более чем миф, вроде ракслы в спековской элите... )

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

  6. #5

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

    По умолчанию

    Может, реальщики нас просто не видят, потому что в раздел "Эмуляторы" не заглядывают? Запостить надо в раздел железо просьбу заглянуть сюда. А то как в современной многоэтажке живем, как выглядят сосдеи по площадке и чем дышат - не знаем...
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

  7. #6

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

    По умолчанию

    а реально скачать описание z80 в каком-нить VHDL? будет ли такая модель вести себя, как фирменная. или ядрописатели в том же положении, и могли пропустить недокументированные фичи

  8. #7

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

    По умолчанию

    Цитата Сообщение от SMT
    а реально скачать описание z80 в каком-нить VHDL? будет ли такая модель вести себя, как фирменная. или ядрописатели в том же положении, и могли пропустить недокументированные фичи
    скачать реально, с opencores -- t80/tv80... только Zilog исходниками z80 с народом не делилась, сталбыть авторы этих ядер тоже работали по описаниям.

  9. #8

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

    По умолчанию

    благодаря Wlodek'у (тут ) мой недотест bit 0, (hl) принес свои плоды. очень странные плоды...

    в каждой клетке на картинке -- 3 и 5 биты F после очистки флагов, выполнения определенной команды, и последующего bit 0,(hl)

    (далее звездочка обозначает этот докУмент)

    клетки 1-3: LD A,(FFXX) -- флаги установлены. похоже, и впрямь в memptr идет адрес (или адрес+1, как говорят в *?), надо проверять подробней.

    4-6: LD (FFXX),A для A=0,FF,AA -- пусто. (то есть * врет). или эта команда вообще ни на что не влияет, или просто обнуляет memptr (кстати, именно LD (addr),A при A=0 я делаю при очистке флагов, надеясь, что она, как говорится в *, сделает MEMPTR=A*0x100, то есть обнулит его нафиг. похоже, тем или иным образом он таки обнуляется О__о)

    7-12: ld (FFFE),rp для BC,SP,DE,HL,IX,IY -- установлены, опять похоже, что в memptr идет адрес или адрес+1.

    13-18: ld rp,(FFFE) для тех же регистров -- установлены, видимо, снова адрес.

    19: ex (SP),IX при SP=BFE6, (SP)=IX=FFFE -- включено, черт разберет, или адрес, или (SP)

    20: ADD HL,BC при HL=FF00,BC=1 -- включено.
    21: ADD HL,BC при HL=FFFF,BC=1 -- выключено. видимо, для ADD HL,BC в memptr попадает результат операции.

    22-23: аналогично для ADC, результат тот же.

    24-25: аналогично для SBC, тот же результат! ого, откуда взяться нулям в 3 и 5 битах после вычитания 1 из FFFF?

    26 -- rld для HL=FFFE, биты включены
    27 -- rld для HL=FFFF, выключены

    28, 29 -- то же для rrd

    30,31,32: JP, JR, CALL C3XX -- выключено, но это мало о чем не говорит, так как адрес я выбрал дурацкий -__-

    33,34: JP z,FFFF и CALL Z,FFFF при сброшенном Z. включено. и впрямь для JP и CALL memptr меняется, даже если условие не выполнено.

    35,36: in A,(F0) и in A,(FF) при A=0. выключено.

    37: in A,(C) при BC=FFF0. включено.
    38: in A,(C) при BC=FFFF. выключено. похоже, что memptr=bc+1 как в *

    39-40: OUT (FF),A при A=FE и A=FF. выключено.

    41: OUT (C),A при BC=FFF0. включено
    42: OUT (C),A при BC=FFFF. выключено. ситуация, аналогичная in A,(C)

    43-62: ldi,ldd,ldir,lddr,cpi,cpd,cpir,cpdr в нескольких вариантах. пусто.

    63-70: ini,ind -- пусто.

    71-78: outi,outd -- пусто.

    79-86: inir,indr -- пусто.

    87-94: otir,otdr -- пусто.

    95: IM2, EI, HALT при I=FC -- установлен __только__ 5 бит!

    96: чушь, хотел проверить JP IX, но забыл сделать JP %)

    97: inc (hl) -- пусто

    98: rlc (ix+1) при ix=FFFE. установлено.

    99,100: RLC (HL) для HL=40xx и FFFF. пусто.

    -------------------

    вывод: то что написано в *, не то наполовину лажа, не то проверялось на другом кристалле. у янга не написано практически ничего, но что есть, совпадает...
    вообщем, никто ничего не знает. чтобы разобраться, надо гонять МНОГО тестов, на реале, желательно на нескольких реалах О__о
    Последний раз редактировалось boo_boo; 25.02.2006 в 05:24.

  10. #9

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,374
    Спасибо Благодарностей отдано 
    1,695
    Спасибо Благодарностей получено 
    2,214
    Поблагодарили
    868 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от boo_boo
    то что написано в *, не то наполовину лажа, не то проверялось на другом кристалле. у янга не написано практически ничего, но что есть, совпадает...
    вообщем, никто ничего не знает. чтобы разобраться, надо гонять МНОГО тестов, на реале, желательно на нескольких реалах О__о
    Ну что же никак не равеется этот миф о наличие у населения РАЗНЫХ кристаллов. Может быть (да и то, глубого гепотетически) и был какой-то другой кристалл, но никаких документальных подтверждений тому не было, и в спектрумах такого кристалла замечено не было тоже!

  11. #10

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

    По умолчанию

    А еще, чтобы понять, как эти тесты коррелируют с zexall, надо на том же компе (у Wlodek'а) прогнать сам zexall. Если он согдасится, конечно, ждать 11 часов (с турбой можно быстрее, если есть, но все равно 6,5 часов, и все это время регулярно подходить, и списывать с экрана результаты, и нажимать Enter, когда пора скролл делать). Вот я сделал в виде TRD, если удобнее так на реал загонять. (Миль пардон, я перекомпилировал с некоторыми исправлениями в своем ZXAsm, но надеюсь все совпадает: по крайней мере результаты прогона эмуляторах вроде бы те же, что и .z80).

    Первый раз получился тест, который на пентагоне доходит до первого запроса на скролл и на нач то больше не реагирует. Я добавил EI в двух местах, перед вызовом 10h (pr-char), и еще раз прогнал весь тест. Должно пойти на реале. Очень хочется увидеть результаты живого прогона... Кто-нибудь, АУ! Wladek! особенно у тебя.
    Последний раз редактировалось Vladimir Kladov; 25.02.2006 в 11:17.
    Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. [B]

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

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

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

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

Похожие темы

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

Ваши права

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