Итак, переварил то, что мне ответили. Что-то пришлось догуглиливать, но в целом картина прояснилась. Я сейчас отвечу на всё, как понял, а вы меня поправьте, если я где-то ошибся.
1. Что правильно должно считываться по адресам С000-EFFF, если микросхема ПЗУ не установлена? Emu80 отображает FF, как будто бы установлены чистые микросхемы памяти. Это корректное поведение? Оно обусловлено схемотехникой компьютера?
По любому адресу, к которому не подключено ни ОЗУ, ни ПЗУ, ни какое-то другое устройство, любой командой, работающей с памятью (например, LDA adr) должен считываться байт 0x82. Но есть одно исключение: если ту же самую область пытаться считать командой IN xx, то в этом случае будет считываться байт 0x42.
Байты 0x82 и 0x42 представляют из себя слово состояния (Status Word) выдаваемое на шину данных в первом такте машинного цикла и сопровождаемом сигналом SYNC.
Остаётся вопрос: почему это слово разное для команды IN и остальных команд?
2. Что должно считывается по адресам в диапазоне F000-F7FF в журнальной версии компьютера? Emu80 отображает циклическую последовательность 00 00 00 FF. Чем это обусловлено? Что будет если попытаться записывать туда данные на реальном компьютере в стандартной конфигурации?
В стандартном варианте в эту область ничего не подключено. И поэтому оттуда должно считываться 0x82 (0x42), как описано в первом вопросе.
3. Что должно считываться с адресов F803, F807 и т.д., то есть адресов куда проецируется порт управления штатной микросхемы параллельного порта (КР580ВВ55А)?
Результат считывания сложный и зависит от содержимого других регистров микросхемы. Эту информацию необходимо получить из документации по КР580ВВ55А (i8255).
b2m вот здесь пишет: "По поводу РУС: была информация, что оттуда читается последнее записанное в любой из портов А,В,С значение. Тест подтверждает это, но однако показывает, что если порты настроены на ввод, то оттуда читается FF. Можно поправить в эмуляторе для аутентичности (у меня пока возвращается ноль). Что возвращать, когда порт настроен на ввод, а схемно он предназначен на вывод - непонятно."
4. Как на реальном Специалисте ведут себя команды работы с прерываниями: DI, EI, HLT? Существуют ли какие-то устройства для Специалиста, которые будут реагировать на эти команды?
В схеме Специалиста не задействован сигнал процессора INTE, отвечающий за обработку прерываний. Поэтому в Специалисте команды DI и EI будут работать просто, как NOP. Команда HLT остановит процессор и он будет ждать сигнала INTE. Но так как, INTE не задействован, процессор ничего не дождётся и будет "висеть". Вывести его из этого состояния можно только сбросом компьютера.
5. Как на реальном Специалисте ведут себя команды работы с портами IN xx и OUT xx? Что будет если считать данные с несуществующего порта? Существуют ли какие-то устройства для Специалиста, которые будут реагировать на эти команды?
На Специалисте команды IN и OUT работают точно так же, как и обычные команды работы с памятью. Команда IN считывает в регистр А значение из ячейки памяти, адрес которой формируется из байта, указанного в команде IN. Этот байт помещается и в младший, и в старший байт адреса. Команда OUT записывает значение регистра A в адрес, сформированный по той же схеме, что и в команде IN.
Команда IN AB аналогична команде LDA ABAB
Команда OUT AB аналогична команде STA ABAB
Вопрос: Что из себя представляют полноценные порты для процессора 8080? Они организуются какой-то дополнительной микросхемой? 8080 может обслуживать только 256 разных портов?
6. Процессор Специалиста работает с частотой 2 МГц. Телевизор отображает 50 кадров в секунду. Я считаю, что между кадрами укладывается (2 * 1 000 000 / 50) тактов процессора. Насколько мои вычисления корректны?
Частота кадров Специалиста не ровно 50 Hz, а 50,08 Hz. Это значение получается, если частоту строчной развертки, которая составляет 15625 Hz, поделить на количество строк, формируемых Специалистом - 312.
15625 Hz / 312 строк = 50,08 кадров в секунду
Один кадр строится за 39936 тактов процессора. Это значение получается, если умножить количество строк (312) одного кадра на количество тактов, которое тратится на формирование одной строки (128)
128 тактов * 312 строк = 39936 тактов
Вопрос: Правильно ли я понимаю, что частота кадров 50,08 - это константа? Если увеличивать частоту процессора, то в компьютере, который сделан правильно и его схемотехника учитывает все эти повышения (например, замена i8080 на Z80), частота кадров так и останется равной 50,08 Hz, а количество тактов между началами формирования двух кадров будет увеличено кратно множителю, на который будет увеличена частота процессора?
7. Я правильно понимаю, что у Специалиста отсутствует какая-либо привязка начала построения кадра к чему-либо. Или всё-таки кадр строится по каким-то временнЫм правилам?
В классической схеме Специалиста формирование очередного кадра никак не привязано ни к процессору, ни к количеству тактов, ни к чему-либо ещё. Нет никакой возможности отследить начало формирования следующего кадра и как-то привязаться к нему.




Ответить с цитированием