Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Снова эмулятор Радио-86РК на JavaScript. Эмулятор процессора 580


Написать процедуру задержки в эмуляторе процессора КР580

Форум: "Начинающим";Поиск по всему сайту: www.delphimaster.net;Текущий архив: 2013.03.22;Скачать: [xml.tar.bz2];

Вниз

Написать процедуру задержки в эмуляторе процессора КР580 
sas9568635 ©   (2012-06-19 16:01) [0]

Как грамотно написать процедуру зажержки каждой команды процессора КР580?

Сергей М. ©   (2012-06-19 16:39) [1]

задержка задается в попугаях ?

sas9568635 ©   (2012-06-19 17:08) [2]

> задержка задается в попугаях ?Незнаю.. :-)

нужна, видимо 1/1000000 доля секунды...

Мне все равно лишь бы она была регулируемая, достаточно стабильная и не "жрала" ресурсы компа...  

видимо нужен цикл типа Repeat... until - что в цикле писать то?... не все команды подобные a:=a+1 и так миллион раз процесор будет выполнять за один и тот же промежуток времени. Вот вчем соль.

Привязать к таймеру врядле получится, думаю у таймера очень большая задержка (даже по самой его малой доле) Кстати а какая она?.. да и на вызов таймера теряется время очень большое...

RWolf ©   (2012-06-19 17:11) [3]

RTDSC, например.

Сергей М. ©   (2012-06-19 20:41) [4]

> Привязать к таймеру

Какой нафих "таймер" в КР580 ?Такая трава в КР580 не растет.Эта трава растет в  8255, а не в 580.

Сергей М. ©   (2012-06-19 20:46) [5]

> не все команды подобные a:=a+1 и так миллион раз процесор > будет выполнять за один и тот же промежуток времени

Jдну и ту же маш.инструкцию при одном и том же периоде тактирования любой процессор выполнит за один и тот же промежуток времени.

Inovet ©   (2012-06-19 20:53) [6]

> [4] Сергей М. ©   (19.06.12 20:41)> Какой нафих "таймер" в КР580 ?Ну таймер там может быть и даже стандартный исть в чипсете. Вопрос про задержку в эмуляторе.

Inovet ©   (2012-06-19 20:54) [7]

> [4] Сергей М. ©   (19.06.12 20:41)> 8255Ну да

Inovet ©   (2012-06-19 20:56) [8]

А обязатльна такая точность прямо до тактов эмулируемого процессора? Может таймер с более грубым интервалом выставить?

Сергей М. ©   (2012-06-19 22:36) [9]

> Inovet ©   (19.06.12 20:53) [6]> исть в чипсете.

Какой еще нафих "чипсет" ?Речь у ТС идет об эмуляции процессора, а не об эмуляции некоей хреновины, в составе которой есть в том числе указанный процессор.

Inovet ©   (2012-06-20 00:54) [10]

> [9] Сергей М. ©   (19.06.12 22:36)Речь у ТС идёт о регулировке скорости работы эмулятора на хосте. Так что пофиг, есть в этом эмуляторе что-то кроме процесоора или ничего нет.

Германн ©   (2012-06-20 00:59) [11]

> Inovet ©   (20.06.12 00:54) [10]Как человек постоянно и давно занимающийся железом, различаю понятия эмулятор и симулятор. Для первого скорость важна, но получить он её сможет только на железе. Для второго скорость не важна. Но что нужно именно автору - хз.

RWolf ©   (2012-06-20 09:28) [12]

> [11]Чересчур категорично. Есть прекрасные программные эмуляторы старых компьютеров, где к скорости не придраться, все видеоэффекты синхронизированы, как на родном железе.

Очень Злой   (2012-06-20 10:18) [13]

> нужна, видимо 1/1000000 доля секунды...

ну время в секундах тут ни о чем не говорит... Переведи в такты...

Сергей М. ©   (2012-06-20 11:01) [14]

> RWolf ©   (20.06.12 09:28) [12]

Да не идет речь у ТС о компьютере)Только о процессоре.А в процессоре 8080 aka KR580 нет никаких таймеров.

Форум: "Начинающим";Поиск по всему сайту: www.delphimaster.net;Текущий архив: 2013.03.22;Скачать: [xml.tar.bz2];

