Микропроцессор КР580ВМ80А (i8080)

Предыдущая тема Следующая тема Перейти вниз

Микропроцессор КР580ВМ80А (i8080)

Сообщение  Viktor2312 в Чт Окт 01 2015, 22:55

Полезная, цветная табличка. Скачать Intel_8080_OPCODES.rar


Размещу ещё тут вот такую табличку, с системой команд микропроцессора КР580ВМ80А, красочная, красивая, полезная:


Система_команд_КР580ВМ80А

Картинка кликабельна.


Последний раз редактировалось: Viktor2312 (Пт Апр 01 2016, 12:40), всего редактировалось 1 раз(а)
avatar
Viktor2312
Гуру+

Сообщения : 10468
Дата регистрации : 2012-08-10
Возраст : 38
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Микропроцессор КР580ВМ80А (i8080)

Сообщение  Viktor2312 в Сб Дек 19 2015, 23:56

Хорошая книжка по программированию на ассемблере:

Скачать Левенталь Вар.1
Скачать Левенталь Вар.2
Скачать Левенталь Вар.3

Ещё одна, неплохая:

Скачать Гудыменко Вар.1
avatar
Viktor2312
Гуру+

Сообщения : 10468
Дата регистрации : 2012-08-10
Возраст : 38
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Микропроцессор КР580ВМ80А (i8080)

Сообщение  barsik в Чт Сен 14 2017, 16:38

Viktor2312 пишет:табличка... красочная, красивая, полезная
А точнее - красочная, красивая и... бесполезная.

От этой таблички польза, если найдётся кто-то ненормальный, кто решит программировать в машинных кодах. Для реального использования нужна другая табличка, в которой были бы приведены флаги изменяемые конкретной командой и число машинных тактов. В журнале РАДИО такой таблички не было опубликовано. Не знаю, где найти такую таблицу для КР580, может быть в иностранном даташите. Но можно пользоваться аналогичной табличкой для Z80, если помнить о разном числе тактов команд и отличии в работе флага PARITY.

Ещё в этой теме полезно привести информацию о работе 12-ти недокументированных команд КР580 (кодов команд 244, а всего кодов 256). Эти команды очень хорошо себя зарекомендовали в борьбе с пиратами и кракерами, т.е для защиты кодов программ от модификаций.

На заре компьютеризации были такие придурки, которые находили в дампе программ титры автора и заменяли их на что-то своё и это называлось у них "кракнуть" программу. Такие деяния почему-то были популярны. Но когда некоторые программы специально защитили от модификаций, эти идиоты ничего не смогли сделать. А также кракнуть грамотную МГ-защиту от копирования также никому не удалось. Впрочем МГ-защиту в этом случае просто "обходили", используя слепок ОЗУ. Но вот защиту кода от модификаций без трудоёмкого крака сломать невозможно.

Относительно КР580 интересна тема оверклокинга. По моим данным КР580 без проблем работает на 3.5 МГЦ, даже без принятия каких либо мер. Лишь бы шина была не перегружена и дешифратор был серии 1533. Подняв питание до 5.25 В можно использовать КР580 и на такте 4 МГЦ, однако это требует наличия большого и медного радиатора. Вообще КР580 устойчив к перегреву, работает при температуре ~100'C, когда он разогрет так, что почти самовыпаивается из платы.


Последний раз редактировалось: barsik (Пн Окт 09 2017, 17:10), всего редактировалось 1 раз(а)
avatar
barsik
новичёк

Сообщения : 67
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Микропроцессор КР580ВМ80А (i8080)

Сообщение  Viktor2312 в Чт Сен 14 2017, 18:12

barsik пишет:От этой таблички польза, если найдётся кто-то ненормальный, кто решит программировать в машинных кодах.

Ну, смотрите на меня, смотрите, вот он я, тот не нормальный, кто это делает, так ещё и от этого получает удовольствие...
avatar
Viktor2312
Гуру+

Сообщения : 10468
Дата регистрации : 2012-08-10
Возраст : 38
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Есть ли польза от недокументированных команд?

Сообщение  barsik в Пн Окт 09 2017, 08:49

В микропроцессоре КР580 (насчёт Intel 8080 не знаю) имеются недокументированные команды. Из 256 возможных кодов 244 кода документированы в РТМ и исполняются как команды. А про 12 оставшихся кодов в документации ничего не указано. Логично предположить, что эти коды совсем недопустимы (например, в процессоре 6502 недокументированные команды вызывают завис). Но в КР580 это не так. Отечественные любители открыли, что эти 12 кодов в КР580 дублируют команды из основного набора команд, в частности NOP, JMP и CALL. Таким образом у КР580 есть три альтернативные команды NOP, JMP и CALL.

Первыми эти недокументированные команды КР580 в 1988 обнаружили и стали использовать пионеры компьютеризации Лукин и Титков из КООП "SP-580" для защиты от копирования программ СПЕЦИАЛИСТА. Это сработало потому что, во-первых, никто не знал о таких командах, а во-вторых, отладчики и дизассемблеры сбивались при этих командах, что затрудняет крак.

