Да зачем микроконтроллеру успевать отдавать данные ?
Похоже, что мы говорим о разных схемах эмулятора. Зачем микроконтроллеру заменять программным путем регистр данных или статуса ? Проще иметь эти регистры аппаратно, ведь все регистры размещаются по разным адресам. Это может быть часть ППА или просто ИР22/23. Если помните, в ИР23 сигнал /OE не мешает защелкивать данные в регистр. Процессор 8008 записал в ИР23 байт, который якобы считался из дисковода (а на самом деле из очень большого ОЗУ), а затем записал в регистр статуса или в 2-х разрядный регистр имитирующий ноги 38,39 ВГ93 (что зависит от схемы КНГМД) признак готовности. И всё. Дальше от отдыхает. Ждёт когда произойдёт чтение регистра данных основным процессором, по которому автоматически (аппаратно, т.е без участия процессора 8008) бит в регистре статуса сам сбросится. Узнав об этом, процессор эмулятора, не торопясь, проверит, что в счётчике пакета (BC, где изначально число байтов в секторе) не 0, а после чего снова считает очередной байт: LD A,(HL) : LD (DATA),A : INC HL : LD (READY),A и на петлю контроля флага в регистре статуса.
А Вы, похоже, говорите о схеме, в которой в качестве интерфейса с ЦП на чтение c контроллера есть всего один ИР22. Тогда нужен триггер формирующий сигнал WAIT шины ЦП. Как только ЦП попытается считать что-то с регистра данных или статуса, то он зависнет по WAIT и будет ждать данных. Тогда 8008 должен выяснять какой адрес стоит на шине, чтобы понять читается регистр данных или регистр статуса и соответственно записать в ИР23 нужное число, а потом сбросить триггер WAIT для ЦП. Это тоже не станет проблемой скорости, т.к не важно с какой скоростью ЦП читает данные из регистра данных и переносит их в своё ОЗУ.
Вопрос неточный, но суть вопроса ясна. Это зависит от типа носителя. В старых microSD до 2 Гб была байтовая адресация (32 разряда адреса хватает лишь на 2 Гб). Также в обычном ОЗУ адресация побайтовая. Зачем же эмулятору читать в какой-то промежуточный буфер целый сектор и только потом выдавать его на интерфейс? Это только тормознёт. Но в новых 'microSD' в которых адресация посекторная, а также, возможно для ускорения, можно считывать целый сектор в промежуточный буфер.Сообщение от EvgenRU
В отличие от прогрессивных МК, древний CPU может адресоваться только к 64К (а 8008 вообще лишь 16К). Поэтому для адресации большого ОЗУ следует применять HD64180ZP8, с встроенным MMU или же нужен регистр, играющий роль менеджера памяти. Удобно сделать окно доступа к большому ОЗУ в 32К, отчего и от 8008 придётся отказаться (т.к он адресуется лишь к 16К) и применить КМОП Z80 (SU880) на такте, например, 2 МГЦ. Тогда по числам, что ЦП записал в регистр трека и регистр сектора, получив команду чтения сектора, Z80 эмулятора вычисляет номер полу-банки и записывает это в регистр выбора полубанки. Отчего в адресном пространстве Z80 возникает фрагмент большой памяти, где находятся нужные данные. Далее по числу в регистре сектора вычисляется адрес начала нужных данных в ОЗУ и загружается в HL, а в BC размер сектора и начинается передача байта за байтом данных (якобы считанных из сектора).
У меня возник другой вопрос. Если Вы в качестве носителя используете флэш память у которой очень ограниченное число перезаписей, то раз в сколько дней надо менять карточку 'microSD' на новую. Это обычное ОЗУ может работать по 40 лет и скорость их выхода из строя не зависит от числа перезаписей. А на 'microSD' и других флэш носителях можно делать только устройства типа ROM. Вот почему в новомодные цифровые магнитофоны на базе флеш-памяти не вводят запись.





Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
