Проблема с запуском самодельного миниЭВ на TSC80C31 + 74HC573 + SST39FS010A: процессор не отрабатывает переходы и убегае

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Мучитель микросхем
Сообщения: 404
Зарегистрирован: Чт май 07, 2026 00:30:38

Сообщение Zapolyarny »

Ретро - это тоже самое хобби, как и любое другое. А все хобби (в том числе радиолюбительство) странны в той или иной степени. Мне возиться с ретро-электроникой нравится, правда, я пытаюсь её заставить приносить какую-то реальную пользу, модернизируя без необратимого вмешательства и порчи аутентичности.
Реклама
Мудрый кот
Сообщения: 1798
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

Zapolyarny писал(а): Ср авг 19, 2026 14:29:27Ретро - это тоже самое хобби, как и любое другое. А все хобби (в том числе радиолюбительство) странны в той или иной степени.
В своё время у меня тоже был ретро-комп: "Вектор-06Ц". Но его железо я не реинкарнировал. Просто написал эмулятор. Чтобы старые программки позапускать на современном ПК.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15731
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

Отладочный аппаратный симулятор вполне оправдан (тем более при достаточном количестве микросхем по оптовым ценам).
Самодельный порт-расширитель к ПК для собственных нужд также не помешает.
Да и имитатор параллельного ПЗУ ( ещё и с самодельным программатором при возможности) вполне приличная железяка.
А опыт работы с проектированием конструкции с параллельными распределёнными шинами вообще как бы "эксклюзив".
На сегодня то в основном на последовательный обмен упор делается.
Не всем же с проектирования мобильных начинать.
8)
Мучитель микросхем
Сообщения: 455
Зарегистрирован: Ср сен 02, 2015 07:47:20

Сообщение HardWareMan »

jcxz писал(а): Ср авг 19, 2026 14:15:09 снизу вверх: i8080 -> Z80". Если использовать только команды/регистры/флаги, которые есть у i8080, то код должен работать.
Исключаем конечно маргинальный код, использующий недокументированные возможности.
У i8080 нет недокументированных возможностей. Декап показал полное соответствие оригинальному букварю. Пустые места в карте опкодов имеют вполне себе логичные алиасы существующих команд из-за упрощения дешифрации и они тоже известны. Это я с оглядкой на 6502, где есть прямо недокументированные команды которые делают сложные и иногда даже осмысленные действия.
jcxz писал(а): Ср авг 19, 2026 14:15:09 Почему?
Я же написал - исопльзование флага N в Z80. У i8080 этот бит PSW всегда 1. Что по аннотации Z80 означает, что предыдущая команда была вычитанием. Но этот бит i8080 не обрабатывается, поэтому можно миксовать минусы в коде так, что по итогу Z80 будет лажать, исполняя этот код. Собственно, на этом построен автодетект процессора для самопальных компьютеров, куда можно вставить и i8080 и Z80 (например, мой "Специалист МХ2").
jcxz писал(а): Ср авг 19, 2026 14:15:09
HardWareMan писал(а): Ср авг 19, 2026 13:38:47 Ну и единственная общая команда DAA у i8080 корректно работает только после сложения (это результат реверсинжениринга кристалла), в то время как у Z80 она работает корректно после любой операции
И опять-же - в чём противоречие с тем, что я писал? О совместимости снизу вверх.
В том, что эта команда документирована и есть в обоих процессорах. Но исполняется у Z80 в 50% случаев не так, как у i8080, потому что использует вышеупомянутый флаг N. Поймите уже наконец, что нельзя АЛУ запретить использовать флаг N в Z80. И он ломает весь ваш тезис о совместимости. Если же брать код, который либо не использует вычисления, либо спроектирован так, чтобы флаг N не влиял на дальнейшие вычисления, то всё будет работать как надо. Самый простой патч для работоспособности тех же Бейсиков заключается в добавлении команды OR A, которая не делает ничего, кроме сброса флага N, но команда требует 1 байт и не везде её можно вставить в уже собранный код.
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 109
Зарегистрирован: Вс окт 14, 2012 22:04:58

Сообщение jekka »

вот что пишут на просторах и наискано по быстрому
СпойлерФлаг N (Negative) в Z80 нужен не для того, чтобы «понять, отрицательное ли число» в бытовом смысле, а как технический маркер типа операции — чтобы инструкция DAA (Decimal Adjust Accumulator) могла правильно скорректировать результат при работе с BCD‑арифметикой.

В чём суть
Z80 — это развитие процессора Intel 8080, и он сохраняет совместимость с его инструкциями. В 8080/Z80 нет отдельных команд «вычесть в BCD»; есть только ADD и SUB, а после них программист вызывает DAA, чтобы превратить двоичный результат в корректный двоично‑десятичный.

Флаг N как раз и говорит: «эта арифметическая операция была вычитанием».