Впрочем, МГ-защита в программах КООП SP-580 была слабой. А вот защиты программ некоторых других программистов с использованием того же принципа никто не сумел сломать до сих пор, даже в эмуляторе. Для защиты программы от модификации одновременно используется контроль на целостность кода и запутанность самого кода с использованием недокументированных команд (что исключает использование отладчика - требуется очень трудоёмкий анализ на уровне машинных кодов, причём код программы специально запутан). Заменить байты на документированные нельзя, т.к этот код не только прогоняется, но ещё и хитрым способом проверяется на немодифицированность. В итоге, оказываетчя проще написать свою аналогичную программу с нуля, чем пытаться взломать чужую.

О недокументированных командах стало известно в 1989, когда кракеры в процессе взлома МГ-защит коммерческих программ для СПЕЦИАЛИСТА, обнаружили эти команды. Долгое время эта тайна держалась в большом секрете, но в середине 80-тых эта информация стала известной многим пользователям ОРИОНА.

В базовых отечественных компьютерах, кроме как для вредительства, использовать эти команды нельзя. Однако при несложной доработке схемы, можно всё-же получить пользу. В многих отечественных компьютерах сдуру применено слишком маленькое ПЗУ, что не позволяет разместить там много подпрограмм. Особенно это фатально для ОРИОНА, где в крошечное ПЗУ невозможно уместить поддержку богатых графических возможностей. Из-за этого системные программы ОРДОС имеют убогий дизайн.

Т.к всё адресное пространство CPU занято, то расширять ПЗУ можно только за счёт его включения в участке памяти вместо ОЗУ с помощью хитроумного диспетчера памяти. Используя недокумментируемые команды можно сделать процесс включения/отключения "теневого" ПЗУ без специально программно управляемого диспетчера ОЗУ.

Команда JMP имеет код C3. Однако недокумментированный код CB делает то же самое. Потому схему можно изменить так, чтобы при чтении кода команды CB происходило автоматическое переключение конфигурации (например, включение в адресах 0000...7FFF теневого ПЗУ). Процессор КР580 специально для таких целей в слове состояния по биту D5 выводит флаг, что идёт чтение команды. Защёлкнув D5 по SYNC на триггере получаем сигнал М1, сигнализирующий о том, что на шину читается код команды. Добавив схему совпадения на код CB (удобнее всего на 556 РТ4) и триггер ТМ2 формирующий сигнал ROM_ON, при выполнении альтернативной команды JMP (с нестандартным кодом CB), включение доп.ПЗУ будет происходить автоматически. Разместив в ОЗУ выше 8000 табличку входов, например F300, F303, F306..., по вызову этих входов, ПЗУ будет включаться автоматически. Для этого на адресах F300, F303, F306 вместо стандартной команды JMP с кодом C3 должны стоять альтернативные команды JMP, т.е байты CB, за которыми следуют адреса исполнительных частей подпрограмм в дополнительном ПЗУ. Для отключения ПЗУ, выход из подпрограмм в доп.ПЗУ делается на одну точку (например в ПЗУ F800), где стоят лишь две команды STA FB00 и RET. Сигнал строба по STA FB00 в схеме ОРИОНА есть. Достаточно завести его на вход R триггера ROM_ON. Тогда отключение ПЗУ также происходит автоматически при возврате из п/п-ммы в теневом ПЗУ. Можно для этих целей использовать альтернативный RET (D9), но это невыгодно, т.к деталей больше.

Для программ это выглядит так, как будто прямо в адресное просторанство добавлено 32 кб ПЗУ, причём оно совершенно не мешает программам (как будто процессор адресует не 64 кб, а 96). При нужде аналогично можно использовать альтернативные команды CALL с кодами DD, ED и FD. Это, например, позволит автоматически включать три банки ПЗУ. Т.е, если вставить в программу, например, CALL с кодом DD, то включается одно ПЗУ, а с кодом ED - другое ПЗУ, с кодом FD - третье ПЗУ. А альтернативные команды NOP можно использовать для управления однобитовыми портами. Например, код 08 устанавливает бит, а код 10 сбрасывает. Причём, если для выделения кода альтернативной команды используется 556 РТ4, то число деталей даже не растёт.

Применения альтернативных кодов можно найти и для РК86. Например, можно точно также использовать альтернативный JMP для автоматического включения дополнительного ПЗУ. Например, чтобы часть стандартных подпрограмм ПЗУ F800 перенести в доп.ПЗУ. Тогда на входах F803, F806, F809... код C3 меняем на CB, отчего при вызове этих п/п-рамм будет переход в доп.ПЗУ (установленное например на 8000...BFFF). Можно так же автоматически переключать в окне 0...7FFF ОЗУ, если оно на 565 РУ5. Например, альтернативный JMP (CB) включает в этом окне вторую "невидимую" полубанку из РУ5. Сделав в ПЗУ подпрограммы F836/39 для чтения и записи байта из "теневой" полубанки, без изменения архитектуры получается дополнительные 32 кб для данных.

_________________
***
avatar
barsik
новичёк

Сообщения : 67
Дата регистрации : 2016-11-10
Откуда : 600 км от Москвы

Посмотреть профиль

Вернуться к началу Перейти вниз

Re: Микропроцессор КР580ВМ80А (i8080)

Сообщение  Спонсируемый контент


Спонсируемый контент


Вернуться к началу Перейти вниз

Предыдущая тема Следующая тема Вернуться к началу


 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения