Горшок клавиатура Integrated Circuit ( Поки ) [1] представляет собой цифровой I / O чип предназначен для Atari 8-битного семейства домашних компьютеров и нашли в Atari аркадных игр 1980 - х годов. POKEY сочетает в себе функции потенциометров выборки (таких как игровые манипуляторы ) и матриц сканирования переключателей (таких как клавиатура компьютера ), а также генерации звука. Он производит четыре голоса характерного прямоугольного звука либо в виде чистых тонов, либо измененных с помощью ряда настроек искажения. [2]
Чипы POKEY используются для воспроизведения звука во многих аркадных играх, включая Centipede , Missile Command , Asteroids Deluxe и Gauntlet . Некоторые аркадные системы Atari используют многоядерные версии с 2 или 4 POKEY в одном пакете для большего количества звуковых голосов. 7800 Атари консоль позволяет игровой картридж содержит Поки, обеспечивая лучший звук , чем звуковой чип системы. Только две лицензионные игры используют это: порты Ballblazer и Commando .
БИС чип имеет 40 штырей и идентифицируется как C012294. [3] POKEY был разработан сотрудником Atari Дугом Нойбауэром , [4] который также программировал оригинальные Star Raiders . USPTO получил патент США 4,314,236 для Atari 2 февраля 1982 года для «Аппарата для получения множества аудио звуковых эффектов». [5] Перечисленные изобретатели - Стивен Т. Майер и Рональд Э. Милнер.
POKEY больше не производится, ПОКЕЙ эмулируется в программном обеспечении с помощью аркадных и 8-битных эмуляторов Atari, а также с помощью музыкального формата Atari SAP и соответствующего проигрывателя.
Особенности [ править ]
- Аудио
- 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 - AMI
- C012294-03 - Signetics
- C012294-19 - National Semiconductor
- C012294-22 - OKI
- C012294-31 - IMP
- 137430-001 - Номер детали, который иногда используется в аркадных автоматах Atari для игры в POKEY.
- 137324-1221 - Четырехъядерный POKEY, используемый в аркадных автоматах Atari Major Havoc , I, Robot , Firefox и Return of the Jedi . [6]
Распиновка [ править ]
Имя контакта | Номер (а) контакта | Описание |
---|---|---|
A0 - A3 | 36, 35, 34, 33 | Ввод адреса памяти |
ACLK | 27 | Последовательный тактовый выход |
AUD | 37 | Аудио выход |
BCLK | 26 | Двунаправленный ввод / вывод часов |
CS0 | 30 | Выбор чипа |
CS1 | 31 год | Выбор чипа |
D0 - D7 | 38, 39, 40, 2, 3, 4, 5, 6 | Ввод / вывод шины данных |
IRQ | 29 | Выход запроса прерывания |
K0 - K5 | 23, 22, 21, 20, 19, 18 | Вывод сканирования клавиатуры |
КР1 - КР2 | 25, 16 | Вход строба строки клавиатуры |
P0 - P7 | 14, 15, 12, 13, 10, 11, 8, 9 | Потенциометр (весло) сканирование |
R / W | 32 | Чтение / запись управления вводом / выводом |
SID | 24 | Последовательные входные данные |
SOD | 28 | Последовательные выходные данные |
V cc | 17 | Мощность +5 Вольт |
В сс | 1 | Земля |
Ø2 | 7 | Вход синхронизации фазы 2 |
Регистры [ править ]
8-битные компьютеры Atari отображают POKEY на шестнадцатеричную страницу $ D2xx, а консоль Atari 5200 отображает его на шестнадцатеричную страницу $ E8xx .
POKEY предоставляет 29 регистров чтения / записи, управляющих звуком, вводом Paddle, вводом с клавиатуры, последовательным вводом / выводом и прерываниями. Многие адреса регистров POKEY имеют двойное назначение, выполняя различные функции: регистр чтения и регистр записи. Следовательно, никакой код не должен читать аппаратные регистры, ожидая получить ранее записанное значение.
Эта проблема решается для некоторых регистров с помощью «теневых» регистров операционной системы, реализованных в обычной оперативной памяти, которые отражают значения аппаратных регистров. Во время вертикального пробела операционная система копирует теневые регистры из ОЗУ для регистров записи в соответствующий аппаратный регистр и соответственно обновляет значения теневых регистров для регистров чтения из оборудования. Следовательно, записи в аппаратные регистры, которые имеют соответствующие теневые регистры, будут перезаписаны значением теневых регистров во время следующего вертикального пробела.
Чтение значений непосредственно с аппаратного обеспечения на неизвестной стадии цикла отображения может дать противоречивые результаты (пример: показания потенциометров). Теневые регистры операционной системы для регистров чтения обычно являются предпочтительным источником информации.
Некоторые аппаратные регистры записи не имеют соответствующих теневых регистров. Они могут быть безопасно записаны приложением без перезаписи значения во время вертикального пробела. Если приложению необходимо знать последнее значение, записанное в регистр, тогда приложение должно реализовать собственное теневое значение, чтобы запомнить то, что оно записало.
Имя | Описание | Читай пиши | Hex Addr | Dec Addr | Имя тени | Shadow Hex Addr | Shadow Dec Addr |
---|---|---|---|---|---|---|---|
AUDF1 | Частота аудиоканала 1 | Написать | 200 долларов США | 53760 | |||
POT0 | Потенциометр (весло) 0 | Читать | 200 долларов США | 53760 | PADDL0 | $ 0270 | 624 |
AUDC1 | Управление аудиоканалом 1 | Написать | 201 доллар США | 53761 | |||
POT1 | Потенциометр (весло) 1 | Читать | 201 доллар США | 53761 | PADDL1 | 0271 долл. США | 625 |
AUDF2 | Частота аудиоканала 2 | Написать | 202 долл. США | 53762 | |||
POT2 | Потенциометр (весло) 2 | Читать | 202 долл. США | 53762 | PADDL2 | 0272 долл. США | 626 |
AUDC2 | Управление аудиоканалом 2 | Написать | 203 долл. США | 53763 | |||
POT3 | Потенциометр (весло) 3 | Читать | 203 долл. США | 53763 | PADDL3 | 0273 долл. США | 627 |
AUDF3 | Частота аудиоканала 3 | Написать | 204 долл. США | 53764 | |||
POT4 | Потенциометр (весло) 4 | Читать | 204 долл. США | 53764 | PADDL4 | 0274 долл. США | 628 |
AUDC3 | Управление аудиоканалом 3 | Написать | 205 долларов США | 53765 | |||
POT5 | Потенциометр (весло) 5 | Читать | 205 долларов США | 53765 | PADDL5 | $ 0275 | 629 |
AUDF4 | Частота аудиоканала 4 | Написать | 206 долларов США | 53766 | |||
POT6 | Потенциометр (весло) 6 | Читать | 206 долларов США | 53766 | PADDL6 | 0276 долл. США | 630 |
AUDC4 | Управление аудиоканалом 4 | Написать | 207 долларов США | 53767 | |||
POT7 | Потенциометр (весло) 7 | Читать | 207 долларов США | 53767 | PADDL7 | 0277 долл. США | 631 |
AUDCTL | Управление звуком | Написать | 208 долларов США | 53768 | |||
ALLPOT | Считать состояние порта POT в 8 строках | Читать | 208 долларов США | 53768 | |||
СТИМЕР | Таймеры запуска | Написать | 209 долларов США | 53769 | |||
KBCODE | Код клавиатуры | Читать | 209 долларов США | 53769 | CH | $ 02FC | 764 |
СКРЕСТ | Сбросить серийный статус (SKSTAT) | Написать | $ D20A | 53770 | |||
СЛУЧАЙНЫЙ | Генератор случайных чисел | Читать | $ D20A | 53770 | |||
ПОТГО | Начать последовательность сканирования POT | Написать | 20 млрд долларов | 53771 | |||
SEROUT | Вывод данных последовательного порта | Написать | $ D20D | 53773 | |||
СЕРИН | Ввод данных последовательного порта | Читать | $ D20D | 53773 | |||
IRQEN | Разрешение запроса прерывания | Написать | $ D20E | 53774 | ПОКМСК | 10 долларов | 16 |
IRQST | Статус IRQ | Читать | $ D20E | 53774 | |||
SKCTL | Управление последовательным портом | Написать | $ D20F | 53775 | SSKCTL | $ 0232 | 562 |
СКСТАТ | Статус последовательного порта | Читать | $ D20F | 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 шестнадцатеричный / 0 десятичный до $ FF шестнадцатеричный / 255 десятичных увеличиваются с помощью POKEY до диапазона от 1 шестнадцатеричного доллара / 1 десятичного до 100 шестнадцатеричного / 256 десятичного . Фактическая высота слышимого звука зависит от выбранной тактовой частоты POKEY и значений искажения. См Audio Control Channel и управления аудио .
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 | $ A0 | нет поли (чистый тон) |
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 Поли | Канал 1.79 | CH3 1,79 | Канал 2 + 1 | CH4 + 3 | FI1 + 3 | FI2 + 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), установите частоту «0» канала 3, равную 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 имеет восемь аналогово-цифровых преобразователей портов, наиболее часто используемых для потенциометров, также известных как контроллеры весла. Аналоговые входы также используются для контроллера сенсорного планшета и 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.)
Более быстрый режим сканирования лопастей возможен путем установки бита в 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 запускает процесс сканирования потенциометра (Paddle). Это сбрасывает значения POT * на 0, значение ALLPOT на $ FF и разряжает конденсаторы считывания потенциометра. Когда каждое сканирование потенциометра завершается, бит, соответствующий потенциометру в ALLPOT , очищается, показывая, что значение соответствующего регистра POT * допустимо для чтения.
Последовательный порт ввода-вывода [ править ]
Содержит:
- линия последовательного ввода
- линия последовательного вывода
- линия вывода последовательных часов
- двухсторонняя линия передачи данных с последовательными часами
- регистрирует 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 Написать [ редактировать ]
Сбросить статус последовательного порта (SKSTAT).
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Запись в этот регистр сбрасывает биты с 5 по 7 SKSTAT, которые являются защелками, в 1. Защелки обозначают переполнение клавиатуры, переполнение последовательного ввода данных и ошибку кадра последовательного ввода данных.
SEROUT $ D20D Написать [ редактировать ]
Байт вывода данных последовательного порта.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Это параллельный регистр «хранения» для восьмибитового (одного байта) значения, которое будет передано в регистр последовательного сдвига для вывода по одному биту за раз. Когда порт готов принимать данные для вывода, прерывание последовательного вывода данных сообщает операционной системе, что он может записать байт в этот выходной регистр.
SERIN $ D20D Читать [ править ]
Байт ввода данных последовательного порта.
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Как и SEROUT, это также параллельный регистр «хранения». Он содержит восьмибитное (однобайтное) значение, собираемое последовательным регистром сдвига, считывающим вводимые данные по одному биту за раз. Когда считывается полный байт, происходит прерывание ввода последовательных данных, информирующее операционную систему о том, что она может прочитать байт из этого регистра.
SKCTL $ D20F Запись [ править ]
Управление последовательным портом
Бит 7 | Бит 6 | Бит 5 | Бит 4 | Бит 3 | Бит 2 | Бит 1 | Бит 0 |
---|---|---|---|---|---|---|---|
Серийный перерыв | Последовательный режим 2 | Последовательный режим 1 | Последовательный режим0 | Последовательный двухтональный | Быстрое сканирование горшков | Включить сканирование КБ | KB debounce |
Бит 0: включить сканирование «противодействия», которое предназначено для устранения шума или дрожания от механических переключателей. Значение 1 позволяет POKEY использовать внутренний регистр сравнения при сканировании ключей. Клавиша должна быть обнаружена в двух одновременных сканированиях, прежде чем она будет идентифицирована как нажатая, и она должна быть видна отпущенной, чтобы два последовательных сканирования считались отпущенными. Это должно быть включено, чтобы поддерживать нормальную работу с клавиатурой в операционной системе.
Бит 1: Установите в 1, чтобы включить сканирование клавиатуры. Это должно быть включено, чтобы поддерживать нормальную работу с клавиатурой в операционной системе.
Бит 2: Установите в 1, чтобы включить быстрое, хотя и менее точное сканирование потенциометра. Сканирование Fast Pot увеличивает счетчик на каждый цикл и возвращает полезный результат в пределах двух строк сканирования. Операционная система использует медленное сканирование горшков, которое увеличивает счетчик каждые 114 циклов (строка развертки), принимая кадр (1/60 секунды) для получения результата. ОС считывает значения Pot во время прерывания по вертикали (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)
- K
- Клавиатура (прерывание клавиатуры)
- СЭР
- если последовательный вход готов (чтение прерывания с последовательной шины)
- ODN
- если требуются выходные данные (прерывание записи с последовательной шины)
- 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.
- ^ «Глава 7: Звук». De Re Atari . Atari, Inc. 1982 г.
- ^ Майкл Каррент, "Что такое чипы SALLY, ANTIC, CTIA / GTIA, POKEY и FREDDIE?" , 8-битные компьютеры Atari: часто задаваемые вопросы
- ^ Гаага, Джеймс (2002-06-01). «Интервью с Дугом Нойбауэром» . Безмятежные дни . Проверено 14 января 2008 года .
- ^ Atari, Inc. (1979-01-24). «Устройство для создания множества звуковых звуковых эффектов» . Патент США . Проверено 14 января 2008 года .
- ^ https://forums.arcade-museum.com/showthread.php?t=390819&page=2
Внешние ссылки [ править ]
- ASMA - Atari SAP Music Archive Коллекция проигрывателей музыки с чипом POKEY (SAP) и музыки SAP из различных 8-битных игр Atari.
- Лист данных чипа POKEY отсканирован в PDF .
- POKEY из малогабаритных логических микросхем
- Видео Atari 8-бит (с использованием POKEY), эмулирующего чип Commodore SID.