Comments 14
И Z80, и 6502 считают первые 256 байт памяти особой областью и хотят использовать её для выполнения разных задач.
вот здесь корявенько. можно сказать что в начале памяти находиться неперемещеаемая таблица векторов прерываний и начинается исполнение кода. но в том же zx spectrum от нее используются считанные байты,
В CP/M установлен процессор 8080
Вспоминаю, что CP/M - это ОС. Как в ОС может быть установлен процессор?
Однако нельзя оставлять 6502 на паузе слишком долго: его внутренние регистры могут деградировать и утерять свои значения.
Кто-то может объяснить, это такой перевод корявый или в 6502 действительно была какая-то фундаментальная проблема с этим?
Скорее всего у ранних 6502, изготовляемых по nMOS-технологии, регистры были устроены приблизительно так же, как и динамическая память и так же нуждались в регенерации.
Нет, ни у ранних ни у поздних 6502 такого не может быть. Это или опечатка или корявый перевод.
Где-то я натыкался на сравнительный анализ оригинального MOS 6502 и CMOS-верии, выпущенной позже и другой фирмой. Там как одно из преимуществ КМОП-варианта подавался как раз "полностью статический дизайн", для которого понятие минимальной тактовой частоты теряло смысл, т.к. регистры не нуждались более в регенерации. Но вообще да, там речь шла именно о снятии ограничений по тактированию, тогда как агрегахтунг из этой статьй тактированием 6502, кажется, не управлял, а просто захватывал шину...
Статический дизайн и память на конденсаторах - разные вещи. Никогда, вроде бы, регистры процессора не делали на конденсаторах. В этом просто не было необходимости. Они не так много места занимают чтобы начать на этом экономить, а вот гемора с регенерацией - выше крыши.
Динамическая природа, как пишут, обусловлена другими элементами конструкции процессора, например, предварительно заряженными шинами — базовой мерой для ускорения работы NMOS-схем.
Речь именно о динамических триггерах. Например, в nMOS микроконтроллерах 8051 - тоже было ограничение по минимальной тактовой частоте.
ну как пример конденсатор "сам по себе" разряжается, а чем ему не держать заряд вечно пока не потребуется. но обычно это проблема динамического ОЗУ
В Радио86РК регенерацией ОЗУ занимался контроллер прямого доступа к памяти, который на время тормозил процессор и пересылал данные в контроллер вывода текста на экран.
Но если нужно было писать программу с жесткими таймингами - то приходилось для этого останавливать ПДП, но тогда были шансы что память деградирует . Поэтому сделал для Радио86РК аппаратную регенерацию памяти , о чем была статья в свое время в журнале "Радиолюбитель 12/92" https://www.radioliga.com/RL_91-95/2.2.htm
Вполне стандартное решение для тех лет . оно использовалось для расширения памяти больше 64к для восьми битных процессоров, использовалось для перенаправления вектора сброса процессора и многого другого.
Мне как бывшему пользователю Агата, эта история очень и очень интересна.
Подумал о таком вопросе совместимости: на железе Агата/Apple II дисковая подсистема использовала программное кодирование/декодирование GCR, в отличие от MFM кодирования дисководов, которые обычно применялись в машинах с CP/M. Apple II не смог бы прочитать MFM, даже если бы очень захотел, в силу инженерных упрощений при разработке дисковода (привет гению Стива Возняка, без сарказма).
Наиболее логичное решение, которое я могу придумать, после подсказок от ChatGPT: диски SoftCard имели физическую разметку Apple II и логическую разметку CP/M поверх них, что могло бы быть реализовано на уровне кастомного BIOS CP/M. Но такая CP/M не могла бы прочитать диски от обычных компьютеров под CP/M. Также режим работы Apple II (родной DOS 3.3 или CP/M) выбирался бы в зависимости от того, какой начальный загрузчик записан на нулевой дорожке.
Следовательно, пользователь SoftCard был ограничен набором дисков и программ, которые Microsoft бы поставляла вместе с платой.
Прав ли я в своих выводах? Как это работало на самом деле?
Microsoft SoftCard для Apple II: как научить два процессора работать с общей памятью