3Bit
#01
03 января 2005 |
|
Железячки - обзор некоторых современных контроллеров для работы с внешними накопителями информации для ZX-Spectrum.
Краткий обзор некоторых современных контроллеров для работы с внешними накопителями информации для ZX-Spectrum (c) Гартфельдер Денис ────────────────────────────────────────── В этом небольшом обзоре я попытался соб- рать информацию об относительно новых кон- троллерах для работы с внешними накопите- лями информации, которые можно подключить к ZX-Spectrum. Описываемые устройства име- ют ряд отличительных особенностей, благо- даря которым они и попали в этот обзор: 1. Они разработаны западными производите- лями и мало известны среди "восточноевро- пейских" (бывших советских) спектрумистов; 2. Они не являются продуктами промышлен- ного производства, их устройство обычно не очень сложное и они могут быть собраны са- мостоятельно; 3. Они используют современные распростра- нённые накопители информации и построены на доступных микроконтроллерах, что облег- чает их сборку; 4. Они являются открытыми, постоянно со- вершенствующимися проектами, и вся инфор- мация о них доступна всем желающим. Большая часть материала для обзора была взята мной из английского Spectrum-журнала "ZX FORMAT" (тёзки отечественного электро- нного издания) и была дополнена информаци- ей с сайтов самих разработчиков. Пользуясь возможностью, хочу порекомендовать пользо- вателям, владеющим английским языком и имеющим возможность пользоваться Интерне- том, ознакомиться с этим замечательным жу- рналом по адресу: http://www.cwoodcock.co.uk/zxf Сразу хочу предупредить читателей, что я, мягко говоря, не эксперт по вопросам железа и спектрумовской периферии. Поэтому прошу продвинутых в этих вопросах читате- лей сильно не пинать меня (мысленно) из-за использования неточно переведённых техни- ческих терминов или каких-либо более зна- чительных ошибок в статье. Ведь её цель не перечисление технических характеристик и раскрытие принципов работы устройств, а доведение информации об их существовании до сведения тех людей, которые не знают английский язык или не имеют возможности ознакомиться с зарубежной прессой. Flash Disk for ZX Разработчик: Roelof Koning (Roelof.Koning@12move.nl) Использование CompactFlashCard объёмом 128 Mb вместо жёсткого диска. Карта памяти находится внутри корпуса компьютера, подключаясь проводами к адре- сной шине (A7, A8, A14, A15), шине данных, сигналам /RD,/WR,/IORQ. Конструкция CFC не требует никакого дополнительного интер- фейса (1 резистор, 2 диода), провода одним концом соединяются с шиной, а другим про- сто втыкаются в female-сокет карты. Работа с устройством осуществляется по- средством IN/OUT через следующие порты: ┌──┬───┬───┬──┬─────┬───────────────────────────────┐ │A7│A15│A14│A8│ Порт│ Действие │ ├──┼───┼───┼──┼─────┼───────────────────────────────┤ │ 0│ 0│ 0│ 0│ 127│Чтение / запись чётного байта │ │ 0│ 0│ 0│ 1│ 383│Чтение / запись нечётного байта│ │ 0│ 0│ 1│ 0│16511│Sector count │ │ 0│ 0│ 1│ 1│16767│Номер сектора │ │ 0│ 1│ 0│ 0│32895│Номер цилиндра (мл. байт) │ │ 0│ 1│ 0│ 1│33151│Номер цилиндра (ст. байт) │ │ 0│ 1│ 1│ 0│49279│Головка │ │ 0│ 1│ 1│ 1│49353│Состояние / Команда │ └──┴───┴───┴──┴─────┴───────────────────────────────┘ Размер сектора - 512 байт; операции чте- ния/записи происходят при помощи секторбу- фера. Поскольку карта с 16-битным доступом, информация делится на условно "чётные" и "нечётные" байты. После того, как из порта 127 было произведено чтение "чётного" бай- та, в него копируется значение из "нечёт- ного" порта 383. Регистры, отвечающие за номера головки/цилиндра/сектора, также поддерживают логическую адресацию (режим LBA). Некоторые (основные) команды: ┌───┬────────────────────────────────────────────────────┐ │Код│ Команда │ ├───┼────────────────────────────────────────────────────┤ │#EC│Идентификация устройства (считывание из секторбуфера│ │ │512 байт информации о фирме-производителе) │ │#20│Чтение сектора │ │#30│Запись сектора │ └───┴────────────────────────────────────────────────────┘ Значение битов в регистре состояния: ┌───┬────┬───────────────────────────┐ │Бит│Флаг│ Значение │ ├───┼────┼───────────────────────────┤ │ 0│ ERR│Ошибка │ │ 1│ 0│Не используется (всегда 0) │ │ 2│CORR│Необходима коррекция данных│ │ 3│ DRQ│Ожидаются данные │ │ 4│ DSC│Готов │ │ 5│ DWF│Ошибка записи │ │ 6│ RDY│Готов принять команду │ │ 7│BUSY│Занят │ └───┴────┴───────────────────────────┘ В обычном состоянии должны быть включены только 6-й и 4-й биты. Специального программного обеспечения для работы с картой не существует; исполь- зование регистров предполагает, что напи- сание подпрограмм чтения/записи из карты не представляет труда. Ниже приведён при- мер программы на BASIC-е, которая считыва- ет из секторбуфера карты помещённую туда по команде идентификационную информацию: 10 CLEAR 39999: LET T=40000 20 IF IN 49535<>80 THEN STOP: REM Проверка готовности карты 30 OUT 49535,236: REM Посылаем команду идентификации #EC 40 POKE T+1, IN 127: POKE T, IN 127: REM Чтение "чётного" и "нечётного" байта из секторбуфера 50 IF IN 49535<>80 THEN LET T=T+2: GOTO 40: REM Цикл будет продолжаться до тех пор, пока карта не выдаст сигнал готовности (после чтения всех 512 байт) 60 REM Вывод считанной информации 70 FOR F=40000 TO 400512 80 PRINT F;" "; PEEK F, CHR$ PEEK F AND PEEK F>31 90 NEXT F В данном примере в строке 50 нет провер- ки на наличие возникающих ошибок, просто ожидается состояние "готов". В действите- льности же могут возникать различные ошиб- ки, и необходимо их отслеживать. ZXCF Разработчик: Sami Vehmaa (user.tninet.se/ўvjz762w/) Использование CompactFlashCard как уни- версального накопителя. В отличие от предыдущего варианта, в ко- тором карта выполняла роль своеобразного "железоподкреплённого электронного диска", данная разработка представляет собой пол- ноценный контроллер для работы с CFC. Со- ответственно, усложнилась и схемотехничес- кая часть, так что к категории "сделай сам" эту разработку можно отнести с боль- шим натягом. Данная система позволяет работать в опе- рационной системе ResiDOS или в специально адаптированной +3e для Amstard ZX Spectrum 3+ (разработчик обеих ОС - Garry Lancas- ter). Тем не менее, контроллер будет рабо- тать на любой Sinclair-совместимой машине. ResiDOS не позволяет работать с каталога- ми, зато может создавать разделы (partiti- ons). Контроллер также позволяет использо- вать многостраничный (по 16 Kb) доступ ко встроенной RAM объёмом 512 или 1024 Kb. Контроллер подключается к системному разъёму (своими габаритами он чем-то сма- хивает на надгробие :)). При нажатии на кнопку NMI загружается собственный Task Manager, одной из примечательных функций которого является возможность делать мо- ментальные снимки памяти (до 16 снимков в 48 режиме при объёме встроенной памяти в 1 Mb), переключаться между ними и сохра- нять их, причём как на CompactFlash-карте, так и в памяти самого устройства. Посколь- ку питание ZXCF автономное, то можно хра- нить информацию во встроенной памяти сто- лько, сколько это позволит сделать батаре- йка (которой хватит на 3 года работы, пос- ле чего придётся применить некоторые навы- ки обращения с паяльником, чтобы заменить её). Можно загрузить игру, пройти несколь- ко уровней, сделать снимок, сохранить его в память устройства, выключить компьютер и позабыть про него на пару месяцев, а затем включить и продолжить игру с того самого места, на котором она была в последний раз сохранена. Использование в качестве ус- тройства сохранения карты CFC позволяет увековечить свои игровые рекорды :). Разработчик отмечает, что тестировал ус- тройство с несколькими типами CFC-накопи- телей различной ёмкости от различных про- изводителей,и не все из них заработали. На странице разработчика можно найти не- обходимые для самостоятельного изготовле- ния устройства файлы (разводку печатной платы и принципиальную схему). YABUS.ZX Разработчик: Jarek Adamski (zx@yarek.com) Универсальный интерфейс для подключения внешних устройств. Подключающийся к системному разъёму ми- ниатюрный контроллер с двумя разъемами, позволяющими подключать и работать в пара- ллельном режиме с различными специализиро- ванными модульными устройствами (YAMOD). Отличительной чертой модулей является их железонезависимость; YABUS можно подклю- чать к ZX 81, ZX Spectrum, Timex, SAM Coupe, MSX, Amstard CPC. Кроме версии YABUS.ZX, разработчиком предлагаются ин- терфейсы для Amstard ZX Spectrum +3 и Ti- mex, возможно будет версия и для Commodore Amiga. Начата разработка интерфейса, поз- воляющего "паразитировать" на PC-железе. Работа с некоторыми устройствами возмож- на и в стандартном режиме, но для полноце- нной работы рекомендуется использовать специальные операционные системы: СPM22QED (расширенная версия CP/M 2.2), ZXVGS (опе- рационная система, разработанная автором этого интерфейса). Автор разработал следующие модули: ┌──────────────┬───────────────────────────────────────────────┐ │Модуль │ Предназначение │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.ATBUS │IDE-контроллер, позволяет подключать HDD, CD-│ │ │ROM, CFC. Кроме этого, может нести на борту│ │ │энергонезависимые часы с автономным питанием и│ │ │позволяет генерировать прерывания с заданным│ │ │интервалом (необходимые, например, для дисково-│ │ │дов компьютеров Timex) │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.EPROG │Был задуман как программатор EEPROM и микрокон-│ │ │троллеров 8751, но по сути является универсаль-│ │ │ным параллельным 30-битовым портом, позволяющи-│ │ │мся обмениваться с компьютером данными по про-│ │ │токолу ECP. │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.IDE8255 │Более простой (менее скоростной) IDE-контроллер│ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.ZXINPUT │Позволяет подключать клавиатуру и мышь от PC.│ │ │Также позволяет генерировать прерывания так,│ │ │как это делается на SAM Coupe (перед каждой из │ │ │191 экранных строк) │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.KJ │Подключение Kempston-джойстика │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.KMOUSE │Подключение Kempston-мыши (нужна мышь от Амиги)│ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.FDC765A │Контроллер дисковода. Дисковод может работать в│ │ │двух режимах: как ZX Spectrum +3, либо как ISA│ │ │Multi I/O │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.AY │Звуковой модуль. Дополнительно комплектуется│ │ │шиной I2C и позволяет подключить 8k EEPROM, ис-│ │ │пользуемый операционной системой ZXVGS │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD. EPLIP │Какой-то шустрый параллельный порт с FIFO-буфе-│ │ │рами │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.8250 │Последовательный порт (как у PC). Через ZXVGS│ │ │можно работать с подключенной к нему PC-мышкой │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.8211 │PC-подобный порт принтера │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.MB02 │Порт программируемого ввода-вывода 8255 с разъ-│ │ │ёмом DB37 как у дискового интерфейса MB-02 │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD. PCMOUSE│Простой RS-232 для PC-мышки со скоростью 1200│ │ │или 19200 bps │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.SIO │Для профессионалов в радиотехнике - позволяет│ │ │превратить компьютер в TNC-модем (если ещё ку-│ │ │пить BayCom модем). Что это такое, я, честно│ │ │говоря, не знаю. │ ├──────────────┼───────────────────────────────────────────────┤ │YAMOD.ETHERNET│Позволяет подключать некоторые сетевые модули│ │ │(www.embeddedethernet.com), не требующие PC для│ │ │своей работы. Возможно, это несколько дорогое│ │ │удовольствие... │ └──────────────┴───────────────────────────────────────────────┘ К сожалению, этот проект коммерческий, и разработчик не предоставляет в открытый доступ принципиальных схем устройства и его модулей. Их можно купить у него по до- вольно умеренным ценам. Дополнительная информация: http://zx.yarek.com/dYABUS-en.html Инфо по операционной системе ZXVGS: http://zxvgs.yarek.com zxUSB Разработчик: Dave "The Lurker" Mills Контроллер для работы с USB-устройствами на ZX Spectrum. Попытка создать работающий USB-контрол- лер для подключения к Спектрум-совместимым машинам различных устройств, оборудованных интерфейсом USB, в первую очередь порта- тивных накопителей памяти (USB FlashDri- ve). Контроллер на основе микросхемы Nati- onal Semiconductor USBN9603 позволяет под- ключать одно устройство через стандартный разъём USB к системной шине компьютера. Возможно, что будет разработана версия для подключения через YABUS.ZX. Базовый адрес контроллера - #91. Путём дополнительного перепрограммирования кон- троллера и написания программы-обработчика немаскируемых прерываний можно использо- вать NMI для контроля и управления переда- чей данных. Потребляемая подключенным ус- тройством мощность ограниченна возможнос- тями блока питания Спектрума (сила тока не более 100мА). Программного обеспечения для работы с устройством на данный момент не существу- ет. Вся необходимая информация, включая файлы разводки печатной платы, принципиа- льную схему устройства, документацию по USBN9603, можно найти на сайте: http://8bitorbust.info/sinclair/spectrum/hardware/zxUSB/. ZXATASP Разработчик: Sami Vehmaa (user.tninet.se/ўvjz762w/) 16-битный интерфейс для работы с внешни- ми накопителями. ZXATASP это 16-битный IDE-контроллер на основе программируемого модуля NEC D8255AC-5, позволяющий подключать к ком- пьютеру жёсткий диск и CompactFlash Card. Он подключается к системному разъёму и ра- ботает на всех Spectrum-машинах начиная с ZX Spectrum 16 без аппаратной доработки компьютера. Имеет на борту 128/512 Kb па- мяти, позволяет загружать в неё любые про- шивки ПЗУ, выбирать и работать с одной из них. Модуль 8255 имеет три 8-битных регистра (A, B, C) и регистр состояния (CWR), поз- воляющий контролировать состояние портов, сязанных с этими тремя регистрами: ┌───────┬─────┬───────────────────┐ │Регистр│ Порт│ Значение │ ├───────┼─────┼───────────────────┤ │ A│#009F│Младший байт │ │ B│#019F│Старший байт │ │ C│#029F│Состояние IDE / MEM│ │ CWR│#039F│Управляющий регистр│ └───────┴─────┴───────────────────┘ Регистр CWR позволяет переключать режимы чтения/записи для регистров A и В (регистр C всегда находится в режиме записи): OUT 927,146 - переключает регистры в ре- жим чтения OUT 927,128 - переключает регистры в ре- жим записи Значения флагов регистра C: ┌───┬────────────────────────────────┐ │ │ Значение │ │Бит├─────────────────────┬──────────┤ │ │ Non-Latched │ Latched │ ├───┼─────────────────────┼──────────┤ │ 0│ A0│ │ │ 1│ A1│ │ │ 2│ A2│ Страница │ │ 3│ /IOWR│ │ │ 4│ /IORD│ │ ├───┼─────────────────────┼──────────┤ │ 5│/CS0 первый канал IDE│ /CS0 │ ├───┼─────────────────────┴──────────┤ │ 6│ Latch clock │ ├───┼─────────────────────┬──────────┤ │ 7│/CS0 второй канал IDE│MEM on/off│ └───┴─────────────────────┴──────────┘ Примеры подпрограмм, осуществляющих за- пись/чтение данных через IDE: 10 REM Запись данных в IDE 20 REM Задаём значение младшего регистра шины IDE (D00-D07) 30 LET DATALOW=139 40 REM Задаём значение старшего регистра шины IDE (D00-D07) 50 LET DATAHIGH=217 60 REM Переключение в режим записи в порт 70 OUT 927,128 80 REM Отправляем значения младшего и старшего регистров шины в соответствующие порты 90 OUT 159, DATALOW 100 OUT 415, DATAHIGH 110 REM Получаем доступ к регистру состояния IDE 120 OUT 671,55 130 REM Сбрасываем все контролирующие флаги 140 OUT 671,0 10 REM Чтение данных из IDE 20 REM Переключение в режим чтения из порта 30 OUT 927,146 40 REM Получаем доступ к регистру состояния IDE 50 OUT 671,55 60 REM Считываем значения младшего и старшего регистров шины из соответствующих поров 70 LET DATALOW = IN 159 80 LET DATAHIGH = IN 415 90 REM Сбрасываем все контролирующие флаги 100 OUT 671,0 Устройство комплектуется маломощной па- мятью объёмом 128 или 512 Kb. Нулевая страница памяти содержит загрузчик и ути- литы для работы с IDE, первая - несколько модифицированную прошивку ПЗУ. Принцип ра- боты состоит в том, чтобы загружаться с IDE, а затем подставлять вместо загрузоч- ной нулевой страницы "родной" или любой другой ROM (причём достаточный объём памя- ти позволяет хранить их несколько десят- ков). Для этого используется 6-ой бит ре- гистра C во включенном состоянии, а номер страницы памяти задаётся битами 0-4 этого же регистра: OUT 617, (64+номер страницы) Для отключения этой возможности исполь- зуется седьмой бит регистра C, причём дол- жны быть включены и шестой, и седьмой бит, а биты с нулевого по четвёртый должны быть обязательно выключены (а сам контроллер должным образом проинициализирован коман- дой OUT 927, 128 или OUT 927, 146). Если этого сделано не будет, то тогда "со вто- рым каналом IDE может произойти что-нибудь нехорошее" (цитата из техдокументации к устройству). Загрузка в память устройства прошивок ПЗУ осуществляется следующим образом: в определённое положение устанавливаются пе- ремычки на самом устройстве, затем устрой- ство инициализируется и конфигурируется при помощи регистра C, после чего образ ПЗУ можно загрузить в область памяти 0- 16383 при помощи POKE или LDIR. Глоссарий I¤C - Inter-IC, интерфейс связи между ин- тегральными схемами. IDE - Integrated Device Electronics, тип интерфейса дисковых накопителей, в котором управляющая электроника раз- мещается в самом накопителе, не тре- буя специальной адаптерной платы. СFC - Compact Flash Card, карты памяти ем- костью 1-512 Mb. Интерфейс достаточ- но универсален, в формате CF сущес- твует много устройств - модемы, фо- токамеры, сетевые адаптеры, GSM мо- дули и жесткие диски. Используются в некоторых карманных компьютерах. EEPROM - Electrically Erasable Programmab- le ROM, электрически-стираемое прог- раммируемое ПЗУ. FIFO - First-In-First-Out, буфер, из кото- рого данные выпускаются в том же по- рядке, как они поступили (т. наз. буфер обратного магазинного типа). RS-232 - Recommended Standard 232, промыш- ленный стандарт для последовательных соединений, определяет конкретные линии и характеристики сигнала, ис- пользуемые контроллерами последова- тельных соединений. USB - Universal Serial Bus, универсальная последовательная шина. ──────────────────────────────────────────
Другие статьи номера:
Похожие статьи:
В этот день... 14 декабря