포키

POKEY
아타리의 포키 130XE

팟 키보드 집적회로([1]POKEY)는 아타리 8비트 가정용 컴퓨터 제품군을 위해 설계된 디지털 I/O 으로 1980년대 아타리 아케이드 게임에서 찾아볼 수 있다.POKEY는 사운드 발생뿐만 아니라 전위차계(게임 패들 등)와 스위치의 스캔 매트릭스(컴퓨터 키보드 등)를 샘플링하는 기능을 결합한다.선명한 음색이나 다수의 왜곡 설정으로 변형된 독특한 사각파 사운드의 네 가지 음성을 만들어 낸다.[2]

POKEY 칩은 센티페데, 미사일 커맨드, 소행성 디럭스, 건틀렛을 포함한 많은 아케이드 게임에서 오디오에 사용된다.아타리의 아케이드 시스템 중 일부는 2개 또는 4개의 POKEY가 포함된 멀티 코어 버전을 하나의 패키지로 사용하여 더 많은 음성을 낸다.아타리 7800 콘솔은 게임 카트리지에 POKEY가 들어 있어 시스템의 오디오 칩보다 더 좋은 소리를 제공한다.오직 두 개의 허가된 게임만이 이것을 사용한다: BallblazerCommando.

LSI 칩은 40개의 핀을 가지고 있으며 C012294로 식별된다.[3]POKEY는 아타리 직원 Doug Neubauer에 의해 설계되었으며,[4] 그는 또한 오리지널 스타 레이더스를 프로그래밍했다.USPTO는 1982년 2월 2일 아타리에게 "오디오 사운드 효과의 다원화를 위한 애플리케이션"에 대해 미국 특허 431만4236건을 허가했다.[5]목록에 있는 발명가들은 스티븐 T이다.메이어와 로널드 E.밀너.

더 이상 제조되지 않는 POKEY는 아케이드와 아타리 8비트 에뮬레이터에 의해 소프트웨어로 에뮬레이션되며, 아타리 SAP 음악 형식과 관련 플레이어를 통해서도 에뮬레이션된다.

특징들

  • 오디오
    • 4개의 반독립 오디오 채널
    • 채널은 다음 중 하나로 구성할 수 있다.
      • 4개의 8비트 채널
      • 두 개의 16비트 채널
      • 16비트 채널 1개와 8비트 채널 2개
    • 채널당 볼륨, 주파수파형(다양한 듀티 사이클 또는 유사 노이즈가 있는 사각 파형)
    • 15kHz 또는 64kHz 주파수 분할기.
    • 두 채널은 CPU 클럭 주파수로 구동될 수 있다.
    • 하이패스 필터
  • 키보드 스캔(최대 64 키) + 수정자 비트 2개(Shift, Control) + Break
  • 전위차계 포트(독립 포트 8개, 각각 8비트 분해능 포함)
  • 고해상도 타이머(오디오 채널 1, 2, 4가 0을 넘을 때 타이머 인터럽트를 발생시키도록 구성할 수 있음)
  • 임의 번호 생성기(17비트 다항식 카운터의 8비트를 읽을 수 있음)
  • 직렬 I/O 포트
  • IRQ 인터럽트 8개

버전

부품 번호별:

  • C012294 - Atari XEGS를 비롯한 모든 Atari 8비트 패밀리 컴퓨터 및 Atari 5200 콘솔에서 사용됨.칩의 접미사는 제조업체를 가리킨다.
    • C012294B-01 - AMI
    • C012294-03 — 기호학
    • C012294-19 — 국가 반도체
    • C012294-22 — OKI
    • C012294-31 — IMF
  • 137430-001 — POKEY용 아타리 아케이드 기계에서 가끔 사용되는 부품 번호.
  • 137324-1221 — 아타리 오락실 기계에 사용되는 쿼드 코어 POKEY, Major Havoc, I, Robot, FirefoxReturn of the Jedi에 사용된다.[6]

핀아웃

Atari POKEY(C012294) 핀아웃
핀 이름 핀 번호 설명
A0 - A3 36, 35, 34, 33 메모리 주소 입력
ACLK 27 직렬 클럭 출력
AUD 37 오디오 출력
BCLK 26 양방향 클럭 I/O
CS0 30 칩 선택
CS1 31 칩 선택
D0 - D7 38, 39, 40, 2, 3, 4, 5, 6 데이터 버스 I/O
IRQ 29 인터럽트 요청 출력
K0 - K5 23, 22, 21, 20, 19, 18 키보드 스캔 출력
KR1 - KR2 25, 16 키보드 행 스트로보 입력
P0 - P7 14, 15, 12, 13, 10, 11, 8, 9 전위차계(패들) 스캔
R/W 32 읽기/쓰기 I/O 제어
SID 24 직렬 입력 데이터
SOD 28 직렬 출력 데이터
브이cc 17 전원 +5V
브이ss 1 그라운드
Ø2 7 2단계 클럭 입력

