20 лет спустя...
Так уж вышло, что не осталось у меня работоспособных "Специалистов", однако были и платы полунедособранные, и микросхемы кой-какие, хранящиеся от застывшей 8-и разрядной эпохи... В общем, дело было только за желанием и временем: желание было, а время выкроилось.
Не все шло гладко: единственная пустая плата оказалась низкого качества из-за неточно просверленных отверстий, из-за чего было много скрытых замыканий между дорожками. После сборки сразу же не захотел работать тактовый генератор, а после его запуска путем замены микросхемы выявились еще две дефектные микросхемы, хотя и были "новыми". В прозвонке линий данных и адресов очень пригодился процессор-"фантом", а также поиску неисправностей помог эмулятор , на котором отлаживались тесты перед записью в ПЗУ.
Вот и долгожданное приветствие монитора! А что же дальше? Раскапывать магнитофон и кассеты? При наличии всего софта на компьютере это было уже неактуально. Не сильно затруднило написать конвертер бинарных файлов в формат wav, после чего программы стали загружаться в "Специалист" с выхода звуковой карты. Конечно же, для полноценной работы потребовалась клавиатура - для этого была раздобыта старая непленочная клавиатура от IBM PC, у которой были порезаны дорожки и поверх выполнена разводка, соответствующая "Специалисту". Плата была помещена в корпус от маленького принтера, однако ненадолго, так как он оказался неудобным...
После запуска "Специалиста" он оказался "привязан" к основному компьютеру, так как я мог грузить программы только с него, к тому же файлы приходилось конвертировать в формат wav, а загрузка занимала столько же времени, как и при загрузке с магнитофона, да и гарантии отсутствия ошибок этот метод все равно давал. Для ликвидации данной проблемы было принято решение сделать электронный диск.
Схема подключения ПЗУ была выбрана из расчета максимальной простоты изготовления в сочетании с максимальной емкостью, а также возможностью использования разных микросхем. Схема ориентирована на использование AT29C040A (512kB), однако в разъем можно устанавливать любые другие микросхемы такой же емкости и меньше (до 64kB), позднее для типа AT49F002 (256kB) был добавлен джампер для подключения вывода "1" к питанию (иначе у нее чтение не разрешается). Теоретически возможно использование 4-х микросхем AT29C040A с расширением емкости диска до 2MB, однако в этом случае нужно добавить дешифратор, использующий свободные А19 и А20 для выбора нужной микросхемы.
При повторении схемы линии чтения и записи необходимо подтянуть к питанию резисторами 10k, иначе у микросхем флэш с отключенной программной защитой плавающие входы могут приводить к случайной записи.
Для хранения файлов на этом диске была разработана простая файловая система, учитывающая различные возможные варианты использования диска. Файловая система линейная, без отдельных каталога и таблицы размещения файлов, состоит из заголовка диска, системной области и последовательного массива файлов.
В заголовке диска хранятся данные о размере диска и размере сектора (для микросхем с побайтной организации записи размер сектора задается равным единице), а также заголовок диска хранит размер системной области. Системная область включает в себя заголовок диска, систему (если она есть) и при необходимости зарезервированное место. Размер системной области выровнен по размеру сектора и фактически является смещением от начала заголовка диска к области файлов.
В заголовке файла хранятся его имя, атрибуты, размер и другие служебные данные, а также размер области, занимаемой файлом. Фактически размер этой области является смещением к следующему файлу. В байте атрибутов активными являются нулевые биты - в основном это дает возможность установить бит "Удален" для флэш с побайтной записью без тотальной реорганизации ПЗУ. Файл начинается сразу за заголовком, если не установлен бит "Выровнен" - в этом случае тело файла выровнено по границе сектора, что дает возможность перезаписывать начало файла не затрагивая его заголовка. Файлы могут быть более 64kB - в этом случае устанавливается атрибут "Длинный", а поле "Контрольная сумма" используется для хранения старших разрядов длины файла.
Файл идентифицируется по "синхробайту" - первый байт заголовка должен содержать сигнатуру "Е6h". Если за очередным файлом таковая не обнаружена, значит, достигнут конец диска. Аналогично заголовок диска начинается с сигнатуры "AAh,55h"
Под "системой" в системной области подразумевается исполняемый файл, который загружается при активизации диска по указанному там адресу и исполняется. Он может содержать, например, альтернативный менеджер загрузки файлов, настоящую операционную систему, в том числе использующую иную структуру диска, а также процедуры записи на диск - резидентный менеджер позволяет только читать с диска, так как в него сложно встроить поддержку всех возможных видов ПЗУ. Отстутствие системы на диске определяется по ее нулевому размеру.
Структура заголовка диска | Структура заголовка файла | |
struct DISK_HEAD
|
struct FILE_HEAD
|
|
Атрибуты: | ||
7 - D (удален)
|
К сожалению, из-за нехватки времени работа над новым "Специалистом" была приостановлена и пока не знаю, когда будет продолжена, поэтому выкладываю незавершенные программы для работы с электронным диском. Возможно, они кому-нибудь окажутся полезными