Наверх

Память: 0.75 MBВремя: 0.18 c

www.delphimaster.net

Реверс-инжениринг КР580ВМ80А / i8080 завершен / Хабр

Рад сообщить, что реверс-инжениринг КР580ВМ80А полностью завершен. Получена полная принципиальная схема и Verilog-модель. В невероятно короткие сроки схему восстановил Vslav 1801BM1 (1801ВМ[email protected]).

Оказалось, в КР580ВМ80А ровно 4758 транзисторов (а не 6000 или 4500, как иногда ошибочно упоминают).

Топология КР580ВМ80А похожа, но не идентична i8080. Тем не менее, отличий в реализации опкодов КР580ВМ80А не было обнаружено.

Verilog-модель успешно прошла зубодробительный тест качества симуляции и как Verilog-модель, и как FPGA заменяя реальный КР580ВМ80А в "Специалисте".

Файлы: Главная модель Verilog, схема, Полный пакет файлов.

Лично у меня с этим процессором многое связано — именно он стоял в моем первом компьютере Орион-128. Вскрывать микросхемы 3 года назад я также начал именно с этого процессора: после 3-х дней мучений с кислотой, все что удалось получить тогда — вот такой снимок:

Помимо окончательного решения вопроса о «секретных командах» и симуляторщиков-перфекционистов — теперь можно FPGA модель поставить в реальное железо, или целый компьютер на этом процессоре гонять в FPGA (да еще и на частоте 50-100Мгц), добавлять свои команды на неиспользуемых опкодах. А может кто-то сделает четырехядерный КР580ВМ80А? Все ограничено только полетом фантазии…

Теперь стало понято, какая часть на кристалле за что отвечает. Фотографии без разметки тут.

Среди дальнейших планов — восстановление 1801BM1 схемы 1801ВМ1, идет работа по восстановлению схемы контроллера дисков 1818ВГ93. Ну а в будущем — силы всего мира собираются на Intel 80386DX (нужна еще парочка ранних, на 12-16 Мгц, не выше)… Также ищу, где-бы найти процессоры 580ВМ1, советскую двойку (где-то видел слухи, что она была где-то в виде прототипов с очень маленьким выходом годных). Если это или что-то другое интересное у вас есть — пишите :-)

habr.com

Снова эмулятор Радио-86РК на JavaScript

Тесты, тесты, тесты. Прошлое, настоящее и будущее.

Когда я начинал проект эмулятора Радио-86РК на JavaScript написание, собственно, модели процессора Intel 8080 (КР580ВМ80А) было мучительной задачей. Конечно, в сравнении со современными процессорами старичок 8080 выглядит как Жигули первой модели перед новой БМВ. Но все равно, реализовать логику около двух сотен команд с десятком регистров и при этом нигде не налажать практически невозможно. Поэтому отладка выглядела так: делается изменение, затем пробуется парочка программ для РК (в основном игры), и если игра визуально не глючит, то значит все более менее нормально.

Так я привел эмулятор примерно в работающее состояние, и большинство программ для РК типа “работали”. Но, увы, после завершения отладки, мне больше не хотелось трогать код эмуляции процессора, так как перепроверка все была реально мучительной и более того ненадежной. Но по-хорошему, код эмуляция нуждался в доработках.

На следующем витке эмуляторного приступа, когда я решил запустить РК на Maximite, я разыскал доступные тесты для Intel 8080, написанные на его же собственном коде, и оформил их прямо в сборке стационарно. В итоге проект эмулятора процессора отпочковался в подпроект i8080-core. Это чистый эмулятор Intel 8080, непривязанный к конкретной аппаратуре. В процессе сборки запускаются четыре теста, один из которых, 8080-8085 CPU Exerciser, является, пожалуй, единственным способ убедиться в “похожести” эмулятора на реальный процессор. Он был адаптирован Вячеславом Славинским в процессе работы над эмулятором компьютера Вектор на FPGA.

Интересная особенность этого теста в том, что он не проверяет поведение процессора по документации, а просто проводит множество вычислений, задействуя как можно больше команд в как можно большем количестве комбинаций, считает контрольную сумму (CRC32) результат и сравнивает с эталонной. Эталонные значения были изначально получены прогоном теста на реальном процессоре.