레지스터

아타리 8비트 컴퓨터는 POKEY를 $D2xxhex 페이지에 매핑하고, 아타리 5200 콘솔은 $E8xxhex 페이지에 매핑한다.

POKEY는 사운드, 패들 입력, 키보드 입력, 직렬 입력/출력 및 인터럽트를 제어하는 29개의 읽기/쓰기 레지스터를 제공한다.많은 POKEY 레지스터 주소는 읽기 대 쓰기 레지스터로서 다른 기능을 수행하는 이중 목적을 가지고 있다.따라서 어떤 코드도 이전에 작성된 값을 검색할 것으로 예상되는 하드웨어 레지스터를 읽으면 안 된다.

이 문제는 하드웨어 레지스터의 값을 반영하는 일반 RAM에 구현된 운영체제 "섀도" 레지스터에 의해 일부 레지스터에 대해 해결된다.수직 공백 동안 운영 체제는 RAM에 있는 쓰기 레지스터의 섀도 레지스터를 해당 하드웨어 레지스터에 복사하고 그에 따라 하드웨어에서 읽기 레지스터의 섀도 값을 업데이트한다.따라서 해당 섀도 레지스터가 있는 하드웨어 레지스터에 대한 쓰기는 다음 수직 공백 동안 섀도 레지스터의 값으로 덮어쓰게 된다.

디스플레이 주기의 알 수 없는 단계에서 하드웨어에서 직접 값을 판독하면 일관되지 않은 결과가 반환될 수 있다(예: 판독 전위차계).읽기 레지스터에 대한 운영 체제 섀도 레지스터는 일반적으로 선호하는 정보 출처가 될 수 있다.

일부 쓰기 하드웨어 레지스터에는 해당 섀도 레지스터가 없다.그것들은 세로 공백 동안 덮어쓰지 않고 애플리케이션에 의해 안전하게 쓰일 수 있다.만약 신청서가 등록부에 쓰여진 마지막 값을 알아야 한다면, 신청서가 작성한 내용을 기억하는 것은 신청서의 책임이다.

이름 설명 읽기/쓰기 헥스 애드르 데크 애드르 섀도 이름 섀도 16진수 추가자 섀도우 데크 애드러
AUDF1 오디오 채널 1 주파수 쓰다 D200달러 53760
POT0 전위차계(패들) 0 읽다 D200달러 53760 패들0 $0270 624
AUDC1 오디오 채널 1 컨트롤 쓰다 $D201 53761
POT1 전위차계(패들) 1 읽다 $D201 53761 패들1길 $0271 625
AUDF2 오디오 채널 2 주파수 쓰다 $D202 53762
POT2 전위차계(패들) 2 읽다 $D202 53762 패들2 $0272 626
AUDC2 오디오 채널 2 컨트롤 쓰다 $D203 53763
POT3 전위차계(패들) 3 읽다 $D203 53763 패들3 $0273 627
AUDF3 오디오 채널 3 주파수 쓰다 $D204 53764
POT4 전위차계(패들) 4 읽다 $D204 53764 패들4 $0274 628
AUDC3 오디오 채널 3 컨트롤 쓰다 $D205 53765
POT5 전위차계(패들) 5 읽다 $D205 53765 패들5길 $0275 629
AUDF4 오디오 채널 4 주파수 쓰다 $D206 53766
POT6 전위차계(패들) 6 읽다 $D206 53766 패들6 $0276 630
AUDC4 오디오 채널 4 컨트롤 쓰다 $D207 53767
POT7 전위차계(패들) 7 읽다 $D207 53767 패들7길 $0277 631
AUDCTL 오디오 컨트롤 쓰다 $D208 53768
올팟 8라인 POT 포트 상태 읽기 읽다 $D208 53768
스팀머 시작 티머스 쓰다 $D209 53769
KBCODE 키보드 코드 읽다 $D209 53769 CH $02FC 764
SKREST 시리얼 상태 재설정(SKSTAT) 쓰다 $D20A 53770
랜덤 난수 생성기 읽다 $D20A 53770
팟고 POT 스캔 시퀀스 시작 쓰다 D20B 달러 53771
세라우트 직렬 포트 데이터 출력 쓰다 $D20D 53773
세린 직렬 포트 데이터 입력 읽다 $D20D 53773
IRQEN 인터럽트 요청 사용 쓰다 $D20E 53774 포컴스크 $10 16
IRQST IRQ 상태 읽다 $D20E 53774
SKCTL 직렬 포트 제어 쓰다 $D20F 53775 SSKCTL $0232 562
SKSTAT 직렬 포트 상태 읽다 $D20F 53775

