Lisitsin wrote:коротенькое тех задание на разработку
Даташит на SAA у тебя уже есть, поэтому коротко ознакомься с устройствами-прототипами, которые уже производятся:
http://www.micklab.narod.ru/ZXMSoundCard.htm . ZXM-SoundCard включает в себя железные TurboSoundFM и SAA. Порт конфигурации устройства находится в адресном пространстве внутренних портов AY, и выбирается записью в порт #FFFD байта данных вида 11хххххх. По ресету состояние этого порта = #FE, это исходное состояние и таким оно обязано быть по окончании обращения к AY или SAA -
это главное правило этого интерфейса! Назначение разрядов интерфейса:
D6,D7 - всегда в 1
D4,D5 - сейчас не используются, но в дальнейшем могут использоваться, для тебя всегда в 1
D3 - мультиплексирует интерфейс BDIR, BC1, и подаёт тактовую частоту на SAA:
D3=0 - интерфейс BDIR, BC1 используется для управления SAA, тактовая частота подаётся:
BDIR, BC1 -> CS SAA, A0 SAA
0 0 -> 1 0
0 1 -> 1 1
1 0 -> 0 0
1 1 -> 0 1
Т.е. BDIR AY соответствует инверсному CS SAA, а BC1 AY соответствует A0 SAA.
Кроме управления по интерфейсу BDIR + BC1, для SAA предусмотрен ещё дополнительный внешний интерфейс использующий незадействованные ноги AY в DIP40:
2 - дублирует сигнал CS SAA, на эту ногу подаётся внешний чипселект
5 - дублирует сигнал A0 SAA, на эту ногу подаётся A8, шины Спектрума
26 - на эту ногу подаётся A9, шины Спектрума
39 - на эту ногу подаётся A10, шины Спектрума
Дополнительный внешний интерфейс активируется только если на ноге 2 ноль, и в конфигурационном регистре D3=0. Этот интерфейс позволяет обращаться к SAA аппаратно по любому базовому адресу. В настоящее время в существующих прототипах базовый адрес принят:
#04FF - write SAA1099 Data
#05FF - write SAA1099 Address
D3=1 - интерфейс BDIR, BC1 используется для управления TurboSound, тактовая частота на SAA не подаётся.
D2 - разрешение на прохождение сигнала по i2c интерфейсу от YM2203 к ЦАП FM синтезатора - в вашей конструкции не используется
D1 - управление чтением регистра SSG или статусного регистра YM2203 - в вашей конструкции не используется
D0 - выборка одной из двух микросхем AY: 0 - AY0, 1 - AY1. В исходном состоянии всегда выбирается AY0.
Lisitsin wrote:по поводу многозадачности на AVR ZX Spectrum: как крнкретно это реализовать? должна быть уже какая-то написанная под Z80 система?
В примитивном варианте этот функционал может юзаться прямо из сервисного ПЗУ, при этом юзер сам переключает и управляет задачами. Но конечно, основное назначение такой аппаратной среды - решить извечную, и никаким другим способом не решаемую проблему Спектрума - запуск существующего софта без переделки под OS. До сих пор для Спектрума невозможно было создать OS, под которой без изменений запускалось бы существующее ПО, без потери его функциональности (т.е. без тормозов, нарушения таймингов и т.д.).
Т.е. для того, чтоб начать использовать возможности многозадачности - система не нужна, но без такой аппаратной среды систему для Спектрума не реализовать. Подробности дам чуть позже.