С одной стороны данный тест не дает точного места, где происходит сбой, а просто говорит, например, что где-то в командах арифметики что-то работает не так, поэтому контрольная сумма не совпадает.

В другой стороны этот тест позволяет сравнить реальное поведение процессора, а не “документированное”, так как порой, как это водится, есть недокументированное или плохо документированное поведение.

Например, есть основные логические операции: OR, AND, XOR. Так как это неарифметические операции, то флаг половинчатого переноса AC (из младшей тетрады в старшую) просто обнуляется. Так написано в документации. Но в реальности команда AND особенная. В ней флаг AC устанавливается (внимание!) равным третьему биту операции OR между аргументами команды, а не просто в ноль. Данное поведение, все таки было задокументировано, но в более поздней документации по 8085.

Или, например, в командах инкремента и сложения, тот же флаг AC вычисляется как положено по документации. Но в командах декремента и вычитания этот флаг имеет инвертированное значение!

В общем, много интересного, “упущенного” в официальной документации.

В итоге я использовал “простые” тесты для начальной минимальной проверки, и затем CPU Exerciser для окончательной. Кстати, на реальном процессоре при частоте 2MHz этот тест работает около двух часов. Это не особо большая проблема для эмулятора на С, но для версии на JavaScript может стать проблемой.

Итак, после внедрения тестов я мог уже корячить код эмулятора i8080-core без особых проблем, играясь с оптимизацией, структурой и т.д.

И вот я решил вернуться к эмулятору на JavaScript и проверить его на тестах. Как я и предполагал, ни один из тестов полностью не проходил.

Я попробовал править существующую реализацию, но в процессе переписал код эмулятора 8080 практически заново, благо голова была свежа после работы над i8080-core. За пару дней я реализовал все команды и прикрутил тесты. По ним я выловил все глюки, и теперь i8080-js проходит все тесты, включая 8080-8085 CPU Exerciser, тем самым являясь реально точной репликой КР580ВМ80А.

В код эмулятора теперь разбит на компоненты (I8080, Memory, IO), что позволяет его легко использовать для эмуляции конкретной аппаратуры. Декодирование команд упрощено и теперь работает по принципу дизассемблера.

Тестирование можно проводить прямо в браузере через JavaScript Console, или с использованием интерпретаторов JavaScript V8 или SpiderMonkey, работающих из командной строки. Второй способ предпочтительнее, так как последний тест 8080-8085 CPU Exerciser на V8 работает около получаса, а на SpiderMonkey около трех часов.

Итак, код эмулятора i8080-js – http://github.com/begoon/i8080-js/

Идем далее, эмулятор Радио-86РК. Я его тоже фактически переписал с нуля, используя наработки от свежей версии на Maximite. Старая версия 0.6 все еще доступна, но новый эмулятор (версия 1.0 и выше) теперь будет хоститься на GitHub’е.

Код теперь также разбит на модули (UI, Screen, Keyboard, Memory, IO, Runner). Большая монолитная HTML-страница теперь состоит из нескольких скриптов и каталога с программами, которые загружаются динамически. Улучшена работа клавиатурой.

Попробовать эмулятор в деле: demin.ws/rk

Исходники на GitHub’e: http://github.com/begoon/rk86-js/

При отладке эмулятора был интересный эпизод, связанный, конечно, с тестированием. После отладки эмулятора процессора я был уверен, что в нем ошибок нет, ибо все тесты проходят. Более того, игровые программы, на которых я обычно провожу визуальное тестирование, работают. Но вот незадача – ни один из Бейсиков не работал. Все выводили на экран мусор и висли. Путем трассировки я выяснил, что команда RST была реализована неверно (адрес перехода вычислялся неправильно). Ни один из тестов эту команду почему-то не проверяет, игровые программы не используют, а вот Бейсики – практически все.

Итак, винтажный эмулятор Радио-86РК на JavaScript возвращается. Обновляйте закладки – demin.ws/rk

Впечатления и эмоции можно высказывать тут, ошибки и предложения лучше сразу файлить в трекер:

Посты по теме:

P.S. Не премяните заценить мой Сокобан (файл soroban.bin) и демку (файл rk86demo.bin).

P.P.S. Несколько скринов.

demin.ws