아래의 개별 레지스터 목록에는 다음과 같은 범례가 적용된다.

비트 값 설명
0 비트는 0이어야 함
1 비트는 1이어야 함
? 비트는 0 또는 1일 수 있으며 목적을 위해 사용된다.
- 비트가 사용되지 않았거나 특정 값이 될 것으로 예상되지 않아야 함
라벨을 붙이다 비트의 용도는 나중에 설명하는 것을 참조하십시오.

오디오

포키는 별도의 주파수, 노이즈 및 음성 수준 제어를 가진 4개의 오디오 채널인 프로그램 가능한 사운드 발생기를 포함하고 있다.

각 채널에는 8비트 주파수 분할기와 8비트 레지스터가 있어 노이즈와 볼륨을 선택한다.

  • AUDF1에서 AUDF4로 – 주파수 레지스터(오디오 주파수)
  • AUDC1에서 AUDC4까지 – 볼륨 및 소음 기록부(AUDIO Control
  • AUDCTL – 제너레이터를 제어하는 일반 레지스터(AUDIO ConTroL)

포키 사운드는 4개의 채널을 독립적으로 사용할 경우 피치 정확도가 떨어져 12음 동일 기질 척도의 일부가 눈에 띄게 분리되는 특징이 있다.더 높은 정확도를 위해 채널을 쌍으로 구성할 수 있으며, 또한 다양한 형태의 왜곡을 사용할 수 있어 더 두꺼운 소리를 낼 수 있다.왜곡은 주로 베이스 파트의 음악에서 사용된다.

아타리 8비트 제품군을 위해 개발된 사운드 엔진 중 하나는 AMP 엔진(Advanced Music Processor)이라고 불렸다.이것은 음악가 게리 길버트슨에 의해 사용되었다.

오디오 채널 주파수

AUDF* 등록부는 해당 사운드 채널의 주파수 또는 피치를 제어한다.또한 AUDF* 값은 수직 공백보다 더 빈번하게 실행되어야 하는 코드에 유용한 POKEY 하드웨어 타이머를 제어한다.

각 AUDF* 레지스터는 POKEY 클럭의 펄스에 대한 카운트다운 타이머 또는 디비저를 제공하는 8비트 값이다.따라서 값이 작을수록 POKEY에서 펄스 출력이 더 빈번해지고 값이 클수록 빈도가 감소한다.$0/0에서dec $FFhex/255까지의hexdec 값은 POKEY에 의해 증가되어dec $1에서hexhex $100dec/256까지 다양하다.실제 가청음 피치는 선택한 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 $A0 폴리 없음(미백 톤)
1 1 0 $C0 4비트 폴리 전용
1 1 1 $E0 폴리 없음(미백 톤)

무작위 노이즈를 발생시키는 것은 17비트 시프트 레지스터 위에서 8비트를 읽으면 된다.이 레지스터는 NTSC의 경우 주파수 1.79MHz 또는 PAL의 경우 주파수 1.77MHz에 의해 구동된다.그것의 출력은 각 오디오 채널의 분배율에 의해 독립적으로 사용될 수 있다.

AUDCTL $D208 쓰기

오디오 컨트롤은 오디오 채널에 사용되는 클럭 입력 선택, 고역 통과 필터 기능에 대한 제어, 두 채널을 병합하여 16비트 주파수 정확도를 허용하고 특정 채널에 대한 고주파 클럭 선택, 다항식 입력의 "랜덤스" 제어 등을 가능하게 한다.

비트 7 비트 6 비트 5 비트 4 비트 3 비트 2 비트 1 비트 0
17 대 9 폴리 CH1 1.79 CH3 1.79 CH2 + 1 CH4 + 3 FI1 + 3 FI2 + 4 64 대 15kHz

"1"은 설명되지 않은 경우 "on"을 의미한다.

비트 0
$01: (15kHz), 주파수 분할 속도 "0" - 64kHz, "1" - 15kHz 선택
비트 1
$02: (FI2 + 4) 채널 4의 주파수로 정격 채널 2의 하이패스 필터
비트 2
$04: (FI1 + 3) 채널 3의 주파수로 정격 채널 1의 하이패스 필터
비트 3
$08: (CH4 + 3) 16비트 정확도를 얻기 위해 분할기 4+3 연결
비트 4
$10: (CH2 + 1) 16비트 정확도를 얻기 위한 분할기 2+1 연결
비트 5
$20: (CH3 1.79) 설정 채널 3 주파수 "0"은 64 kHz. "1"은 1.79 MHz NTSC 또는 1.77 MHz PAL이다.
비트 6
$40: (CH1 1.79) 설정 채널 1 주파수 "0"은 64 kHz, "1"은 1.79 MHz NTSC 또는 1.77 MHz PAL이다.
비트 7
$80: (POLY 9), 스위치 시프트 레지스터 "0" - 17비트, "1" – 9비트

모든 주파수 분배기(AUDF)는 64 kHz 또는 15 kHz 속도로 동시에 구동할 수 있다.

주파수 분배기 1과 3은 CPU 클럭(1.79MHz NTSC, 1.77MHz PAL)으로 번갈아 구동할 수 있다.주파수 분할기 2와 4는 분할기 1과 3의 출력에 의해 교대로 구동될 수 있다.이렇게 해서 POKEY는 8비트 채널의 연결을 가능하게 하여 16비트 정확도로 소리를 만들어 낸다.

가능한 채널 구성:

  • 8비트 채널 4개
  • 8비트 채널 2개와 16비트 채널 1개
  • 두 개의 16비트 채널

전위차계

POKEY에는 패들 컨트롤러라고도 알려진 전위차계에 가장 일반적으로 사용되는 8개의 아날로그 디지털 컨버터 포트가 있다.아날로그 입력은 터치 태블릿 컨트롤러와 비디오 게임 키보드 컨트롤러에도 사용된다.각 입력에는 낙하 트랜지스터가 있어 소프트웨어에서 설정하거나 해제할 수 있다.타이머는 또한 투하 트랜지스터에 광다이오드를 연결함으로써 라이트 펜을 지지하는데 사용될 수 있는데, 이것은 텔레비전의 전자 빔이 펜을 통과할 때 타이머를 포착한다.펜의 수직 위치는 따로 읽어야 했다.

POT0 $D200 읽기

그림자: 패들0 $0270

패들 컨트롤러 0 입력

POT1 $D201 읽기

그림자: 패들1달러 0271원

패들 컨트롤러 1 입력

POT2 $D202 읽기

그림자: 패들2달러 0272달러

패들 컨트롤러 2 입력

POT3 $D203 읽기

그림자: 패들3달러 0273원

패들 컨트롤러 3 입력

POT4 $D204 읽기

그림자: 패들4달러 02704원

패들 컨트롤러 4 입력

POT5 $D205 읽기

그림자: 패들5달러 0275센트

패들 컨트롤러 5 입력

POT6 $D206 읽기

그림자: 패들6달러 0276센트

패들 컨트롤러 6 입력

POT7 $D207 읽기

그림자: 패들7달러 0277센트

패들 컨트롤러 7 입력

비트 7 비트 6 비트 5 비트 4 비트 3 비트 2 비트 1 비트 0
? ? ? ? ? ? ? ?

각 입력에는 8비트 타이머가 있어 각 TV 라인이 표시되고 있는 시간을 계산한다.이것은 판독된 값을 패들에 의해 구동되는 물체의 화면 좌표에 직접 공급할 수 있는 추가적인 이점을 가지고 있었다.아타리 패들 값은 최대 244이지만 0에서 228까지 다양하다.패들 컨트롤러는 최대 시계 방향으로 돌리면 0으로 판독되며, 최대값에서 시계 반대 방향으로 돌리면 증가 값이 반환된다.

Padle 판독 프로세스는 POT* 값을 0으로, ALLPOT 값을 $FF로 재설정하고 전위차계 판독 캐패시터를 방전하는 POTGO에 쓰는 것으로 시작한다.POT* 값은 전위차계의 저항 값에 도달할 때까지 스캔되는 동안 증가한다.패들 판독이 완료되면 ALLPOT의 해당 비트가 0으로 재설정된다.

패들 스캔 프로세스는 대부분의 비디오 프레임을 완료하는 데 소요될 수 있다.아타리 운영체제는 패들 판독을 자동으로 처리한다.패들을 읽고 패들 스캔을 2단계 수직 공란에서 시작한다.패들 값은 섀도 레지스터에 복사된다. (참고: 패들 트리거는 실제로 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에 기록하면 전위차계(패들) 스캔 프로세스가 시작된다.그러면 POT* 값이 0으로 재설정되고, ALLPOT 값이 $FF로 재설정되며, 전위차계 판독 캐패시터가 방전된다.각 전위차계 스캔이 완료되면 ALLPOT의 전위차계에 해당하는 비트가 지워져 관련 POT* 레지스터 값이 판독에 유효함을 나타낸다.

직렬 입력 출력 포트

포함:

  • 직렬 입력 라인
  • 직렬 출력 라인
  • 직렬 클럭 출력 라인
  • 양방향 직렬 클럭 데이터 라인
  • SKREST, SEROUT, SERIN, SKCTL, SKSTAT 등록

포키는 UART의 일종이다.보통 두 개의 오디오 채널 중 하나는 보드 레이트 발생기로 사용된다.표준 보드 속도는 19.2 kbit/s이고, 가능한 최대 보드 속도는 127 kbit/s이다.SEROUT 레지스터에 입력된 바이트는 시리얼 버스를 통해 자동으로 전송된다.데이터 프레임에는 시작 비트 1개, 데이터 비트 8개, 중지 비트 1개 등 10개의 비트가 포함되어 있다.전압 레벨은 0V(논리적 0)와 +4V(논리적 1)이다.간단한 전압 변환기를 통해 RS-232 포트와 아타리 직렬 포트를 연결할 수 있다.

입력/출력 동작은 POKEY의 내부 시프트 레지스터가 값을 변경하게 하므로, POKEY 프로그래밍 시에는 각 동작이 수행된 후 일부 값을 다시 초기화할 필요가 있다.

SKREST $D20A 쓰기

SKSTAT(Serial Port Status) 재설정.

비트 7 비트 6 비트 5 비트 4 비트 3 비트 2 비트 1 비트 0
- - - - - - - -

이 레지스터에 기록하면 래치인 SKSTAT의 비트 5에서 7이 1로 재설정된다.래치 플래그 키보드 오버런, 직렬 데이터 입력 오버런 및 직렬 데이터 입력 프레임 오류.

SEROUT $D20D 쓰기

직렬 포트 데이터 출력 바이트.

비트 7 비트 6 비트 5 비트 4 비트 3 비트 2 비트 1 비트 0
- - - - - - - -

이것은 8비트(1바이트) 값에 대한 병렬 "보유" 레지스터로, 한 번에 1비트 출력을 위해 직렬 시프트 레지스터로 전송된다.포트가 출력 데이터를 수신할 준비가 되면 직렬 데이터 출력 인터럽트는 운영 체제에 이 출력 레지스터에 바이트를 쓸 수 있음을 알린다.

SERIN $D20D 읽기

직렬 포트 데이터 입력 바이트.

비트 7 비트 6 비트 5 비트 4 비트 3 비트 2 비트 1 비트 0
- - - - - - - -

SEROUT와 마찬가지로 병렬 "보유" 레지스터.이것은 직렬 시프트 레지스터에 의해 조립된 8비트(1바이트) 값을 한 번에 1비트씩 데이터 입력을 판독한다.전체 바이트를 읽을 때 직렬 데이터 입력 인터럽트가 발생하여 운영 체제에 이 레지스터에서 바이트를 읽을 수 있음을 알린다.

SKCTL $D20F 쓰기

직렬 포트 제어

비트 7 비트 6 비트 5 비트 4 비트 3 비트 2 비트 1 비트 0
시리얼 브레이크 직렬 모드2 직렬 모드1 직렬 모드0 직렬 투톤 빠른 포트 스캔 KB 검색 사용 KB사퇴

비트 0: 기계적 스위치에서 노이즈 또는 지터를 제거하기 위한 "debound" 스캔을 활성화하십시오.값이 1이면 키를 스캔하는 동안 POKEY가 내부 비교 레지스터를 사용할 수 있다.키가 눌린 것으로 식별되기 전에 두 번의 동시 스캔에서 감지되어야 하며, 두 번의 연속 스캔을 위해 해제된 것으로 보여야 해제된 것으로 간주된다.운영 체제에서 정상적인 키보드 처리를 유지하려면 이 기능을 활성화해야 한다.

비트 1: 키보드 스캔을 활성화하려면 1로 설정하십시오.운영 체제에서 정상적인 키보드 처리를 유지하려면 이 기능을 활성화해야 한다.

비트 2: 정확도는 떨어지지만 빠른 전위차계 스캔을 활성화하려면 1로 설정하십시오.Fast Pot 스캔은 매 사이클마다 카운터를 증가시키고 두 스캔 라인 내에서 사용 가능한 결과를 반환한다.운영 체제는 114 사이클(스캔 라인)마다 카운터를 1회씩 늘려 프레임을(1/60초) 잡아 결과를 내는 슬로우 팟 스캐닝을 사용한다.OS는 VBI(수직 공백 인터럽트) 동안 Pot 값을 읽고 결과를 RAM의 전위차계 섀도 레지스터에 복사한다.그런 다음 다음 다음 VBI에서 다음 읽기에 대해 POTGO를 재설정한다.

비트 3: 직렬 포트 2톤 모드 활성화활성화되면 SIO 버스로 출력되는 1비트와 0비트는 타이머 1과 2에 의해 설정된 톤으로 대체된다.이것은 일반적으로 디지털 데이터를 나타내는 아날로그 톤을 카세트 테이프에 쓰는 데 사용된다.

비트 4-6: 직렬 포트 작동을 위한 클록 타이밍 컨트롤.아래에 설명된 비트 값:

좌현 제어 [6:4] 비트 값 입력 시계 출력 시계 양방향 시계
0 0 0 $00 외부의 외부의 입력
0 0 1 $10 채널 3+4(async) 외부의 입력
0 1 0 $20 채널 4 채널 4 출력 채널 4
0 1 1 $30 채널 3+4(asnc) 채널 4(asnc) 입력
1 0 0 $40 외부의 채널 4 입력
1 0 1 $50 채널 3+4(asnc) 채널 4(asnc) 입력
1 1 0 $60 채널 4 채널 2 출력 채널 4
1 1 1 $70 채널 3+4(asnc) 채널 2 입력

비트 7: 타이머 2가 2 톤 직렬 출력 모드에서 타이머 1을 재설정할 수 있도록 알려진 0 출력을 강제한다.

SKSTAT $D20F 읽기

직렬 포트 상태

비트 7 비트 6 비트 5 비트 4 비트 3 비트 2 비트 1 비트 0
프레임 내 직렬 오류 오버런의 직렬 KB 오버런 데이터 읽기 준비 완료 Shift 키 마지막 키가 여전히 눌린 상태 직렬 입력 사용 중 -

KBCODE $D209 읽기

그림자: CH $02FC

키보드 코드

IRQ 인터럽트 8개

브레이크
Break (BREAK 키 인터럽트)
K
키보드(키보드 인터럽트)
SIR
직렬 입력이 준비되면(직렬 레일에서 인터럽트 읽기)
ODN
출력 데이터가 필요한 경우(직렬 레일의 쓰기 인터럽트)
XD
eXmitend Data(시리얼 전송 엔드 인터럽트)의 경우
T1
타이머 1, 타이머 1 인터럽트
T2
타이머 2, 타이머 2 인터럽트
T4
타이머 4, 타이머 4 인터럽트

인터럽트는 레지스터 IRQEN에 의해 소프트웨어에서 설정하거나 해제할 수 있다.IRQSTAT 레지스터에는 인터럽트 상태가 포함되어 있다.

키보드

실제 푸시 키 레지스터(K0 K5)의 6개 키 레지스터는 00 ~ 3F의 값을 포함하고 있다.2개의 컨트롤 값 포함.그 중 하나는 6개의 값 모두를 해독하는 역할을 한다.두 번째 제어 값은 Ctrl, Shift 및 Break와 같은 특수 키 값을 디코딩하는 데 사용된다.

참조

  1. ^ "I. Theory of Operation". Atari Home Computer Field Service Manual - 400/800. Atari, Inc. pp. 1–11.
  2. ^ "Chapter 7: Sound". De Re Atari. Atari, Inc. 1982.
  3. ^ 마이클 커런트 "샐리, 앤틱, CTIA/GTIA, POKEY, FREDDII 칩은 무엇인가?", 아타리 8비트 컴퓨터:자주 묻는 질문
  4. ^ Hague, James (2002-06-01). "Interview with Doug Neubauer". Halcyon Days. Retrieved January 14, 2008.
  5. ^ Atari, Inc. (1979-01-24). "Apparatus for producing a plurality of audio sound effects". United States Patent. Retrieved January 14, 2008.
  6. ^ "Atari Pokey Differences".

외부 링크