Как ни странно, даже сейчас, спустя столько десятилетий, есть немало людей, интересующихся ZX-Spectrum. И дело не ограничивается программными эмуляторами, нет. У этих людей вполне настоящие, «железные» Спектры.
Подавляющее большинство этих компьютеров оснащены дисководами, но есть и модели, имеющие только ленточный вход. Такой компьютер можно загрузить, например, с аудиоплеера.
Но при таком способе загрузки неудобно перемещаться между блоками данных внутри аудиофайла, например, если игра требует загрузки уровней.
Да и аудиофайлы занимают изрядное место.
Есть, конечно, и другие программы для смартфонов, воспроизводящие форматы файлов данных для Спектрумового тапа и tzx. Но для тех же целей можно собрать аппаратный эмулятор магнитофона, описанный в этой статье.
Описываемый эмулятор собран на базе микроконтроллера atmega16 и способен воспроизводить тап-файлы, расположенные на SD-карте.
Не умеет записывать файлы на SD-карту (да мне это и не понадобилось).
Внешний вид эмулятора магнитофона в моей разработке.
Схема эмулятора показана на рисунке ниже.
В схеме используется дисплей 1602, микроконтроллер Atmega16 и динамическое ОЗУ MB81C4256. Зачем в таком эмуляторе оперативная память, ведь с карты памяти можно последовательно прочитать два блока (один читается, другой выводится)? Да, ты можешь.
Но использование большой оперативной памяти упрощает программу — все выходные данные полностью находятся в оперативной памяти, и их достаточно просто последовательно читать и выводить.
Кроме того, наличие оперативной памяти позволяет ускорить скорость вывода сигнала практически до максимальной для ZX-Spectrum. Однако это потребует существенной модификации программы загрузки в ПЗУ Спектрума.
В этом эмуляторе максимальная скорость вывода данных в четыре раза превышает стандартную скорость загрузки Спектрума.
То есть требуется модифицированное ПЗУ.
Прошивка такого модифицированного ПЗУ представлена в архиве.
Формат файла Tap очень прост: 2 байта — размер блока, за которым следуют данные блока.
И так до тех пор, пока не будут исчерпаны все блоки.
Ленточный сигнал от ZX-Spectrum представляет собой частотно-модулированный сигнал, при этом самая высокая частота кодируется нулем и сигналом синхронизации (частота сигнала синхронизации немного выше, чем частота нуля).
Единица кодируется на частоте в 2 раза меньшей нулевой частоты.
Пилот-тон кодируется частотой в 2,5 раза ниже нулевой частоты (звучит пи-и-и-и-и в начале загрузки).
На рисунке показан формат сигнала в тактах процессора Z80 (частота в ZX-Spectrum 3,5 МГц, если кто забыл).
Сначала звучит длинный (несколько секунд) пилот-сигнал, затем следует сигнал синхронизации, и после него выводятся данные.
Формат сигнала ленты ZX-Spectrum.
На самом деле, здесь вообще нет ничего сложного.
Если такой сигнал поступит от микроконтроллера, то Спектрум его с радостью примет и загрузится.
Для формирования сигнала программа использует обычный таймер, переключающий выход магнитофона через заданные промежутки времени.
Вот видео работы эмулятора магнитолы: Вот как это работает на скорости 4x: В архив прошивка, исходники прошивки, печатная плата, принципиальная схема, прошивка ZX-Spectrum ROM для 4x и 2x скоростей, программа преобразования TAP в WAV и программа обратного преобразования из WAV в TAP. Обновлять: Программа и плата на github. Теги: #ZX Spectrum #эмулятор магнитофона #C++ #Программирование микроконтроллеров
-
Как Увеличить Продажи На Вашем Сайте Сейчас!
19 Oct, 24 -
Fon – Бесплатный Wi-Fi По Всему Миру
19 Oct, 24 -
Новинка — Voip Телефон Snom D335
19 Oct, 24 -
Подробности О Поддереве Git
19 Oct, 24