Написать процедуру задержки в эмуляторе процессора КР580

Форум: "Начинающим";Поиск по всему сайту: www.delphimaster.net;Текущий архив: 2013.03.22;Скачать: [xml.tar.bz2];

Вниз

Написать процедуру задержки в эмуляторе процессора КР580 
sas9568635 ©   (2012-06-19 16:01) [0]

Как грамотно написать процедуру зажержки каждой команды процессора КР580?

Сергей М. ©   (2012-06-19 16:39) [1]

задержка задается в попугаях ?

sas9568635 ©   (2012-06-19 17:08) [2]

> задержка задается в попугаях ?Незнаю.. :-)

нужна, видимо 1/1000000 доля секунды...

Мне все равно лишь бы она была регулируемая, достаточно стабильная и не "жрала" ресурсы компа...  

видимо нужен цикл типа Repeat... until - что в цикле писать то?... не все команды подобные a:=a+1 и так миллион раз процесор будет выполнять за один и тот же промежуток времени. Вот вчем соль.

Привязать к таймеру врядле получится, думаю у таймера очень большая задержка (даже по самой его малой доле) Кстати а какая она?.. да и на вызов таймера теряется время очень большое...

RWolf ©   (2012-06-19 17:11) [3]

RTDSC, например.

Сергей М. ©   (2012-06-19 20:41) [4]

> Привязать к таймеру

Какой нафих "таймер" в КР580 ?Такая трава в КР580 не растет.Эта трава растет в  8255, а не в 580.

Сергей М. ©   (2012-06-19 20:46) [5]

> не все команды подобные a:=a+1 и так миллион раз процесор > будет выполнять за один и тот же промежуток времени

Jдну и ту же маш.инструкцию при одном и том же периоде тактирования любой процессор выполнит за один и тот же промежуток времени.

Inovet ©   (2012-06-19 20:53) [6]

> [4] Сергей М. ©   (19.06.12 20:41)> Какой нафих "таймер" в КР580 ?Ну таймер там может быть и даже стандартный исть в чипсете. Вопрос про задержку в эмуляторе.

Inovet ©   (2012-06-19 20:54) [7]

> [4] Сергей М. ©   (19.06.12 20:41)> 8255Ну да

Inovet ©   (2012-06-19 20:56) [8]

А обязатльна такая точность прямо до тактов эмулируемого процессора? Может таймер с более грубым интервалом выставить?

Сергей М. ©   (2012-06-19 22:36) [9]

> Inovet ©   (19.06.12 20:53) [6]> исть в чипсете.

Какой еще нафих "чипсет" ?Речь у ТС идет об эмуляции процессора, а не об эмуляции некоей хреновины, в составе которой есть в том числе указанный процессор.

Inovet ©   (2012-06-20 00:54) [10]

> [9] Сергей М. ©   (19.06.12 22:36)Речь у ТС идёт о регулировке скорости работы эмулятора на хосте. Так что пофиг, есть в этом эмуляторе что-то кроме процесоора или ничего нет.

Германн ©   (2012-06-20 00:59) [11]

> Inovet ©   (20.06.12 00:54) [10]Как человек постоянно и давно занимающийся железом, различаю понятия эмулятор и симулятор. Для первого скорость важна, но получить он её сможет только на железе. Для второго скорость не важна. Но что нужно именно автору - хз.

RWolf ©   (2012-06-20 09:28) [12]

> [11]Чересчур категорично. Есть прекрасные программные эмуляторы старых компьютеров, где к скорости не придраться, все видеоэффекты синхронизированы, как на родном железе.

Очень Злой   (2012-06-20 10:18) [13]

> нужна, видимо 1/1000000 доля секунды...

ну время в секундах тут ни о чем не говорит... Переведи в такты...

Сергей М. ©   (2012-06-20 11:01) [14]

> RWolf ©   (20.06.12 09:28) [12]

Да не идет речь у ТС о компьютере)Только о процессоре.А в процессоре 8080 aka KR580 нет никаких таймеров.

Форум: "Начинающим";Поиск по всему сайту: www.delphimaster.net;Текущий архив: 2013.03.22;Скачать: [xml.tar.bz2];

Наверх

Память: 0.75 MBВремя: 0.184 c

www.delphimaster.net


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..