Pull to refresh

Comments 91

Я вот недавно узнал, что Z80 не полностью совместим с 8080 "снизу вверх", как это мною ожидалось: проблема во флаге переполнения и ещё чем-то там в регистре флагов. По этой причине не всякий код, написанный для 8080, будет корректно выполняться на Z80, хотя основная масса таки будет.

Ну, плюс та проблема со звуком, которая описана в статье и которую нужно решать костылём :) В общем, я бы, если б стал такое делать, взял бы всё-таки 8080 (КР580ВМ80А) -- благо, их вполне можно купить. Но, насколько понял, тут работал принцип "я тебя слепила из того что было" -- что тоже имеет право на существование, конечно.

Все так. Но я не взял 8080 прежде всего из-за сложности трехполярного питания. Можно было использовать 8085, но раз уж не родной процессор, то уже какая разница какой?

В плане системы команд 8085 и 8080 совместимы полностью, а вот насчёт вывода INTE не помню, а смотреть даташит лениво :)

Поскольку у Вас не было цели собрать комп, которым потом можно активно пользоваться, Ваш подход представляется вполне разумным. Вот если б Вы хотели в дальнейшем им пользоваться подобно реальному Радио-86РК, что предполагает использование существующих программ, которых, всё же, не так уж мало (это по сравнению со "Спектрумом" их мало) замена 8080 на Z80 была бы ошибкой как раз в силу неполной совместимости: мало ли что начало бы выползать, и поди разберись, в чём дело...

Ну а три питания... Да, определённые проблемы сие доставляет, хотя вполне решаемые: преобразователей сейчас пруд пруди на любой вкус и цвет. "Тогда" с этим посложней было, на самом-то деле, особенно с питанием -5 В: импульсный преобразователь на рассыпухе соорудить затратно, а для линейного необходима отдельная обмотка трансформатора (как, собственно, и делали).

Я больше скажу. То, что я сделал встроенный режим VGA, потенциально делает невозможной работу программ, которые используют для разных эффектов перенастройку ВГ75. Я таких не встречал, но читал, что они были.

Некоторые программы у меня не запустились. Я в таких случаях проверял их на эмуляторах, и там они тоже не работали. Пожно пофантазировать почему. Если судить по общению в ркашных некрочатах, то Z80 очень даже успешно применяли. Обычно чтобы разогнать машину, потому что из-за той же ВГ75 ЦПУ очень часто тормозится и много времени просто ждет когда память освободится.

Какие-то программы точно должны были при этом не работать, но сделать версию под Z80 было не сложно.

есть предположение, что не завелись программы, которые недоадаптировали от Микроши, я такие очень часто встречал. а про РК-шку на Z80 я видел только разговоры, в железе так никто и не решился сделать. не знаю, на каких эмуляторах запускались программы, но эмулятор Виктора Пыхонина и мой весьма точно эмулируют РК-шку, всю её периферию и тайминги.

Тогда" с этим посложней было, на самом-то деле, особенно с питанием -5 В

Любопытно, почему для странного питания не использовали charge pump. Это проще чем специальный транс

Потому что их тогда не было в готовом виде, и пришлось бы собирать на рассыпухе. Кроме того, напряжение -5В могло понадобиться (не для Радио-86РК, а вообще) и для других целей, где ток будет уже повыше -- скажем, для преобразователей уровней ТТЛ в уровни RS-232.

собирать на рассыпухе

2 диода 2 конденсатора и 155ла3 ;)

Потому что тогда использование charge pump было странным, а -5в обычное дело. В первоначальной версии 16кб было сделано на 565РУ3, которым тоже надо -5в.

Трехполярный преобразователь хорошо был реализован на "Орионе-128", другом динозавре тех лет

Честно говоря я был удивлен тем фактом, что Z80 на столько совместим с i8080, что можно перепечатать бинарный код из журнала для одного микропроцессора и почти безболезненно запустить на другом. :-) Я всегда считал эти два микропроцессора плохо совместимыми, а код при переносе требует модификации, причем на уровне ассемблера. Ведь есть даже утилиты для этой цели.

