Эмулятор мп системы на базе мп кр580вм80 как работать
Перейти к содержимому

Эмулятор мп системы на базе мп кр580вм80 как работать

  • автор:

Эмулятор 8080 на Arduino

Микропроцессор 8080 (КР580ИК80, позже КР580ВМ80А) у многих ассоциируется с домашними компьютерами "Радио-86РК", "Орион-128", "Вектор-06Ц" и другими. Но область его применения значительно шире, чем одна "бытовуха". Он применён в качестве основного в компьютерах СМ1800, "ВЭФ-Микро" и "Океан-240", а в качестве вспомогательного — в "Искре-226", а это — машины вполне профессионального назначения. Даже на такой "чужой" ему платформе, как ДВК, этот микропроцессор нашёл применение в контроллерах КСД и КСМ — соответственно, контроллере символьного дисплея и контроллере символьного монитора. Понятно, что тогда под дисплеем и монитором понимали одно и то же, просто эти платы — разработки разных лет, несколько отличающиеся устройством и возможностями. Так, например, во второй из них добавлена возможность подмешивания сигнала от КГД — контроллера графического дисплея.

Компьютеры ПК8000 и "Корвет" занимали промежуточное положение между домашними и профессиональными — они были учебными. Во втором из них видеоконтроллер превосходил по возможностям EGA. Первый же был попроще, но надёжнее.

Данный микропроцессор использовался и в качестве встроенного — т.е., с той целью, с которой сегодня применяются микроконтроллеры. Например, в громоздком, прожорливом, но весьма надёжном принтере "Электроника МС6304", многоголосных аналоговых синтезаторах с цифровым управлением "Маэстро" и RMIF TI-3, LD-проигрывателях "Русь" и "Амфитон" ВП-201, пишущей машинке "Элема".

В отличие от других популярных восьмибитных микропроцессоров, 8080 и его аналоги требовали трёх напряжений питания, подаваемых и снимаемых либо одновременно, либо в определённой последовательности, иначе микросхема выходила из строя. Поздние выпуски КР580ВМ80А могли работать от одного напряжения, но этот режим не считался штатным — если микропроцессор всё же выйдет из строя от несоблюдения правил эксплуатации, с гарантии он снимался. Затем был выпущен микропроцессор КР580ВМ1 с расширенными возможностями, для которого питание одним напряжением является штатным режимом.

В конце девяностых начались первые признаки ностальгии пользователей по различной технике с применением данного процессора. К тому времени начали устаревать ПК даже на процессорах 80386. Владельцы "пней" начали продавать "трёшки" по доступным ценам, и многие из них попадали к программистам, среди которых оказался житель Нижнего Новгорода Виктор Пыхонин. Он начал работу над EMU80 — эмулятором "Радио-86РК" и других компьютеров на микропроцессоре КР580ВМ80А. Этот эмулятор довольно долго был мегахитом, "широко известным в узких кругах". Вскоре последовали аналогичные эмуляторы и от других разработчиков.

Позже эмулировать системы с данным микропроцессором начали другими способами. "Специалист" — на Java, "Орион-128" — на Flash. Но постепенно обе технологии начали исчезать из браузеров пользователей. Web 2.0 медленно наступал, и программист Александр Дёмин написал эмулятор "Радио-86РК" на JavaScript, а за ним другой программист Shaos адаптировал эту разработку к планшетам, не имеющим физической клавиатуры.

А потянут ли эмуляцию КР580ВМ80А современные микроконтроллеры? Одним из первых такой эксперимент провёл тот же Александр Дёмин, написавший эмулятор "Радио-86РК" для платы Maximite на контроллере PIC32. Через несколько лет программист Алексей Пресняков написал эмулятор того же компьютера для недорогой платы ESP-01S.

А что же Arduino, хватит ли для тех же целей возможности этой, как известно, не самой мощной в мире платформы? Оказывается, впритык, но хватит. Программист под ником companje, объединив наработки Даниэля Карлинга и того же Александра Дёмина, сделал на её основе функциональный аналог компьютера MITS Altair 8800, но для его работы потребовалось подключить к плате слишком уж много периферийных устройств. Об этой конструкции можно почитать здесь: https://github.com/companje/Altair8800/blob/master/README.md

