ПОКИ
POKEY , аббревиатура от Pot Keyboard Integrated Circuit . [1] — это цифровой ввода-вывода, чип разработанный Дугом Нойбауэром из Atari, Inc. [2] для 8-битных компьютеров Atari . Впервые он был выпущен для Atari 400 и Atari 800 в 1979 году и включен во все более поздние модели и консоль Atari 5200 . POKEY сочетает в себе функции для чтения лепестковых контроллеров ( потенциометров ) и компьютерных клавиатур, а также генерации звука и источника псевдослучайных чисел . Он воспроизводит четыре голоса характерного прямоугольного звука, либо в виде чистых тонов, либо в виде измененных настроек искажения. [3] Atari Нойбауэр также разработал 8-битное приложение-убийцу Star Raiders , в котором используются функции POKEY.
Чипы POKEY использовались для аудио во многих аркадных видеоиграх 1980-х годов, включая Centipede , Missile Command , Asteroids Deluxe и Gauntlet . Некоторые аркадные системы Atari используют многоядерные версии с 2 или 4 POKEY в одном корпусе для большего количества аудиоканалов. Консоль Atari 7800 позволяет содержать игровой картридж с POKEY, обеспечивая лучший звук, чем звуковой чип системы. Это используют только две лицензионные игры: порты Ballblazer и Commando .
Чип LSI имеет 40 контактов и имеет обозначение C012294. [4] 2 февраля 1982 года USPTO выдало Atari патент США № 4 314 236 на «Устройство для создания множества звуковых звуковых эффектов». [5] В списке изобретателей указаны Стивен Т. Майер и Рональд Э. Милнер.
Функции
[ редактировать ]- Аудио
- 4 полунезависимых аудиоканала
- Каналы могут быть настроены как один из:
- Четыре 8-битных канала
- Два 16-битных канала
- Один 16-битный канал и два 8-битных канала.
- на канал Громкость , частота и форма сигнала ( меандр с переменным коэффициентом заполнения или псевдослучайный шум)
- 15 кГц или 64 кГц Делитель частоты .
- Два канала могут работать на тактовой частоте ЦП.
- Фильтр верхних частот
- Сканирование клавиатуры (до 64 клавиш) + 2 бита-модификатора (Shift, Control) + Break
- Порты потенциометра (8 независимых портов, каждый с разрешением 8 бит)
- Таймеры высокого разрешения (аудиоканалы 1, 2 и 4 можно настроить на прерывание таймера при пересечении нуля)
- Генератор случайных чисел (можно прочитать 8 бит 17-битного полиномиального счетчика)
- Последовательный ввода-вывода порт
- Восемь IRQ прерываний
Версии
[ редактировать ]По номеру детали:
- C012294 — используется на всех 8-битных компьютерах Atari , включая Atari XEGS и консоль Atari 5200 . Суффикс на чипе относится к производителю:
- C012294B-01 — АМИ
- C012294-03 — Сигнетика
- C012294-19 — Национальный полупроводник
- C012294-22 — ОТРЕЗКА
- C012294-31 — ИМП
- 137430-001 — номер детали, который иногда используется в игровых автоматах Atari для POKEY.
- 137324-1221 — Четырехъядерный процессор POKEY, используемый в игровых автоматах Atari Major Havoc , I, Robot , Firefox и Return of the Jedi . [6]
Atari использовала для изготовления чипа несколько разных производителей, однако AMI производила большинство из них начиная с 1983 года. Ранние чипы производились по технологии 5 микрометров, позже она была уменьшена до 3 микрометров. Сообщается, что POKEY производства AMI имеют более высокую частоту отказов по сравнению с чипами других марок; Причины этого неясны, но предполагается, что это неисправность корпуса чипа или соединительных проводов. Сообщалось об ограниченном успехе в восстановлении нефункциональных POKEY путем нагревания их в духовке. Также существуют современные замены FPGA, такие как POKEYOne. [7]
Распиновка
[ редактировать ]Имя контакта | Номер(а) контакта | Описание |
---|---|---|
А0 - А3 | 36, 35, 34, 33 | Ввод адреса памяти |
АКЛК | 27 | Последовательный тактовый выход |
австралийский доллар | 37 | Аудиовыход |
БКЛК | 26 | Двунаправленный тактовый ввод/вывод |
CS0 | 30 | Выбор чипа |
CS1 | 31 | Выбор чипа |
D0 - D7 | 38, 39, 40, 2, 3, 4, 5, 6 | Шина данных ввода-вывода |
прерывание | 29 | Вывод запроса прерывания |
К0 - К5 | 23, 22, 21, 20, 19, 18 | Выход сканирования клавиатуры |
КР1 - КР2 | 25, 16 | Стробоскопический ввод строк клавиатуры |
П0-П7 | 14, 15, 12, 13, 10, 11, 8, 9 | Сканирование потенциометра (лопасть) |
Ч/З | 32 | Чтение/запись управления вводом/выводом |
SID | 24 | Последовательные входные данные |
ДЕРН | 28 | Последовательные выходные данные |
В куб.см. | 17 | Питание +5 Вольт |
В сс | 1 | Земля |
Ø2 | 7 | Тактовый вход фазы 2 |
Регистры
[ редактировать ]8-битные компьютеры Atari сопоставляют POKEY с шестнадцатеричной страницей $D2xx, а консоль Atari 5200 сопоставляет его с шестнадцатеричной страницей $E8xx.
POKEY предоставляет 29 регистров чтения/записи, управляющих звуком, вводом манипулятора, вводом с клавиатуры, последовательным вводом/выводом и прерываниями. Многие адреса регистров POKEY имеют двойное назначение, выполняя разные функции: регистр чтения и записи. Следовательно, ни один код не должен читать аппаратные регистры, ожидая получить ранее записанное значение.
Для некоторых регистров эта проблема решается с помощью «теневых» регистров операционной системы, реализованных в обычной оперативной памяти, которые отражают значения аппаратных регистров. Во время вертикального пробела операционная система копирует теневые регистры в ОЗУ для регистров записи в соответствующий аппаратный регистр и соответствующим образом обновляет теневые значения для регистров чтения с аппаратного обеспечения. Таким образом, записи в аппаратные регистры, имеющие соответствующие теневые регистры, будут перезаписаны значениями теневых регистров во время следующего вертикального пробела.
Считывание значений непосредственно с оборудования на неизвестном этапе цикла отображения может привести к противоречивым результатам (пример: считывание потенциометров). Теневые регистры операционной системы для регистров чтения обычно являются предпочтительным источником информации.
Некоторые аппаратные регистры записи не имеют соответствующих теневых регистров. Они могут быть безопасно записаны приложением без перезаписи значения во время вертикального пробела. Если приложению необходимо знать последнее значение, записанное в регистр, то приложение несет ответственность за реализацию собственного теневого значения, чтобы запомнить то, что оно записало.
Имя | Описание | Чтение/запись | Шестнадцатеричный адрес | Декабрьский адрес | Теневое имя | Теневой шестнадцатеричный адрес | Тень Dec Адрес |
---|---|---|---|---|---|---|---|
АУДФ1 | Частота аудиоканала 1 | Писать | 200 динаров | 53760 | |||
ПОТ0 | Потенциометр (лопасть) 0 | Читать | 200 динаров | 53760 | ПАДДЛ0 | $0270 | 624 |
АУДК1 | Управление аудиоканалом 1 | Писать | 201 динара | 53761 | |||
ПОТ1 | Потенциометр (лопасть) 1 | Читать | 201 динара | 53761 | ВЕСЛО1 | $0271 | 625 |
АУДФ2 | Частота аудиоканала 2 | Писать | $202 динара | 53762 | |||
ПОТ2 | Потенциометр (лопасть) 2 | Читать | $202 динара | 53762 | ПАДДЛ2 | $0272 | 626 |
АУДК2 | Управление аудиоканалом 2 | Писать | $203 динара | 53763 | |||
ПОТ3 | Потенциометр (лопасть) 3 | Читать | $203 динара | 53763 | ПАДДЛ3 | $0273 | 627 |
АУДФ3 | Частота аудиоканала 3 | Писать | $204 динара | 53764 | |||
ПОТ4 | Потенциометр (лопасть) 4 | Читать | $204 динара | 53764 | ПАДДЛ4 | $0274 | 628 |
АУДК3 | Управление аудиоканалом 3 | Писать | 205 динаров | 53765 | |||
ПОТ5 | Потенциометр (лопасть) 5 | Читать | 205 динаров | 53765 | ПАДДЛ5 | $0275 | 629 |
АУДФ4 | Частота аудиоканала 4 | Писать | 206 динаров | 53766 | |||
ПОТ6 | Потенциометр (лопасть) 6 | Читать | 206 динаров | 53766 | ПАДДЛ6 | $0276 | 630 |
АУДК4 | Управление аудиоканалом 4 | Писать | 207 долларов США | 53767 | |||
ПОТ7 | Потенциометр (лопасть) 7 | Читать | 207 долларов США | 53767 | ПАДДЛ7 | $0277 | 631 |
АУДКТЛ | Управление звуком | Писать | 208 динаров | 53768 | |||
АЛЛПОТ | Чтение состояния порта 8-строчного POT | Читать | 208 динаров | 53768 | |||
ПОМЕШИВАТЬ | Запустить таймеры | Писать | 209 динаров | 53769 | |||
КБКОД | Код клавиатуры | Читать | 209 динаров | 53769 | СН | $02FC | 764 |
SKREST | Сброс серийного статуса (SKSTAT) | Писать | $D20A | 53770 | |||
СЛУЧАЙНЫЙ | Генератор случайных чисел | Читать | $D20A | 53770 | |||
ПОТГО | Начать последовательность сканирования POT | Писать | 20 миллиардов динаров | 53771 | |||
СЕРУТ | Вывод данных последовательного порта | Писать | 20 динаров | 53773 | |||
ПРОХЛАДНЫЙ | Ввод данных последовательного порта | Читать | 20 динаров | 53773 | |||
РАСА | Разрешение запроса на прерывание | Писать | 20 динаров | 53774 | ПОКМСК | $10 | 16 |
ВПРОСТ | Статус прерывания | Читать | 20 динаров | 53774 | |||
СККТЛ | Управление последовательным портом | Писать | 20 франков динаров | 53775 | ССККТЛ | $0232 | 562 |
SKSTAT | Статус последовательного порта | Читать | 20 франков динаров | 53775 |
В приведенных ниже списках отдельных реестров применяются следующие условные обозначения:
Битовое значение | Описание |
---|---|
0 | Бит должен быть 0 |
1 | Бит должен быть 1 |
? | Бит может быть равен 0 или 1 и используется для определенной цели. |
- | Бит не используется или не следует ожидать, что он будет иметь определенное значение. |
этикетка | Обратитесь к более позднему объяснению назначения бита. |
Аудио
[ редактировать ]Pokey содержит программируемый генератор звука ; четыре аудиоканала с отдельными регуляторами частоты, шума и голоса.
Каждый канал имеет 8-битный делитель частоты и 8-битный регистр для выбора шума и громкости.
- От AUDF1 до AUDF4 – регистр частоты (AUDio Frequency)
- От AUDC1 до AUDC4 – регистр громкости и шума (AUDio Control)
- AUDCTL – общий регистр, управляющий генераторами (AUDio ConTroL)
Звук POKEY своеобразен: при независимом использовании четырех каналов наблюдается заметная расстройка частей 12-тоновой равнотемперированной шкалы из-за недостаточной точности высоты тона. Каналы могут быть объединены в пары для более высокой точности; кроме того, различные формы искажений доступны , позволяющие добиться более плотного звука. Искажение в основном используется в музыке для басовых партий.
Один из звуковых движков, разработанных для семейства 8-битных систем Atari, назывался AMP (Advanced Music Processor). Этим воспользовался музыкант Гэри Гилбертсон .
Частота аудиоканала
[ редактировать ]Регистры AUDF* управляют частотой или высотой соответствующих звуковых каналов. Значения AUDF* также управляют аппаратными таймерами POKEY, полезными для кода, который должен выполняться через точные интервалы чаще, чем вертикальный пробел.
Каждый регистр AUDF* представляет собой 8-битное значение, обеспечивающее таймер обратного отсчета или делитель импульсов тактового генератора POKEY. Таким образом, меньшие значения позволяют более часто выдавать импульсы из POKEY, а большие значения - менее часто. Значения от $0 hex /0 dec до $FF hex /255 dec увеличиваются с помощью POKEY в диапазоне от $1 hex /1 dec до $100 hex /256 dec . Фактическая высота звука зависит от выбранной тактовой частоты POKEY и значений искажений. См. «Управление аудиоканалом» и «Управление звуком» .
AUDF1 $D200 Запись
[ редактировать ]Частота аудиоканала 1
AUDF2 $D202 Запись
[ редактировать ]Частота аудиоканала 2
AUDF3 $D204 Запись
[ редактировать ]Частота аудиоканала 3
AUDF4 $D206 Запись
[ редактировать ]Частота аудиоканала 4
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Управление аудиоканалом
[ редактировать ]Регистры управления аудиоканалами обеспечивают управление громкостью и искажениями отдельных звуковых каналов. Звук также может генерироваться независимо от тактового сигнала POKEY путем прямого управления громкостью звукового канала, что полезно для воспроизведения цифровых сэмплов.
AUDC1 $D201 Запись
[ редактировать ]Управление аудиоканалом 1
AUDC2 $D203 Запись
[ редактировать ]Управление аудиоканалом 2
AUDC3 $D205 Запись
[ редактировать ]Управление аудиоканалом 3
AUDC4 $D207 Запись
[ редактировать ]Управление аудиоканалом 4
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Шум 2 | Шум 1 | Шум 0 | Сила громкости | Том 3 | Том 2 | Том 1 | Том 0 |
Биты 0-3: Контроль уровня громкости от 0 до F.
Бит 4: Принудительный вывод только громкости. Когда этот бит установлен, канал игнорирует таймер AUDF, элементы управления шумом/искажением и фильтр верхних частот. Звук воспроизводится только при установке битов громкости 0:3. Эта функция использовалась для создания цифрового звука посредством импульсно-кодовой модуляции .
Биты 5-7: настройки сдвигового регистра для шумов/искажений. Значения битов описаны ниже:
Уровень шума | Биты Значение | Описание |
---|---|---|
0 0 0 | $00 | 5-битные, затем 17-битные полиномы |
0 0 1 | $20 | только 5-битное поли |
0 1 0 | $40 | 5-битные, затем 4-битные полисы |
0 1 1 | $60 | только 5-битное поли |
1 0 0 | $80 | только 17-битное поли |
1 0 1 | $А0 | нет поли (чистый тон) |
1 1 0 | $C0 | только 4-битное поли |
1 1 1 | $E0 | нет поли (чистый тон) |
Генерация случайных шумов осуществляется путем чтения 8 бит сверху 17-битного сдвигового регистра. Эти регистры управляются частотой 1,79 МГц для NTSC или 1,77 МГц для PAL. Его выходы могут использоваться независимо по скорости делителя каждого аудиоканала.
AUDCTL $D208 Запись
[ редактировать ]Управление звуком позволяет выбирать вход тактового сигнала, используемый для аудиоканалов, управлять функцией фильтра верхних частот, объединять два канала вместе, обеспечивая точность частоты 16 бит, выбирать высокочастотный тактовый сигнал для определенных каналов и контролировать «случайность». полиномиального входа.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
17 против 9 Поли | CH1 1,79 | СН3 1,79 | СН2 + 1 | СН4 + 3 | ФИ1+3 | ФИ2+4 | 64 против 15 кГц |
«1» означает «включено», если не указано иное:
- Бит 0
- $01: (15 кГц), выбор скорости делителя частоты «0» — 64 кГц, «1» — 15 кГц.
- Бит 1
- $02: (FI2 + 4), фильтр верхних частот для канала 2, рассчитанный по частоте канала 4.
- Бит 2
- $04: (FI1 + 3), фильтр верхних частот для канала 1, рассчитанный по частоте канала 3.
- Бит 3
- $08: (CH4+3), подключение делителей 4+3 для получения точности 16 бит.
- Бит 4
- $10: (CH2+1), подключение делителей 2+1 для получения точности 16 бит.
- Бит 5
- $20: (CH3 1,79), установите частоту канала 3 «0» — 64 кГц. «1» — это 1,79 МГц NTSC или 1,77 МГц PAL.
- Бит 6
- $40: (CH1 1,79), установите частоту канала 1 «0» — 64 кГц. «1» — это 1,79 МГц NTSC или 1,77 МГц PAL.
- Бит 7
- $80: (POLY 9), переключатель сдвига регистра «0» — 17 бит, «1» — 9 бит.
Все делители частоты (AUDF) могут управляться одновременно с частотой 64 кГц или 15 кГц.
Делители частоты 1 и 3 могут поочередно управляться тактовой частотой процессора (1,79 МГц NTSC, 1,77 МГц PAL). Делители частоты 2 и 4 могут поочередно управляться выходами делителей 1 и 3. Таким образом, POKEY позволяет подключать 8-битные каналы для создания звука с 16-битной точностью.
Возможные конфигурации каналов:
- четыре 8-битных канала
- два 8-битных канала и один 16-битный канал
- два 16-битных канала
Потенциометры
[ редактировать ]POKEY имеет восемь портов аналого-цифрового преобразователя, которые чаще всего используются для потенциометров, также известных как лопастные контроллеры. Аналоговые входы также используются для контроллера Touch Tablet и 12-кнопочных контроллеров клавиатуры для видеоигр. Каждый вход имеет транзистор, который можно включать и выключать с помощью программного обеспечения. Таймеры также можно использовать для поддержки светового пера , подключив фотодиод к капельному транзистору, который фиксирует таймер, когда электронный луч в телевизоре проходит мимо пера. Вертикальное положение пера нужно было читать отдельно.
POT0 $D200 Чтение
[ редактировать ]ТЕНЬ: PADDL0 $0270
Лопастной контроллер 0, вход
POT1 $D201 Чтение
[ редактировать ]ТЕНЬ: PADDL1 $0271
Лопастной контроллер 1 вход
POT2 $D202 Чтение
[ редактировать ]ТЕНЬ: PADDL2 $0272
Лопастной контроллер 2 входа
POT3 $D203 Чтение
[ редактировать ]ТЕНЬ: PADDL3 $0273
Контроллер весла, 3 входа
POT4 $D204 Чтение
[ редактировать ]ТЕНЬ: PADDL4 $02704
Контроллер весла, 4 входа
POT5 $D205 Чтение
[ редактировать ]ТЕНЬ: PADDL5 $0275
Контроллер весла, 5 входов
POT6 $D206 Чтение
[ редактировать ]ТЕНЬ: PADDL6 $0276
Контроллер весла, 6 входов
POT7 $D207 Чтение
[ редактировать ]ТЕНЬ: PADDL7 $0277
Контроллер весла, 7 входов
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Каждый вход имеет 8-битный таймер, отсчитывающий время отображения каждой ТВ-линии. Это имело дополнительное преимущество, заключающееся в том, что считываемое значение можно было вводить непосредственно в экранные координаты объектов, приводимых в движение лопастями. Значения Atari Paddle варьируются от 0 до 228, хотя максимально возможное значение составляет 244. Контроллер Paddle считывает 0 при повороте в максимальное положение по часовой стрелке и возвращает возрастающие значения при повороте против часовой стрелки, заканчивая максимальным значением.
Процесс чтения Paddle начинается с записи в POTGO, которая сбрасывает значения POT* в 0, значение ALLPOT в $FF и разряжает конденсаторы чтения потенциометра. Значения POT* увеличиваются по мере их сканирования, пока не достигнут значения сопротивления потенциометра. Когда чтение Paddle завершено, соответствующий бит в ALLPOT сбрасывается в 0.
Процесс сканирования Paddle может занять большую часть видеокадра. Операционная система Atari автоматически обеспечивает чтение Paddle. На этапе 2 вертикального бланка считываются электроды и начинается сканирование электродов. Значения Paddle копируются в теневые регистры. (Обратите внимание, что триггеры Paddle на самом деле представляют собой входные данные направления джойстика, считываемые из PIA.)
Более быстрый режим сканирования Paddles возможен путем установки бита в SKCTL . Последовательность считывания занимает всего пару строк сканирования, но значение менее точное.
ALLPOT $D208 Чтение
[ редактировать ]Статус сканирования потенциометра
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Весло 7 | Весло 6 | Весло 5 | Весло 4 | Весло 3 | Весло 2 | Весло 1 | Весло 0 |
Каждый бит соответствует одному входу потенциометра (регистры POT*). Когда сканирование ракетки начинается путем записи в POTGO, каждый бит ракетки в ALLPOT устанавливается в 1. Когда сканирование ракетки завершается, соответствующий бит в ALLPOT сбрасывается в 0, указывая, что значение в соответствующем регистре POT* теперь доступно для чтения.
POTGO $D20B Запись
[ редактировать ]Запустить сканирование потенциометра
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Запись в POTGO инициирует процесс сканирования потенциометра (лопатки). Это сбрасывает значения POT* на 0, значение ALLPOT на $FF и разряжает конденсаторы считывания потенциометра. По завершении каждого сканирования потенциометра бит, соответствующий потенциометру в ALLPOT, очищается, указывая, что значение соответствующего регистра POT* доступно для чтения.
Последовательный порт ввода-вывода
[ редактировать ]Содержит:
- последовательная входная линия
- линия последовательного вывода
- выходная линия последовательного тактового сигнала
- двусторонняя последовательная линия передачи данных тактового сигнала
- registers SKREST, SEROUT, SERIN, SKCTL, SKSTAT
POKEY — это разновидность UART . Обычно один из дублированных аудиоканалов используется в качестве генератора скорости передачи данных. Стандартная скорость передачи данных составляет 19,2 кбит/с, максимально возможная скорость передачи данных — 127 кбит/с. Байт, помещенный в регистр SEROUT, автоматически отправляется по последовательной шине. Кадр данных содержит 10 бит: 1 стартовый бит, 8 бит данных, 1 стоповый бит. Уровни напряжения составляют 0 В (логический 0) и +4 В (логическая 1). Последовательный порт Atari можно соединить с портом RS-232 с помощью простого преобразователя напряжения.
Каждая операция ввода/вывода приводит к изменению значения внутренних регистров сдвига POKEY, поэтому при программировании для POKEY необходимо повторно инициализировать некоторые значения после выполнения каждой операции.
SKREST $D20A Write
[ редактировать ]Сброс состояния последовательного порта (SKSTAT).
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Запись в этот регистр сбрасывает биты с 5 по 7 SKSTAT , которые фиксируются в 1. Защелки отмечают переполнение клавиатуры, переполнение ввода последовательных данных и ошибку кадра ввода последовательных данных.
SEROUT $D20D Запись
[ редактировать ]Байт вывода данных последовательного порта.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Это параллельный регистр хранения восьмибитного (одного байта) значения, которое будет передаваться в последовательный сдвиговый регистр для вывода по одному биту за раз. Когда порт готов принимать данные для вывода, прерывание последовательного вывода данных сообщает операционной системе, что она может записать байт в этот выходной регистр.
СЕРИН $D20D Читать
[ редактировать ]Входной байт данных последовательного порта.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Как и SEROUT, также параллельный регистр временного хранения. Он содержит восьмибитное (один байт) значение, собранное последовательным сдвиговым регистром, считывающим входные данные по одному биту за раз. Когда считывается полный байт, происходит прерывание ввода последовательных данных, информирующее операционную систему о том, что она может прочитать байт из этого регистра.
SKCTL $D20F Запись
[ редактировать ]Управление последовательным портом
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Серийный перерыв | Последовательный режим2 | Последовательный режим1 | Последовательный режим0 | Серийный двухцветный | Быстрое сканирование банка | Включить сканирование базы знаний | Отказ от КБ |
Бит 0: включить сканирование с устранением дребезга, которое предназначено для устранения шума или джиттера от механических переключателей. Значение 1 позволяет POKEY использовать внутренний регистр сравнения при сканировании ключей. Клавиша должна быть обнаружена в двух одновременных сканированиях, прежде чем она будет идентифицирована как нажатая, и она должна быть видна отпущенной, чтобы два последовательных сканирования считались отпущенными. Это должно быть включено, чтобы обеспечить нормальную работу с клавиатурой в операционной системе.
Бит 1: установите в 1, чтобы включить сканирование клавиатуры. Это должно быть включено, чтобы обеспечить нормальную работу с клавиатурой в операционной системе.
Бит 2: установите в 1, чтобы включить быстрое, но менее точное сканирование потенциометра. Быстрое сканирование потенциометра увеличивает счетчик в каждом цикле и возвращает полезный результат в течение двух строк сканирования. Операционная система использует медленное сканирование горшков, которое увеличивает счетчик каждые 114 циклов (строка сканирования), занимая кадр (1/60 секунды) для получения результата. ОС считывает значения потенциометра во время вертикального пустого прерывания (VBI) и копирует результат в теневые регистры потенциометра в ОЗУ. Затем он сбрасывает POTGO для следующего чтения во время следующего VBI.
Бит 3: включить двухтональный режим последовательного порта. Когда эта функция включена, биты 1 и 0, выводимые на шину SIO, заменяются тонами, установленными таймерами 1 и 2. Обычно это используется для записи аналоговых тонов, представляющих цифровые данные, на кассету.
Биты 4–6: Управление синхронизацией для работы последовательного порта. Значения битов описаны ниже:
Управление портом [6:4] | Биты Значение | Входные часы | Выходная тактовая частота | Двунаправленные часы |
---|---|---|---|---|
0 0 0 | $00 | Внешний | Внешний | Вход |
0 0 1 | $10 | Каналы 3+4 (асинхронные) | Внешний | Вход |
0 1 0 | $20 | Канал 4 | Канал 4 | Выходной канал 4 |
0 1 1 | $30 | Канал 3+4 (асинхронный) | Канал 4 (асинхронный) | Вход |
1 0 0 | $40 | Внешний | Канал 4 | Вход |
1 0 1 | $50 | Канал 3+4 (асинхронный) | Канал 4 (асинхронный) | Вход |
1 1 0 | $60 | Канал 4 | Канал 2 | Выходной канал 4 |
1 1 1 | $70 | Канал 3+4 (асинхронный) | Канал 2 | Вход |
Бит 7: принудительно выдает на выходе известный 0, чтобы таймер 2 мог сбросить таймер 1 в режиме двухтонального последовательного вывода.
SKSTAT $D20F Чтение
[ редактировать ]Статус последовательного порта
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Серийный номер в ошибке кадра | Сериал в застое | переполнение КБ | Чтение данных готово | Клавиша Shift | Последняя клавиша все еще нажата | Последовательный вход занят | - |
KBCODE $D209 Чтение
[ редактировать ]ТЕНЬ: CH $02FC
Код клавиатуры
Восемь прерываний IRQ
[ редактировать ]- ПЕРЕРЫВ
- Break (прерывание клавишей BREAK)
- К
- Клавиатура (прерывание клавиатуры)
- СЭР
- если последовательный вход готов (чтение прерывания с последовательного канала)
- ОДН
- если необходимы выходные данные (прерывание записи по последовательному каналу)
- XD
- if eXmitend Data (прерывание окончания последовательной передачи)
- Т1
- Таймер 1, прерывание таймера 1
- Т2
- Таймер 2, прерывание таймера 2
- Т4
- Таймер 4, прерывание таймера 4
Прерывания можно включать и выключать программно с помощью регистра IRQEN. Регистр IRQSTAT содержит статус прерываний.
Клавиатура
[ редактировать ]Шесть ключевых регистров фактически нажатых клавиш (K0 K5), которые содержат значения от 00 до 3F. Содержит 2 контрольных значения. Один из них действует как декодер всех 6 значений. Второе управляющее значение используется для декодирования значений специальных клавиш — CTRL, SHIFT и BREAK.
Ссылки
[ редактировать ]- ^ «I. Теория действия». Руководство по выездному обслуживанию домашнего компьютера Atari — 400/800 . Atari, Inc., стр. 1–11.
- ^ Хейг, Джеймс (1 июня 2002 г.). «Интервью с Дугом Нойбауэром» . Безмятежные дни . Проверено 14 января 2008 г.
- ^ «Глава 7: Звук». Де Ре Атари . Атари, Инк., 1982 г.
- ^ Майкл Каррент, «Что такое чипы SALLY, ANTIC, CTIA/GTIA, POKEY и FREDDIE?» , 8-битные компьютеры Atari: часто задаваемые вопросы
- ^ Atari, Inc. (24 января 1979 г.). «Устройство для создания множества аудиозвуковых эффектов» . Патент США . Проверено 14 января 2008 г.
- ^ «Различия Atari Pokey» . 16 ноября 2016 г.
- ^ https://forums.arcade-museum.com/threads/atari-pokey-chip-replacements-and-possible-fix.464086/page-4
Внешние ссылки
[ редактировать ]- ASMA — Музыкальный архив Atari SAP Коллекция проигрывателей музыки с чипом POKEY (SAP) и музыки SAP из различных 8-битных игр Atari.
- Технический паспорт чипа POKEY, отсканированный в PDF .
- POKEY сделан из небольших логических чипов
- Видео 8-битной версии Atari (с использованием POKEY), эмулирующей чип Commodore SID.