Когда-то я начинал изучать машкод на ZX Spectrum, имея под рукой книжку от Радио 86РК, набивая программки через POKE. Я тогда даже не подозревал, что процессоры в принципе как-то отличаются друг от друга, и так как Z80 может то же самое, что и 8080, у меня всё работало.

Аналогично. В 88-89-м году я ходил в кружок программирования и у нас появились Atari 800. Никто не знал как с ними обращаться. Из инструментария только встроенный BASIC с командой POKE (позже появился дисковод и дискеты с MAC). Из мануала на Atari выяснили, что у него процесор MOS 6502. Кто-то нам подсказал, что такой же проц устанавливается в ПЭВМ Агат. Мы разжились документацией по "агатовскому ассемблеру" и давай прогать через POKE на Atari по этим мануалам. :)

Та же история с Агатом, но у меня был Atari 65XE, изучать через POKE видеоадаптер и звуковой процессор было очень круто т.к. видеоадаптер был крутой, цветной, со спрайтами, бегущими строками и кучей режимов, а звуковой процессор многоканальный, с генераторами и банками звуков.

Z80 и 8080 одинаковы. За исключением расширенных команд, которых нет в 8080. Так что если программа не использует эти расширенные команды, то она будет работать. В Z80 немного расширили команды, введя например относительные переходы, что позволяет работать программе без привязке к адресации. И еще сделали 2 комплекта регистров. То есть Z80 это типа 8080MMX. И он будет работать вместо 8080, а вот наоборот не всегда.

UFO landed and left these words here

Вот я тоже помню, что у Z80 4-х битное АЛУ и операции в нём требуют большего числа тактов, что должно было как-то отпечататься и на программной стороне вопроса. Спасибо за разьяснения. Как говорил Поручик - "век живи, век учись". ;)

UFO landed and left these words here

Число тактов немного разное, но в обратную сторону. INC r и LD r,r на 8080 пять тактов, на Z80 четыре. На Z80 вообще нет пятитактовых операций, а на 8080 есть.

UFO landed and left these words here

Я могу судить по количеству тактов только по справочникам, так как сам их не измерял, и кристалл не разбирал. В справочниках издревле такие вот таблички без расписания машинных циклов, где мне и бросилось в глаза различие по тактам. А по факту что, они не соответствуют действительности, или всё-таки в расчёте времени выполнения можно ими пользоваться? (кстати, только сейчас вспомнил, что по ним INC r8 и INC r16 занимают по 5 тактов, а на Z80 это 4 и 6).

(страница из 8080 Programming Manual от Intel, 1975 года)

UFO landed and left these words here

В копилку:

У Кена Ширриффа есть статья про устройство АЛУ на Z80 по декапнутым снимкам, но без таймингов. Из схемы видно, что почти все инструкции на Z80 идут через АЛУ и влияют на флаги.

В Википедии прочел, что Z80 тоже активно использует overlap по времени выполнения инструкций. Зачатки конвейеризации ? ;-)

UFO landed and left these words here

Я тоже так думал, а оказалось, что есть несовместимая разница во флагах. Вот регистр флагов 8080 из интеловской доки:

А вот он же для Z80:

У 8080 бит 2 -- всегда чётность, а в Z80 в зависимости от команды там либо чётность, либо переполнение. Соответственно, в определённых ситуациях программа, успешно работающая на 8080, не будет работать на Z80. Почему для переполнения они не использовали остающиеся без дела разряды 5 и 3, непонятно.

Так вроде в Z80 еще были команды управления циклами. То есть одна команда делала сразу две вещи: декрементировала регистр счетчика, и если получался не ноль, происходил прыжок на начало цикла. В 580 такого не было. И еще были регистры  IX и IY, которые предполагались для работы с массивами.

Тут как раз все совместимо снизу вверх

Как уже правильно отмечено, эти команды и регистры не нарушают совместимость снизу вверх: они не меняют поведение процессора для тех команд, которые уже существовали, а добавляют новые возможности. А вот использование бита 2 как индикатора переполнения или внесение изменений в команду десятичной коррекции разрушает совместимость, поскольку программы, написанные для 8080, полагаются на строго определённые правила формирования результатов выполнения используемых ими команд, а нововведения в Z80 приводят иногда к получению других результатов.