Другой программист, под ником maly, решил данную разработку значительно упростить — так, чтобы кроме Arduino, потребовалось только любое устройство с USB-хостом — ПК, смартфон или планшет с возможностью запуска терминальной программы. Эмулятору 8080 выделено 4 кБ ПЗУ и 1 кБ ОЗУ с возможностью расширения до 1,5. Всё это внутри микроконтроллера уже имеется — периферия не требуется. Вот только очень удобный Бейсик "Микрон", к которому привыкли пользователи "Радио-86РК", туда не поместится. Нужен Tiny Basic — очень компактный интерпретатор, разработанный программистом Ли-Ченом Вангом ещё в 1976 году. О том, как maly всё это объединил, он рассказывает здесь: https://www.uelectronics.info/2017. arduino

Краткий рассказ о том, как он всё это реализовал.

1. Взял за основу уже упомянутую выше разработку companje.
2. Написал слой аппаратных абстракций, где выделил для ПЗУ адресное пространство от 0x0000 до 0x0fff, для ОЗУ — от 0x1000 до 0x13ff. Конечный адрес ОЗУ можно сдвинуть, увеличив его объём до упомянутого выше 1,5 кБ.
3. Скачал исходники Tiny Basic здесь: http://www.autometer.de/unix4fun/z80pack/ftp/altair/ и немного поправил код в части MACRO.
4. Пропустил через онлайновый ассемблер (теперь есть и такой) здесь: https://www.asm80.com/
5. Из полученного при ассемблировании двоичного кода сделал заголовочный файл basic.h

Что ж, посмотрим, что будет, если всё это залить в Arduino-совместимую плату с характеристиками не хуже, чем у Uno, и запустить на устройстве, к которому через USB-хост подключена плата, терминальную программу.

Как видим, эмулятор работает, и без подключения чего-либо к GPIO. Задействованным у Arduino оказался только USB-интерфейс. Можно попробовать набрать в терминале несколько строк и запустить.

Самый неудобный в применении из-за трёх напряжений питания, но и самый романтичный из восьмибитных микропроцессоров обрёл новый, виртуальный дом, возможно, и в вашем Arduino. И здесь он уже не так требователен к питанию, но работает ничуть не хуже. Разве это не здорово?

Эмулятор микропроцессора КР580ВМ80

Если кто-нибудь работал с эмулятором 8-ми разрядного микропроцессора КР580ВМ80, то, пожалуйста, если можно ответьте на несколько вопросов.

1. В популярной форме изложите, что такое регистр процессора.
2. Что такое регистровая пара и зачем она нужна.
3. Что такое аккумулятор и для чего он используется.
4. Что такое PWS?
5. Чем отличаются регистры B, C, D, E, H и L.
6. Пожалуйста, в доходчивой форме объясните про форматы команд: однобайтные, двухбайтные и трехбайтные.

Микропроцессор КР580ВМ80 (Эмулятор)
Задание: Даны три числа, уменьшить каждое на 42(decimal). Нужно написать код для ассамблера.

Массивы в РОН (Эмулятор МП КР580ВМ80)
Есть задача : Записать массив из 6 элементов (1,2,3,4,5,6) в РОН. Если элемент масс. >3 то.

[Микропроцессор КР580ВМ80 (Эмулятор)] Даны три числа, уменьшить каждое на 42
Задание: Даны три числа, уменьшить каждое на 42(decimal). Нужно написать код для ассамблера.

Массивы в эмуляторе МП КР580ВМ80
Здравствуйте, подскажите как разработать программу, которая считает количество старших бит.

Вложения

CPU580.rar (14.0 Кб, 1349 просмотров)

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

Я ещё не понял как правильно эти команды читать.
Например: lxi h,0 — это команда 21 LXI H, d16?

И что по этой команде мы записывает в регистровую пару HL? И не понял, почему именно эта команда используется. У нас 60 (3С), зачем ей 16 байт?

Сообщение от alexcoder

Можете более подробно прокомментировать код. Хочется доскональна разобраться.

И останов надо делать в конце программы или он тут сам по себе получается?

Добавлено через 18 минут
Что такое сложение с двойной точностью? Объясните пожалуйста.

Добавлено через 4 минуты
И за чем под 60 мы отводим два регистра? Разве одного не достаточно будет?

Добавлено через 13 минут
И расскажите про флаги. В каких случаях они устанавливаются и что значат.

Добавлено через 6 минут
И не подкинете ссылочку на пример блок-схемы описания подобных алгоритмов. Именно для ассемблеров.

Изучаем цифровую технику

Изучаем цифровую технику

Симулятор учебного микропроцессорного комплекта УМПК-80 позволяет изучить принципы программирования на ассемблере КР580ВМ80.

Установите симулятор на свой домашний компьютер и выполните задания по программированию после изучения моих инструкций:

К странице дисциплины К заданиям по программированию

Эта запись защищена паролем. Введите пароль, чтобы посмотреть комментарии.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *