Fast PC-Loader
Предлагаю вместе разработать устройство для БЫСТРОЙ загрузки данных с PC. Ожидаемое время загрузки 48К порядка нескольких секунд. Время зависит от скорости чтения данных из порта FE. Принцип я придумал. Теперь надо его реализовать. Времени и знаний на все у меня не хватит. Поэтому, кто знает/может вносите свой вклад в общую разработку.
Назначение
Для быстрой загрузки данных с PC во время отладки программ. Например, пишу я программу для новой видеокарты "Meteor Graphics". Эмулятора на PC для нее нет. Я могу через "Fast PC-Loader" загрузить очередную версию программы и посмотреть, как она работает на компьютере с видеокартой. Также можно отлаживать и программы для других устройств.
Принцип работы
После нажатия кнопки на устройстве "Fast PC-Loader" микроконтроллер передает сигнал, аналогичный файлу загрузки с магнитофона на стандартной скорости. Формат передачи сигналов по определенным временным интервалам для бита 0 и 1.
При этом в Спектрум по команде LOAD "" ENTER загружается программа на BASIC-е с блоком данных.
После этого микроконтроллер переходит к другому, более быстрому режиму работы. По сигналу чтения из порта FE микроконтроллер передает очередной бит данных на цифровой вход TAPE-IN порта FE. То есть Z80 начинает принимать данные на максимальной скорости с аппаратной синхронизацией битов. Принял один бит данных - микроконтроллер тут же подготовил следующий.
Микроконтроллер AVR принимает данные с PC через UART. При необходимости приостанавливает прием, а потом продолжает.
Z80 может при загрузке делать паузы, в это время микроконтроллер ждет. Ограничение - во время загрузки не надо читать из порта FE.
HardWare
Плата KEYB&SINC с микроконтроллером ATMEGA48.
Плата USB-UART с микросxемой FT232 (для соединения PC и микроконтроллера через UART).
Подключение к Спектруму
В схему Спектрума добавляется тумблер на вход порта FE для выбора источника сигнала: с аналогового формирователя TAPE-IN или с устройства «FAST PC-Loader».
На стенку корпуса Спектрума устанавливается разъем типа DB-9F, на который заводятся проводами сигналы: сигнал чтения из порта FE, сигнал данных с Loader-a на тумблер, +5V, GND.
Что нужно найти/придумать/сделать
+ Выбрать железо для прототипа
+ Принцип работы устройства
+ Вычислить максимальную скорость загрузки данных из микроконтроллера в Z80 (4.26 секунды на 48 килобайт данных)
+ Выбрать скорость передачи данных через UART (115200)
Написать текст программы загрузчика на BASICe
+ Написать подпрограмму загрузки 256 байтов (нужно замедлить раза в 4)
Преобразовать программу на BASIC-е в текстовой файл с байтами для помещения в микроконтроллер
Найти описание формата файла ZX Spectrum и временные диаграмы для передачи загрузчика из МК
Найти формат файлов .SNA
Программу на ассемблере Z80 для загрузки .SNA
Программу на PC для отправки файла .SNA через последовательный порт
Алгоритм работы программы для микроконтроллера
Кодирование программы для микроконтроллера
Пайка прототипа и тестирование
+Разработка плат для конструктора
+Приобретение деталей для конструкторов
Распространение конструкторов
Ссылки по теме:
Определение скорости загрузки: 1 и 2
Пример кода для загрузки данных по 4 бита
Определение UART Baud Rate