Круто! Сначала отнёсся к материалу скептически из-за оформления, но по содержанию оказалось, что проект весьма годный. Но особенно впечатлила информация про существование в продаже макеток формата A4. Как говорится, дайте две.

Но особенно впечатлила информация про существование в продаже макеток формата A4.

Формально это на А4. А4 - это 210*297, здесь - 200*300. Извините за душноту

Всё равно заказал! Но в рамочку для диплома такую плату красиво не вставишь, это да.

Так вроде самый простой был "Специалист", в Моделисте-Конструкторе вроде печатали...

У него 52 микросхемы, если верить оригинальной схеме. почти в два раза больше. Но и огромный плюс - нет той самой 580ВГ75, которая экономит корпуса. Говорят, что ее было очень сложно купить. Я конечно не знаю. Сейчас купил без проблем за копейки по сути.

Да, в те времена ВГ75 была одной из самых дефицитных. Хотя года эдак до 87-88 честно купить вообще практически ничего нельзя было из цифровой электроники, даже рассыпуху 155-й серии проблематично (может, через Посылторг что-то и можно было, и то под вопросом, ну а в магазинах радиодеталей -- только лампы, транзисторы, небольшое количество аналоговых микросхем -- и всё). Поэтому все ранние компьютеры, включая Микро-80, были собраны, по сути, на ворованных деталях. Ну, коммунизм же, "всё вокруг колхозное -- всё вокруг моё" :) В общем, в тех условиях собрать Специалист действительно было проще: украсть нужные микросхемы 155-ю серии можно было практически на любом вычислительном центре, проц и КР580ВВ55 тоже уже встречались достаточно часто в промышленных изделиях, а значит, бывали и в ЗИПах тех предприятий, где эти изделия использовались, а вот ВГ75... Я его встречал вживую, если не ошибаюсь за давностью лет, только в терминалах СМ-7209, причём они польского производства, и ЗИПа к ним не было никакого -- впрочем, они никогда и не ломались.

а вот ВГ75...

30 советских рублей на Шаболовке "с рук" примерно в 87г, но мы были пионерами ещё, не понятно, что бы нам продали.

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

"с рук", как Вы пишите

Да, я долго подбирал нейтральное выражение.

Некислыми вы были пионерами, раз в 87 году у вас 30 рублей на руках имелось.

Это было очень много! И конечно таких денег не было.
Друг мог покупать по 1 фирменной кассете не каждый месяц за 4.50руб и за столько же записывать в студийке. И это было сразу как бы ощутимо - можно было послушать. А тут одна только микросхема и неизвестный результат, да и мы тогда в глаза этих компов не видели, непонятно что бы с ним делать. Хотя я собирался получить интернет packet radio :) Оставалось бы только заполучить радиостанцию :)

Не все воры - радиолюбители, но все радиолюбители - воры. Поговорка из 80-х)

UFO landed and left these words here

Самый простой компьютер это югославский Galaksija, схема которого была напечатана в одноимённом журнале. Ну по крайней мере я ничего проще не видел.

UFO landed and left these words here

Ну дык и в Специалисте тоже, да и много где. А сделать можно не только VGA, можно хоть 4К -- вопрос только в том, сколько проц всё это отрисовывать будет :) Поэтому лично я, если б проектировал комп на 8080, ограничился бы чисто текстовым режимом (для бытового компа это не очень-то приемлемо, но меня аркадные игры никогда не привлекали, а более-менее приличные стратегии или симуляторы, как и стрелялки и прочие РПГ, стали возможны лишь на железе совсем другого уровня).

UFO landed and left these words here

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

Что же до этого компа... Как по мне, это уже вообще ничем не оправданное извращение.

UFO landed and left these words here

блин. это Корвет, да? нет, я понимаю, когда мы использовали "зеленые" кондёры в своих "Ленинградах" - что купил у барыг на таганрогском "радиоцирке" то и впаял (до начала эры приема металлов они стоили как обычные)... но что и в промышленном изделии дорогие высокоточные платиносодержащие "каэмки" тоже ставили как фильтры по питанию - ёпрст, ну слов нет.

UFO landed and left these words here

а что за микросхемы под радиаторами?

UFO landed and left these words here

Так изображение ещё в ZX-80 формировалось. Минимализм.

Когда у меня был Микроша (тоже клон Радио-86РК), у меня был знакомый взрослый дяденька, который сделал свой компьютер вообще без шрифтов.

У него был самодельный дешифтратор, который как-то преобразовывал код символа в телевизионную развертку. Ну то есть в самом коде символа содержался внешний вид символа! Нечто вроде визуализации 7-сегментного индикатора на телевизоре на одном знакоместе. Возможно у него были и полу-символы, чтобы показать левую и правую части буквы.

Естественно, таблица символов была ни с чем не совместима.

Даже не слышал раньше про такой. Посмотрел по вашей ссылке, действительно очень простой.

Присоединяюсь, "Специалист", ПМСМ и по совокупности потребительских свойств - лучший. Мог бы просто плюсик поставить, но для этого не хватает кармы, а вот чтобы написать "Присоединяюсь", её достаточно. Ну не парадокс ли? Есть ещё одно ограничение - не более одного комментария в час... Жду.

А кто-то таки отреверсил «Дон» или этот раритет сгинул в безвестности? Партии очень маленькие были, вроде смутно помню, в одном «кроватки» для расширения памяти были, а в другом — уже не было…

У меня только кассета осталась, ХЗ, можно ли там что-то разобрать, кроме «БЕЙСИК! (на заднем плане: „…хорошо ж те в рубашке…“) ПИИИИИИИИпжжжжжжжжжж…»

На «Саннате» целая одна штука нашлась, ХЗ куда уехала, правда.

Спасибо за статью!)
И особенно за цвет на мониторе - я такой в ssh выставляю:)
Особо хочется отметить усилия по раскидыванию навесного монтажа, у меня такое больше 5-10 перемычек превращается в не поддерживаемую паутину, поэтому даже для макета - только плата!

UFO landed and left these words here

В серии MAX3000A - только один вариант PLCC, на 44 вывода.

Я не погружался в неважные детали, но имел в виду, что у меня есть ЕРМ240 в корпусе на 100 выводов. Что-то заказывать и ждать около месяца было не интересно.

UFO landed and left these words here

В тексте, вроде, EPM3032A.

UFO landed and left these words here

В чем проблема? Даташиты посмотрите. Вполне совместимо по уровням.

Ещё надо за токами следить, чтоб не превысить. Но в простых случаях проблем, как правило, не возникает.

если бы у них были микросхемы SRAM как у меня, вышло бы тоже около 20

можно было использовать контроллер RAM из той же серии, хотя не уверен, был ли наш аналог

Благодарю за статью!

Очень интересно, как и комментарии коллег, которые появились благодаря статье :)

Отсутствие очистки ОЗУ при нажатии кнопки сброса считается одним из преимуществ РК. А вы сделали, чтобы очищалось?

Нет. Но первые три байта перезаписываются. Это можно было легко обойти просто еще одной кнопкой сброса чисто на ЦПУ, но я ее не стал делать - нужды не ощутил. Сейчас у меня сброс сбрасывает микроконтроллер STC, тот готовит ОЗУ - записывает туда код монитора и те три байта, а потом ресетит ЦПУ.

Лучше сделать эту кнопку. Удобная функция. Прочитал программу с кассеты, запустил. Что-то сделал. Программа зависла. Нажал сброс, запустил снова. На Спектруме для такого надо программу заново с кассеты читать, а на РК вот так просто и непринуждённо.

Программа зависла. Нажал сброс, запустил снова

После того как программа зависла - в памяти может быть абсолютно что угодно. Например, ушла в бесконечную рекурсию и везде теперь останки стека. Смысл это сохранять?

