"Специалист" - 2010


20 лет спустя...


Реинкарнация

Так уж вышло, что не осталось у меня работоспособных "Специалистов", однако были и платы полунедособранные, и микросхемы кой-какие, хранящиеся от застывшей 8-и разрядной эпохи... В общем, дело было только за желанием и временем: желание было, а время выкроилось.

Не все шло гладко: единственная пустая плата оказалась низкого качества из-за неточно просверленных отверстий, из-за чего было много скрытых замыканий между дорожками. После сборки сразу же не захотел работать тактовый генератор, а после его запуска путем замены микросхемы выявились еще две дефектные микросхемы, хотя и были "новыми". В прозвонке линий данных и адресов очень пригодился процессор-"фантом", а также поиску неисправностей помог эмулятор , на котором отлаживались тесты перед записью в ПЗУ.

Вот и долгожданное приветствие монитора! А что же дальше? Раскапывать магнитофон и кассеты? При наличии всего софта на компьютере это было уже неактуально. Не сильно затруднило написать конвертер бинарных файлов в формат wav, после чего программы стали загружаться в "Специалист" с выхода звуковой карты. Конечно же, для полноценной работы потребовалась клавиатура - для этого была раздобыта старая непленочная клавиатура от IBM PC, у которой были порезаны дорожки и поверх выполнена разводка, соответствующая "Специалисту". Плата была помещена в корпус от маленького принтера, однако ненадолго, так как он оказался неудобным...

 


FLASH-диск

После запуска "Специалиста" он оказался "привязан" к основному компьютеру, так как я мог грузить программы только с него, к тому же файлы приходилось конвертировать в формат wav, а загрузка занимала столько же времени, как и при загрузке с магнитофона, да и гарантии отсутствия ошибок этот метод все равно давал. Для ликвидации данной проблемы было принято решение сделать электронный диск.

Схема подключения ПЗУ была выбрана из расчета максимальной простоты изготовления в сочетании с максимальной емкостью, а также возможностью использования разных микросхем. Схема ориентирована на использование AT29C040A (512kB), однако в разъем можно устанавливать любые другие микросхемы такой же емкости и меньше (до 64kB), позднее для типа AT49F002 (256kB) был добавлен джампер для подключения вывода "1" к питанию (иначе у нее чтение не разрешается). Теоретически возможно использование 4-х микросхем AT29C040A с расширением емкости диска до 2MB, однако в этом случае нужно добавить дешифратор, использующий свободные А19 и А20 для выбора нужной микросхемы.

При повторении схемы линии чтения и записи необходимо подтянуть к питанию резисторами 10k, иначе у микросхем флэш с отключенной программной защитой плавающие входы могут приводить к случайной записи.

Для хранения файлов на этом диске была разработана простая файловая система, учитывающая различные возможные варианты использования диска. Файловая система линейная, без отдельных каталога и таблицы размещения файлов, состоит из заголовка диска, системной области и последовательного массива файлов.

В заголовке диска хранятся данные о размере диска и размере сектора (для микросхем с побайтной организации записи размер сектора задается равным единице), а также заголовок диска хранит размер системной области. Системная область включает в себя заголовок диска, систему (если она есть) и при необходимости зарезервированное место. Размер системной области выровнен по размеру сектора и фактически является смещением от начала заголовка диска к области файлов.

В заголовке файла хранятся его имя, атрибуты, размер и другие служебные данные, а также размер области, занимаемой файлом. Фактически размер этой области является смещением к следующему файлу. В байте атрибутов активными являются нулевые биты - в основном это дает возможность установить бит "Удален" для флэш с побайтной записью без тотальной реорганизации ПЗУ. Файл начинается сразу за заголовком, если не установлен бит "Выровнен" - в этом случае тело файла выровнено по границе сектора, что дает возможность перезаписывать начало файла не затрагивая его заголовка. Файлы могут быть более 64kB - в этом случае устанавливается атрибут "Длинный", а поле "Контрольная сумма" используется для хранения старших разрядов длины файла.

Файл идентифицируется по "синхробайту" - первый байт заголовка должен содержать сигнатуру "Е6h". Если за очередным файлом таковая не обнаружена, значит, достигнут конец диска. Аналогично заголовок диска начинается с сигнатуры "AAh,55h"

Под "системой" в системной области подразумевается исполняемый файл, который загружается при активизации диска по указанному там адресу и исполняется. Он может содержать, например, альтернативный менеджер загрузки файлов, настоящую операционную систему, в том числе использующую иную структуру диска, а также процедуры записи на диск - резидентный менеджер позволяет только читать с диска, так как в него сложно встроить поддержку всех возможных видов ПЗУ. Отстутствие системы на диске определяется по ее нулевому размеру.

Структура заголовка диска   Структура заголовка файла
struct DISK_HEAD
    aa55      dw ?   ; сигнатура AAh,55h
    disk_size dd ?   ; размер диска
    sect_size dw ?   ; размер сектора
    label     rb 32  ; метка диска
    sys_start dw ?   ; стартовый адрес системы
    sys_size  dw ?   ; размер системы
    sys_space dd ?   ; размер системной области 
ends
  struct FILE_HEAD
    xx    db ?   ; сигнатура E6h
    attr  db ?   ; атрибуты
    name  rb 32  ; имя файла
    start dw ?   ; адрес загрузки
    size  dw ?   ; размер файла
    ks    dw ?   ; контрольная сумма
    space dd ?   ; размер области файла 
ends
Атрибуты:    
7 - D (удален)
6 - L (длинный)
5 - E (исполняемый)
4 - A (выровнен)
3 - R (только чтение)
2 - 2 (резерв)
1 - 1 (резерв)
0 - 0 (резерв)
   

К сожалению, из-за нехватки времени работа над новым "Специалистом" была приостановлена и пока не знаю, когда будет продолжена, поэтому выкладываю незавершенные программы для работы с электронным диском. Возможно, они кому-нибудь окажутся полезными


Последнее обновление: 2013-04-28 14:18:54 EEST