Настоящим постом никого не хочу обидеть. Даже больше того, восхищаюсь тем кто делает что-то для спектрума. Так что прошу не обращать внимание на некоторую резкость. И за многобукаф тоже извините.
Прочитал я несколько АКТУАЛЬНЫХ тем про устройства для спектрума и впал в уныние. Кто-то эмулирует магнитофон , кто-то - хочет сделать ROM-диск, кто-то флоппи-эмулятор и даже divIDE в продаже есть.
С одной стороны приятно понастальгировать. Но с другой - блин, чуваки, ну почему у вас такие сложные и дорогие схемы? Сейчас кризис, надо быть проще... Да, безусловно, схемы крутые. Но все они ограничены по своим возможностям: на виртуальный дисковод больше 800 кило не запишешь, с магнитофона быстро не загрузишься. DivIDE чуток получше, но даже у него есть ограничения на объём раздела... плюсом к нему надо докупать дорогую флешку которую в маленьких городах и не найдёшь...
В общем, предлагаю на обсуждение, следующую концепцию очередного велосипеда - внешнего устройства ввода вывода. Предупреждаю сразу что я её в железе реализовать не смогу по причине утери платы спектрума (корпус и клавиатура осталась, а плата потерялась при переезде). Но могу ответить на некоторые вопросы и оказать посильную консультацию по скайпу.
Сама идея состоит в том, что Z80 - это довольно быстрая штука. И он может битиками ворочать ОЧЕНЬ быстро. Для примера возьмём магнитофонный порт. Какая может быть максимальная скорость ввода информации, при условии что за синхронизацию отвечает внешнее устройство? Проверяем на "секторе" из 256 байт:
Итого у меня получилось - 102 402 такта на 256 байт, то есть 400 тактов на байт или 8.5 килобайт в секунду.Код:LD C,0 7 sector: LD b,8 7*256 byte: IN a,(254) 11*8*256 RLCA 4*8*256 RLCA 4*8*256 RRС d 8*8*256 DJNZ byte (13*7+8)*256 LD (hl),d 7*256 INC hl 6*256 DEC c 4*256 JR nz,sector 12*255+7
Получается Z80 сам, без никакой помощи, без турбирования, по двум *****м проводкам, парой дюжин команд за 5 секунд скачает полностью свою память (без картинки).
Но кто же даст нам такую скорость? Правильно - самый популярный ногодрыг - ардуина. Разумеется, втыкать её придётся не в разъём TapeIn / TapeOut, а припаивать на плату прямо на триггеры. Но припаять два сигнальных и два питательных проводка не проблема (TapeIn кстати нужно перерезать чтобы не спалить; или через переключатель подключить если планируется пользование магнитофона)
Только в ардуине ПЗУ всего ничего, но зато на ней без проблем работают картридеры microSD. Заодно ардуина возьмёт на себя всю заботу о FAT (или даже о FAT32).
Да, скорее всего заявленная скорость в 8.5 килобайт будет недостижима: Ардуине надо будет читать файл по секторам в свою небольшую память (Z80 в это время будет простаивать), дополнительно потребуется синхронизация в основном цикле. Проверку контрольной суммы тоже надо делать.
Но в любом случае, гарантированно будет не менее 5 килобайт в секунду.
Итак, как будет работать система с точки зрения пользователя?
1. На спектруме набираем LOAD "" и нажимаем <ENTER>
2. На ардуине нажимаем Reset - пошла загрузка драйвера (ардуинка отдаёт драйвер в магнитофонном режиме)
3. После загрузки мелкого драйвера (пара сотен байт в буфере принтера или UDG или даже в бейсик-переменной) у нас становится доступна флешка и загрузчик грузится с неё - показывает список файлов: выбирай любой и грузись.
Как под это дело адаптировать программы?
В комплекте драйвера будут функции DEF FN которые обеспечат загрузку и выгрузку кодовых блоков.
Адаптированию подлежат только программы в которых бейсик-загрузчики вида CLEAR 24000: LOAD "" CODE: RANDOMIZE USR xxx.
Для простоты можно все кодовые файлы пожать архиватором, разместить со стандартного адреса (24000) и сделать им автозапуск. И обозвать с расширением zxexe
Ну и самое вкусное - что это будет по цене?
По сайту наших китайских братьев ардуинка 130 руб, картридер - 40 руб, флешка microSD (минимально) от 100 рублей, но флешка как правило уже есть от старого телефона. Провод для прошивки тоже подойдёт от телефона.
P.S. На самом деле совсем уж правильно вместо ардуинки использовать esp8266. И все операции выполнять через wi-fi. Заодно и все образы программ выгрузить на спецсайт для спектрума - например http://zx.zx-pk.ru/ завести там каталоги для юзеров (с ограничением приватной части в мегабайт например). Тогда даже десяток пользователей с wi-fi за несколько дней наадаптируют сотню программ и разместят их в общий доступ.
Но про esp8266 я ничего сказать не могу: в руках её не держал, да и пробовать на ардуинке проще.