А может и оказаться нормально. Возможность это проверить не помешает.

Запускаем программу -:она зависает. Что будет, если запустить её ещё раз? (хм. надо подумать.. неужели починится?)

UFO landed and left these words here

Ну, во-первых, такое бывает. В официальной доке на ОС ЕС, в девичестве OS/360, на половину сообщений об ошибках первая рекомендация -- повторить задание или перезагрузить систему и повторить задание :)

Но ценность сохранения ОЗУ -- и в возможностях для отладки. Прога зависла, но, если ты разработчик, ты можешь из монитора или что там у них в ПЗУ лежит глянуть, что творится в памяти, не вылез ли стек за границы и т.д. и т.п.

В общем, смысл в сохранении всё-таки имеется.

Ну и повиснуть могло по разным причинам. Например, по питанию помеха приехала. На процессор повлияла, на ОЗУ - нет.

Когда пишешь длинную прогу на ассемблере на 8080 или z80, и это делаешь путём ввода каждого байта с клавиатуры, вероятность ошибки растёт по мере роста программы. И вот ты такой ввёл несколько килобайт данных, запускаешь.... И тут хопа! Зависание! ААААААА! ВСЁ ЗАНОВО ВВОДИТЬ!

И вот тут как раз охрененнвй плюс сброса без очистки памяти. И можно проверить код, поискать ошибку и прочее.

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

В спектруме мне пришлось даже пзу перепрограммировать и добавить сброс без чистки памяти(реализовал сброс прерыванием с адреса 8).

У меня с этим проблем нет. Только первые три байта надо будет восстановить.

О... Радио-86РК ) Это мой первый компьютер))

Для него написал пакет 3-х игр. Конечно, на ассемблере. Причем ОЗУ у меня было 16 Кб. Все в память не помещалось.

Исходники, конечно, канули в лету на кассетах. Сами игры, наверное, тоже. Хотя они ходили в народе, переписывали друг у друга. Назывались "Сокровища и чудовища", "Невидимый лабиринт"... А третей даже название не помню. Кажется, что-то типа гонок-стрелялок в стиле Атари. Вдруг у кого-то осталось)

хотелось бы увидеть код программирующий вг75

инициализация видео
инициализация видео

Это скрин с кода на ассемблере. Мои параметры для VGA режима указаны как комментарий. 4 других байта. Я конечно не пересобирал монитор из исходников, а просто нашел это место в коде и поменял байты. Это было не сложно. Важно, что при этом на ВГ75 должна подаваться частота синхронизации примерно 25.175 / 8 = 3.15 МГц. Иначе VGA не получится.

UFO landed and left these words here

Да. Там два регистра на прием. Команд и праметров. Сначала пишется команда 0 по адресу С001 - это команда "сейчас будут настройки", потом декремент указателя и идут параметры команды (4 штуки) в адрес С000. Потом инкремент указателя и команда 27 по адресу С001. Это запуск. Параметры в самой команде. Дальше (уже не видно на скрине) в цикле чтение регистра состояния и там проверка флага конца кадра. Как только кадр закончится, и начнется обратный ход луча по кадру, будет инициализация и запуск ПДП. Потом уже пойдет картинка.

Получается, что Радио-86РК воспроизводил звук флагом запрещения прерываний?! Жёстко.

Справедливости ради, это не местное изобретение, оно пошло ещё с IMSAI 8080.

UFO landed and left these words here

Такое решение лишило их возможности использовать прерывания в будущих версиях компьютера.

А однобитный звук – такое дело, что торопиться особенно некуда, могли бы порты ввода-вывода без проблем дёргать.

С другой стороны, конечно, будущих версий и не было.

UFO landed and left these words here

Да и качество звука с ножки прерывания было ужасающим. Меандр не получить

Да не такое уж и ужасающее. Можно сделать и меандр, и три импульсных канала, как на ZX Spectum. Софт из видео в 80-х был перетащен на РК86, называется там «Музыкальная система»: https://www.youtube.com/watch?v=1FDigtF0dRQ

UFO landed and left these words here
Sign up to leave a comment.

Articles