Для команд сложения (ADD, ADC) флаг N сбрасывается в 0.
Для вычитания (SUB, SBC, CP и т. п.) флаг N устанавливается в 1.

Зачем это нужно в DAA
Инструкция DAA смотрит на флаги и на значение аккумулятора и решает, какую коррекцию применить. Ей важно знать не только про переносы (флаги C и H), но и про то, была ли операция сложением или вычитанием — потому что правила коррекции для этих случаев разные.

Пример: если ты сделал SUB и получил какой‑то байт, DAA должен скорректировать его по правилам вычитания в BCD, а не сложения. Флаг N даёт эту информацию напрямую, без необходимости хранить тип операции где‑то ещё.

Важное уточнение про «отрицательность»
Не надо путать флаг N с понятием «число отрицательное». В Z80 знак числа определяется по старшему биту (бит 7) аккумулятора — для этого есть отдельный флаг S (Sign). Флаг N вообще не про значение результата, он про тип последней арифметической команды.

Именно поэтому в документации Z80 флаг N часто называют add/subtract flag.

Ещё одна причина — совместимость и простота схем
Поскольку Z80 должен был быть обратно совместим с 8080 и при этом оставаться простым в реализации, флаг N — это самый дешёвый способ закодировать тип предыдущей операции в регистре флагов. Это позволяет DAA работать единообразно и предсказуемо, а программистам — не городить лишние проверки.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15731
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

А по исходному вопросу макета на mcs51 пока что...
ТИШИНА (абсолютная).
8)
Кыстати...
У 51й также много вариантов как от производителей, так и развития базового МК - 151 и 251...
Да и расширенный набор команд в нескольких вариантах существует...
Но "преемственность" (заданная рамками лицензии от Интел) гораздо лучше.
:wink:
Реклама
Мучитель микросхем
Сообщения: 455
Зарегистрирован: Ср сен 02, 2015 07:47:20

Сообщение HardWareMan »

jekka писал(а): Ср авг 19, 2026 18:59:57 вот что пишут на просторах и наискано по быстрому
Всё верно. Предполагаю, что его назвали N - Negative потому, что S - Substract назвать нельзя, так как S занято как Sign. Поэтому в букваре пишут что "Negative operation", подразумевая именно вычитание а не сложение.
BOB51 писал(а): Ср авг 19, 2026 17:25:10 Да и имитатор параллельного ПЗУ ( ещё и с самодельным программатором при возможности) вполне приличная железяка.
Я себе все подобные устройства делаю сам по мере необходимости. Вот, например, фотокарточка из архивов НКВД начала нулевых:
Изображение
Тупая схема на регистрах и статическом ОЗУ на LPT порт. Позже были более компактные устройства на ОЗУ, МК и с управлением через COM/USB, поддерживающие скриптовые команды.
Мудрый кот
Сообщения: 1798
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

BOB51 писал(а): Ср авг 19, 2026 17:25:10Самодельный порт-расширитель к ПК для собственных нужд также не помешает.
Зачем?
BOB51 писал(а): Ср авг 19, 2026 17:25:10На сегодня то в основном на последовательный обмен упор делается.
Вот именно. Никакие параллельные расширители - не нужны. Это позавчерашний день. Поделки к ПК нужно цеплять через стандартные последовательные интерфейсы. Или вообще - беспроводно. Без лишних костылей.
Мудрый кот
Сообщения: 1798
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

HardWareMan писал(а): Ср авг 19, 2026 18:24:33Поймите уже наконец, что нельзя АЛУ запретить использовать флаг N в Z80.
Такое использование - вещь настолько редкая, что почти никогда не встречается. Чтобы скопировать PSW через стек, и потом ещё использовать отсутствующие флаги - это и есть "маргинальный код".
Как собственно и DAA - сколько всего писал на i8080 в своё время, но по-моему ни разу её не использовал.

Притягиваете аргументы за уши. :)
Друг Кота
Сообщения: 5405
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий

Сообщение petrenko »

Даник писал(а): Вс авг 02, 2026 23:49:07 микроконтроллера TSC80C31
..
Режим пошагового тактирования
Пардон, но вся данная тема не имеет смысла, ибо :
В классическом оригинальном микроконтроллере Intel 8051 нет встроенного аппаратного режима пошагового тактирования (потактового выполнения команд одной кнопкой «на «живом» кристалле»).
Не , ну просто так поболтать конечно у многих есть потребность.....

