Да, только romов 2 - ftst1 и ftst2
ftst1 - в районе 15 минут, ftst2 - примерно 6 с половиной минут.
Вид для печати
dk_spb, праздники уже заканчиваются :v2_wink2:
Результаты по ftst1 (извините, как обычно необработанные):
маленькие фото - 1.4Mb
если что-то не видно - спрашивайте или смотрите большие фото - 31Mb
Результаты по ftst2 (при малой заполненности экрана помех почему-то больше гуляет):
маленькие фото - 1Mb
если что-то не видно - спрашивайте или смотрите большие фото - 13Mb
---------- Post added at 22:02 ---------- Previous post was at 21:41 ----------
Если что надо протестить еще - спрашивайте. Когда тесты такие короткие - проще.
Я с прошлого раза как-то думал что как и с exer надо будет много времени потратить, поэтому всё на праздники откладывал.
dk_spb, спасибо!
Ramiros, VV просто удивительно близок к эталону :)
VirtualT разочаровал.
ivagor, сам неожидал :)
надо бы еще проверить как влияют SUB,SUI,CMP на флаг АС, как в 8080 или уже как в 8086
Документированные флаги документированных команд уже были ранее проверены эксисайзером (пусть не по отдельности, а скопом), и в VV и в emu с ними все нормально, лучше тут уже ничего не трогать (в смысле не портить).
Если надо - могу еще что-нибудь оттестировать
Подправил немного эмуляцию флагов K и V. Осталось разобраться с DAA, сдвигами и rim/sim. Кто-нибудь знает, как формируется V в командах сдвига?
V-флаг равен 0 для операций RRC, RAR, AND, OR и XOR, поскольку у этих операций постоянные значения переноса находятся внутри АЛУ (подробности). Операции RLC и RAL работают только с аккумулятором, добавляя его значение к самому себе, что можно рассматривать как суммирование: V-флаг устанавливается в случае, если результат операций чисел со знаком больше байта. Для команды DAA (десятичная коррекция) V-флаг работает также, как и при суммировании: V-флаг будет установлен только при переносе старшего значащего разряда (старшая цифра переходит от 7 к 8). Хотя в BCD-числах отсутствует знак, и V-флаг для операции DAA бесполезен. Более полезен V-флаг для операции DAD, поскольку отражает 16-битное знаковое переполнение и вычисляется по результатам сложения старших разрядов. Для инструкции INR переполнение возникает при переходе от значения 0x7f к 0x80 (от 127 к -128); заметьте, что переходу от 0xff к 0x00 соответствует переход от -1 до 0, что является не знаковым переполнением, а беззнаковым. Аналогичным образом инструкция DCR устанавливает V-флаг при переходе от шестнадцатеричного значения 80 к 7f (от -128 к 127), что является также беззнаковым переполнением.
Спасибо, теперь первый тест почти проходит, осталось rim/sim доделать.
Сделал DAD по аналогии с ADD, DSUB по аналогии с SUB. Флаг V в DSUB совпадает, а в DAD нет. Загадка.
b2m, наверно лишний вопрос, но ты эту инфу (там и другие статьи есть по этой теме) читал?
Вот исходник на случай сомнений в корректности теста. Если там вдруг ошибки - надо конечно исправить.
У меня еще есть такое глупое предположение - флаг V для dad считаешь правильно, флаг K на его основе - правильно, а вот в PSW пишешь K правильный, а V - левый.
Здрасьте. Какие такие ошибки могут быть в программе, если она по разному отрабатывает на реале и в моём эмуле? Тут может быть только неточность эмуляции, в противном случае (если эмуляция точная) результат просто обязан совпадать.
---------- Post added at 19:35 ---------- Previous post was at 19:32 ----------
Маловероятно. PSW - битовое поле, оно же используется и при рассчёте K. Как-то неправильно пихать в стек весь байт - практически невозможно.
---------- Post added at 19:39 ---------- Previous post was at 19:35 ----------
Кстати, я заметил, что для команды dad флаг AC тестируется неполно. У меня был вариант, когда в dad этот флаг был просто равен нулю - КС тоже совпадала. Нужно добавить данные, когда есть перенос из 11-того бита в 12-тый.
Наверно я тупой. Запустил emu c конфигом pk6128c. Складываю в dad b 7000h+7000h - флаг V не устанавливается (странно). В VV тоже самое - устанавливается.
no offense, но ты мне напомнил одну из моих бабушек :)
---------- Post added at 20:57 ---------- Previous post was at 20:44 ----------
Такие данные там тестируются во втором проходе.
а как ты флаги АС, Р в DSUB считаеш?
Я, подумав немного, сделал DSUB при помощи 2-х вызовов 8-ми битного АЛУ, сначала для младших байт, потом для старших. И числа совпали. Т.е. флаги считаются для старшего байта. Теперь вот думаю, правильно ли в этом случае считается Z. Но ведь паритет и доп. перенос совпали...
А вот когда я сделал то-же самое для DAD, то числа стали отличаться. Поэтому пришлось обновлять флаги частично, только CY и V.
с DSUB разобрался, а SIM/RIM нисходится никак, странно...
The zero flag has support for multi-byte zero: at each step it can AND the existing zero flag with the current ALU zero value, so the zero flag will be set if both bytes are zero. This is only used for the (undocumented) DSUB 16-bit subtract instruction. Strangely, this circuit is also activated for the 16-bit DAD instructions, but the result is not stored in the flag.
---------- Post added at 16:30 ---------- Previous post was at 15:38 ----------
Если dk_spb еще не разобрал лабораторный стенд и готов выделить несколько минут, то можно сделать тест этих команд с отдельными CRC на каждый бит RIM.
Накопипастил побитный вариант теста SIM/RIM. Время работы близко к 0 секунд. Исходник прилагается.
dk_spb, FlagTest3.zip еще прогони.
Это шутка такая или я по серости своей чего-то не понял?
После появления заставки и слова simrim я прождал около 5 минут.
Потом нажал БЛК+СБР и запустил секундомер. Буду ждать 15 минут.
Эффект нулевой.
Заново сгенерил .wav и о чудо - заработало.
http://oldpc.su/6/DSC_0302.JPG
плохо читаемый ряд:
A3: 9E9792F5 A2: 601CCEFB
Я вроде уже справился. Сорри за ложную тревогу.
Интересные результаты, A5 и A4 мне не удалось симулировать. Посмотрим, что умные люди скажут.
---------- Post added at 23:57 ---------- Previous post was at 23:51 ----------
ВВ51 их устанавливает.
---------- Post added 13.01.2014 at 00:09 ---------- Previous post was 12.01.2014 at 23:57 ----------
Мне стоило схему посмотреть до написания теста, а не после. Похоже из-за RST5.5 и 6.5 как раз первый прогон завис. dk_spb, возможно 6128 еще потестировать нужно будет, надеюсь Вам пока не надоело.
---------- Post added at 00:23 ---------- Previous post was at 00:09 ----------
Хотя если еще подумать, то при этих прерываниях все равно попадаем на 38h, а там EI и RET. Разве что по адресам 2Ch-37h лежал какой-то мусор вместо нулей.
Я пробовал генерировать RST5.5 и RST6.5, тест зависает. После сброса 8085 маски включены и пока их не трогать эти прерывания ни на что не влияют :) как только SIM сбросит маску дальнейшее поведение зависит от ВВ51. только непонятно почему с ВВ51 идут запросы на прерывание?
тут на время теста SIM/RIM сбрасывать INTE надо бы, и исключить из тестирования биты A4,A5 т.к. на них непредсказуемый мусор.
Ну хорошо, можно попробовать объяснить зависание FT3 - приходит RST5.5 или RST6.5, доходим до 38h, разрешаем маскируемые прерывания, возвращаемся в программу и снова попадаем на обработчик и так до бесконечности, раз у ВМ85 нет собственных средств для сброса запросов отдельно RST5.5 или RST6.5.
Но непонятно, как отработали до конца FT1 и FT3 (во второй раз).
Кэп? :)
Это решение в худших традициях первоначального варианта эксисайзера для 8085. Хотя с самим ВМ85 уже разобрались и тонкости относятся к его взаимодействию с ВВ51. Только мне почему-то кажется (?), что dk_spb говорил, что в его экземпляре нет ВВ51. Просьба к dk_spb рассказать, есть ли в его экземпляре ВВ51.
Может поэтому и мусор. Чтобы хоть какие-то предсказуемые результаты были, надо бы заземлить входы RST 5.5-7.5
Пока подтвердился лишь бит А3 в команде RIM: действительно считывается, разрешены прерывания или нет. Есть кое-какая инфа о битах вот тут.
Биты маскирования прерывания не просто регистры. Судя по всему на них как-то влияет бит А3 в команде SIM. Пробовал делать AND с ним - всё равно не совпало.
Твой симулятор не учитывает влияние А3 на А2-А0. А вот у меня в эмуляторе (я обновил только что) это учтено, и всё, кроме А5-А4, совпало.
Извини, мельком посмотрел исходник, увидел только, что ты sim/rim закомментировал. :)
У меня тоже сошлось все крома А4 А5, (в общем то и до этого сходилось).
---------- Post added at 15:16 ---------- Previous post was at 15:13 ----------
ivagor, действительно, зависал FT1, а FT3 я не пробовал на прерывания проверять.
---------- Post added at 15:23 ---------- Previous post was at 15:16 ----------
b2m, открой тайну, как в твоем emu в ПК-6128 ромы загружать? хотел посмотреть, но фантазии нехватило :)
Я загружаю через отладчик (Ctrl-L, по адресу 100h, туда-же и PC устанавливаю). Понятно, что есть тысяча способов сделать это удобнее, но должен же мой эмулятор быть в чём-то хуже, чем твой :)
---------- Post added at 14:34 ---------- Previous post was at 14:31 ----------
На самом деле, я думал, что есть способ грузить из внешнего rom-а, поэтому добавил его на тулбар, но пока сочетания клавиш (типа как в Векторе-06ц) обнаружить не удалось.
---------- Post added at 14:36 ---------- Previous post was at 14:34 ----------
А как на реале из внешнего rom-а грузить?
я создал образ fdd и воткнул его в А: и тут самое интересное - у меня грузится и работает, в emu нет.