Ну и, кстати, что касаемо кода, поелику
Спойлер
Классический микроконтроллер i8051 имеет 5 основных источников аппаратных прерываний.
Для каждого из них в памяти программ выделена фиксированная точка входа (вектор прерывания), отстоящая от предыдущей на 8 байт.
При срабатывании прерывания процессор переходит по соответствующему адресу.
Таблица векторов прерываний i8051
0000H — Сброс (Reset / Аппаратный сброс)
0003H — Внешнее прерывание 0 (INT0)
000BH — Переполнение таймера 0 (Timer 0)
0013H — Внешнее прерывание 1 (INT1)
001BH — Переполнение таймера 1 (Timer 1)
0023H — Последовательный порт (UART — прием/передача
, то лучше сразу с ORG 0000H cделать SJMP START
а сам START сделать .. ну с 002BH например ..
ORG 002BH
START:
;<какой-нибудь код>
SJMP START
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Контактная информация:
Мучитель микросхем
Сообщения: 455
Зарегистрирован: Ср сен 02, 2015 07:47:20

Сообщение HardWareMan »

jcxz писал(а): Ср авг 19, 2026 23:09:47
HardWareMan писал(а): Ср авг 19, 2026 18:24:33Поймите уже наконец, что нельзя АЛУ запретить использовать флаг N в Z80.
Такое использование - вещь настолько редкая, что почти никогда не встречается. Чтобы скопировать PSW через стек, и потом ещё использовать отсутствующие флаги - это и есть "маргинальный код".
Как собственно и DAA - сколько всего писал на i8080 в своё время, но по-моему ни разу её не использовал.

Притягиваете аргументы за уши. :)
Ох, я сдаюсь. Но всё же скажу для остальных читающих эту ветку. Моя цитата выше в этом посте относится к АЛУ Z80. Естественно, что в АЛУ i8080 нет никакого флага N и не надо ничего там копировать PSW через стек. Соответственно, одинаковые для обоих процессоров команды выполняются на i8080 не зная ничего об N, но стоит эту же последовательность команд начать запускать на Z80 так сразу появляется влияние флага N, который у Z80, ВНЕЗАПНО, есть! И дело не только в DAA. Ну да ладно, я уже выводы все сделал, думаю что читатели тоже. На этом выхожу из темы.
Друг Кота
Сообщения: 5405
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий

Сообщение petrenko »

HardWareMan писал(а): Чт авг 20, 2026 14:25:41 относится к АЛУ Z80.
. На этом выхожу из темы.
Hy логично, тема то об TSC80C31

А об z80 и 8080 можем побеседовать в соответствующей ежели желаете
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Контактная информация:
Мудрый кот
Сообщения: 1798
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

petrenko писал(а): Чт авг 20, 2026 14:20:17Пардон, но вся данная тема не имеет смысла, ибо :
В классическом оригинальном микроконтроллере Intel 8051 нет встроенного аппаратного режима пошагового тактирования (потактового выполнения команд одной кнопкой «на «живом» кристалле»).
Кто вам такое сказал? Открывем даташит, читаем в самом его начале:
The fully static design of the TSC80C31/80C51 allows to reduce system power consumption by bringing the clock frequency down to any value, even DC, without loss of data.
Видите "even DC"? А значит можно полностью остановить тактирование МК. И подавать отдельные клоки хоть с кнопки. Это и будет "пошаговый режим". Что ТС и делает.
Мудрый кот
Сообщения: 1798
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

HardWareMan писал(а): Чт авг 20, 2026 14:25:41 Естественно, что в АЛУ i8080 нет никакого флага N и не надо ничего там копировать PSW через стек. Соответственно, одинаковые для обоих процессоров команды выполняются на i8080 не зная ничего об N, но стоит эту же последовательность команд начать запускать на Z80 так сразу появляется влияние флага N, который у Z80, ВНЕЗАПНО, есть! И дело не только в DAA.
Так может расскажете: на какие именно команды, имеющиеся у i8080, влияет этот несуществующий в i8080 флаг, о коем вы так печётесь?
Несёте откровенную галиматью. Как может флаг на что-то влиять, если его нет?
Единственное его влияние - этот как раз если скопировать PSW через стек. Но если "не надо ничего там копировать PSW через стек", то он ни на что и не повлияет. Так как его попросту нет.
Друг Кота
Сообщения: 5405
Зарегистрирован: Вт фев 21, 2012 13:51:55
Откуда: Начинающий

Сообщение petrenko »

jcxz писал(а): Чт авг 20, 2026 14:52:43 :
The fully static design of the TSC80C31/80C51 allows to reduce system power consumption by bringing the clock frequency down to any value, even DC, without loss of data.
Видите "even DC"? А значит можно полностью остановить тактирование МК. И подавать отдельные клоки хоть с кнопки. Это и будет "пошаговый режим". Что ТС и делает.
Да, перечитал ещё раз внимательнее, согласен с Вами, данная модель отличается от "классического оригинального" и получается "шаговый" режим возможен через нетактирование.
Однако тогда получается лучше к тактильной кнопке окромя триггера_Шмита прикошачить одновибратор чтоб получить желаемый чёткий тактовый импульс - как вы считаете ?
< виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Контактная информация:
Ответить

Вернуться в «Разные вопросы по МК»