POKEY - POKEY
Pot Klavye Entegre Devre ( POKEY ) bir dijital I / O çip için tasarlanmış Atari 8-bit ailesinin ev bilgisayarlarının ve Atari bulunan oyun pasajı 1980'lerdeki. POKEY, örnekleme potansiyometreleri (oyun kürekleri gibi ) ve anahtarların tarama matrisleri ( bilgisayar klavyesi gibi) ile ses üretimi için işlevleri birleştirir . Net tonlar olarak veya bir dizi bozulma ayarıyla değiştirilmiş dört farklı kare dalga sesi sesi üretir .
POKEY çipleri, Centipede , Missile Command , Asteroids Deluxe ve Gauntlet dahil olmak üzere birçok arcade oyununda ses için kullanılır . Atari'nin bazı arcade sistemleri , daha fazla ses için tek bir pakette 2 veya 4 POKEY'li çok çekirdekli sürümleri kullanır. Atari 7800 konsolu oyun kartuşu sistemin ses yongası daha iyi ses veren, bir pokus içermesine olanak tanır. Yalnızca iki lisanslı oyun bundan yararlanır: Ballblazer ve Commando limanları .
LSI çip 40 pimi vardır ve C012294 olarak tanımlanır. POKEY, orijinal Star Raiders'ı da programlayan Atari çalışanı Doug Neubauer tarafından tasarlandı . USPTO "ses ses efektleri çok sayıda üretilmesi için cihaz" bir için 2 Şubat 1982 tarihinde Atari ABD Patenti 4.314.236 verildi. Listelenen mucitler Steven T. Mayer ve Ronald E. Milner'dir.
Artık üretilmeyen POKEY, atari ve Atari 8-bit emülatörleri tarafından ve ayrıca Atari SAP müzik formatı ve ilgili oynatıcı aracılığıyla yazılımda taklit edilir .
Özellikleri
- Ses
- 4 yarı bağımsız ses kanalı
- Kanallar şunlardan biri olarak yapılandırılabilir:
- Dört adet 8 bit kanal
- İki adet 16 bit kanal
- Bir 16 bit kanal ve iki 8 bit kanal
- Kanal başına hacim , frekans ve dalga biçimi ( değişken görev döngüsüne sahip kare dalga veya psödo-rastgele gürültü)
- 15 kHz veya 64 kHz frekans bölücü.
- CPU saat frekansında iki kanal çalıştırılabilir.
- Yüksek geçiren filtre
- Klavye taraması (64 tuşa kadar) + 2 değiştirici bit (Shift, Control) + Break
- Potansiyometre bağlantı noktaları (her biri 8 bit çözünürlüğe sahip 8 bağımsız bağlantı noktası)
- Yüksek Çözünürlüklü Zamanlayıcılar (ses kanalları 1, 2 ve 4, sıfırı geçtiklerinde zamanlayıcı kesintilerine neden olacak şekilde yapılandırılabilir)
- Rastgele sayı üreteci (17 bitlik polinom sayacının 8 biti okunabilir)
- Seri G/Ç bağlantı noktası
- Sekiz IRQ kesmesi
Sürümler
Parça numarasına göre:
- C012294 — Atari XEGS ve Atari 5200 konsolu dahil tüm Atari 8 bit aile bilgisayarlarında kullanılır . Çip üzerindeki son ek, üreticiye atıfta bulunur:
- C012294B-01 — AMI
- C012294-03 - İşaretler
- C012294-19 — Ulusal Yarı İletken
- C012294-22 — OKI
- C012294-31 — IMP
- 137430-001 — POKEY için Atari atari makinelerinde bazen kullanılan parça numarası.
- 137324-1221 — Atari arcade makinelerinde kullanılan Dört Çekirdekli POKEY Major Havoc , I, Robot , Firefox ve Return of the Jedi .
Pin yapısı
Pin Adı | Pin Numaraları | Açıklama |
---|---|---|
A0 - A3 | 36, 35, 34, 33 | Bellek Adres Girişi |
ACLK | 27 | Seri Saat Çıkışı |
Avustralya doları | 37 | Ses çıkışı |
BCLK | 26 | Çift Yönlü Saat G/Ç |
CS0 | 30 | Çip Seçimi |
CS1 | 31 | Çip Seçimi |
D0 - D7 | 38, 39, 40, 2, 3, 4, 5, 6 | Veri Yolu G/Ç |
IRQ | 29 | Kesinti İsteği Çıkışı |
K0 - K5 | 23, 22, 21, 20, 19, 18 | Klavye Tarama Çıkışı |
KR1 - KR2 | 25, 16 | Klavye Satırı flaş Girişi |
P0 - P7 | 14, 15, 12, 13, 10, 11, 8, 9 | Potansiyometre (Kürek) Tarama |
R/W | 32 | Okuma/Yazma G/Ç Kontrolü |
SID | 24 | Seri Giriş Verileri |
SOD | 28 | Seri Çıkış Verileri |
V cc | 17 | Güç +5 Volt |
V ss | 1 | Zemin |
Ø2 | 7 | Faz 2 Saat Girişi |
Kayıtlar
Atari 8-bit bilgisayarlar, POKEY'i $D2xx hex sayfasına eşler ve Atari 5200 konsolu onu $E8xx hex sayfasına eşler .
POKEY, Ses, Paddle girişi, klavye girişi, seri giriş/çıkış ve kesintileri kontrol eden 29 Okuma/Yazma kaydı sağlar. Birçok POKEY kayıt adresinin, Okuma ve Yazma kaydı olarak farklı işlevleri yerine getiren ikili amaçları vardır. Bu nedenle, önceden yazılmış değeri almayı bekleyen hiçbir kod Donanım kayıtlarını okumamalıdır.
Bu sorun, donanım kayıtlarının değerlerini yansıtan normal RAM'de uygulanan İşletim Sistemi "Gölge" kayıtları tarafından bazı kayıtlar için çözülmüştür. Dikey Boş sırasında İşletim Sistemi, Yazma kayıtları için RAM'deki Gölge kayıtlarını karşılık gelen donanım kaydına kopyalar ve donanımdan Okuma kayıtları için Gölge değerlerini buna göre günceller. Bu nedenle, karşılık gelen gölge kayıtlarına sahip donanım kayıtlarının üzerine, sonraki dikey boşluk sırasında Gölge kayıtlarının değeri yazılacaktır.
Değerleri, görüntüleme döngüsünün bilinmeyen bir aşamasında doğrudan donanımdan okumak, tutarsız sonuçlar verebilir (örnek: okuma potansiyometreleri). Okuma kayıtları için İşletim Sistemi Gölge kayıtları genellikle tercih edilen bilgi kaynağı olacaktır.
Bazı Write donanım kayıtları, karşılık gelen Gölge kayıtlarına sahip değildir. Dikey boşluk sırasında değerin üzerine yazılmadan bir uygulama tarafından güvenle yazılabilirler. Uygulamanın kayıt defterine yazılan son değeri bilmesi gerekiyorsa, ne yazdığını hatırlamak için kendi gölge değerini uygulamak uygulamanın sorumluluğundadır.
İsim | Açıklama | Okuma yazma | Onaltılık Adres | Ara Adres | Gölge Adı | Gölge Altıgen Adresi | Gölge Aralık Adresi |
---|---|---|---|---|---|---|---|
AUDF1 | Ses Kanalı 1 Frekans | Yazı yazmak | $D200 | 53760 | |||
POT0 | Potansiyometre (Kürek) 0 | Okumak | $D200 | 53760 | PADDL0 | 0270$ | 624 |
AUDC1 | Ses Kanalı 1 Kontrolü | Yazı yazmak | $D201 | 53761 | |||
POT1 | Potansiyometre (Kürek) 1 | Okumak | $D201 | 53761 | PADDL1 | $0271 | 625 |
AUDF2 | Ses Kanalı 2 Frekansı | Yazı yazmak | $D202 | 53762 | |||
POT2 | Potansiyometre (Kürek) 2 | Okumak | $D202 | 53762 | PADDL2 | $0272 | 626 |
AUDC2 | Ses Kanalı 2 Kontrolü | Yazı yazmak | $D203 | 53763 | |||
POT3 | Potansiyometre (Kürek) 3 | Okumak | $D203 | 53763 | PADDL3 | $0273 | 627 |
AUDF3 | Ses Kanalı 3 Frekans | Yazı yazmak | $D204 | 53764 | |||
POT4 | Potansiyometre (Kürek) 4 | Okumak | $D204 | 53764 | PADDL4 | $0274 | 628 |
AUDC3 | Ses Kanalı 3 Kontrolü | Yazı yazmak | $D205 | 53765 | |||
POT5 | Potansiyometre (Kürek) 5 | Okumak | $D205 | 53765 | PADDL5 | $0275 | 629 |
AUDF4 | Ses Kanalı 4 Frekans | Yazı yazmak | $D206 | 53766 | |||
POT6 | Potansiyometre (Kürek) 6 | Okumak | $D206 | 53766 | PADDL6 | $0276 | 630 |
AUDC4 | Ses Kanalı 4 Kontrolü | Yazı yazmak | $D207 | 53767 | |||
POT7 | Potansiyometre (Kürek) 7 | Okumak | $D207 | 53767 | PADDL7 | $0277 | 631 |
AUDCTL | Ses Kontrolü | Yazı yazmak | $D208 | 53768 | |||
ALLPOT | 8 Satır POT Bağlantı Noktası Durumunu Oku | Okumak | $D208 | 53768 | |||
STİMER | Zamanlayıcıları Başlat | Yazı yazmak | $D209 | 53769 | |||
KBKODU | Klavye Kodu | Okumak | $D209 | 53769 | CH | $02FC | 764 |
SKREST | Seri Durumunu Sıfırla (SKSTAT) | Yazı yazmak | $D20A | 53770 | |||
RASTGELE | Rastgele numara üreticisi | Okumak | $D20A | 53770 | |||
POTGO | POT Tarama Sırasını Başlat | Yazı yazmak | $D20B | 53771 | |||
SEROUT | Seri Port Veri Çıkışı | Yazı yazmak | $D20D | 53773 | |||
SERİN | Seri Port Veri Girişi | Okumak | $D20D | 53773 | |||
IRQEN | Kesinti İsteği Etkinleştir | Yazı yazmak | $D20E | 53774 | POKMSK | $10 | 16 |
IRQST | IRQ Durumu | Okumak | $D20E | 53774 | |||
SKCTL | Seri Port Kontrolü | Yazı yazmak | $D20F | 53775 | SSKCTL | 0232 $ | 562 |
SKSTAT | Seri Bağlantı Noktası Durumu | Okumak | $D20F | 53775 |
Aşağıdaki bireysel kayıt listelerinde aşağıdaki açıklama geçerlidir:
Bit Değeri | Açıklama |
---|---|
0 | Bit 0 olmalıdır |
1 | Bit 1 olmalıdır |
? | Bit, 0 veya 1 olabilir ve bir amaç için kullanılır. |
- | Bit kullanılmıyor veya belirli bir değer olması beklenmemeli |
etiket | Bitin amacı için daha sonraki bir açıklamaya bakın. |
Ses
Pokey, programlanabilir bir ses üreteci içerir ; ayrı frekans, gürültü ve ses seviyesi kontrollerine sahip dört ses kanalı.
Her kanalın 8 bitlik bir frekans bölücüsü ve gürültü ve ses seviyesini seçmek için 8 bitlik bir kaydı vardır.
- AUDF1 - AUDF4 – frekans kaydı (AUDio Frequency)
- AUDC1 - AUDC4 – ses ve gürültü kaydı (AUDio Control)
- AUDCTL – jeneratörleri kontrol eden genel kayıt (AUDio ConTroL)
POKEY'in sesi ayırt edicidir: dört kanal bağımsız olarak kullanıldığında , perde doğruluğu eksikliğinden dolayı 12 tonlu eşit mizaç skalasının parçalarının belirgin bir şekilde bozulması vardır. Daha yüksek doğruluk için kanallar eşleştirilebilir; ek olarak, daha kalın bir sese izin veren çoklu bozulma biçimleri mevcuttur. Bozulma öncelikle müzikte bas bölümleri için kullanılır.
Atari 8 bit ailesi için geliştirilen ses motorlarından birine AMP motoru (Gelişmiş Müzik İşlemcisi) adı verildi. Bu müzisyen Gary Gilbertson tarafından kullanıldı .
Ses Kanalı Frekansı
AUDF* kayıtları, karşılık gelen ses kanallarının frekansını veya perdesini kontrol eder. AUDF* değerleri, dikey boşluktan daha sık kesin aralıklarda çalışması gereken kod için faydalı olan POKEY donanım zamanlayıcılarını da kontrol eder.
Her AUDF* kaydı, POKEY saatinden gelen darbeler için bir geri sayım sayacı veya bölen sağlayan 8 bitlik bir değerdir. Bu nedenle, daha küçük değerler POKEY'den daha sık darbe çıkışına ve daha büyük değerler daha az sıklıkta darbe çıkışına izin verir. $0 hex /0 dec - $FF hex /255 dec arasındaki değerler, POKEY tarafından 1 $ hex /1 dec ile 100 $ hex /256 dec arasında olacak şekilde artırılır . Gerçek işitilebilir ses perdesi, POKEY saat frekansına ve seçilen bozulma değerlerine bağlıdır. Bkz. Ses Kanalı Kontrolü ve Ses Kontrolü .
AUDF1 $D200 Yaz
Ses Kanalı 1 Frekans
AUDF2 $D202 Yazma
Ses Kanalı 2 Frekansı
AUDF3 $D204 Yazma
Ses Kanalı 3 Frekans
AUDF4 $D206 Yaz
Ses Kanalı 4 Frekans
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Ses Kanalı Kontrolü
Ses Kanalı kontrol kayıtları, ayrı ses kanalları üzerinde ses ve bozulma kontrolü sağlar. Ses aynı zamanda, dijital örneklerin çalınması için yararlı olan bir ses kanalının doğrudan ses seviyesi manipülasyonu ile POKEY saatinden bağımsız olarak da üretilebilir.
AUDC1 $D201 Yazma
Ses Kanalı 1 Kontrolü
AUDC2 $D203 Yazma
Ses Kanalı 2 Kontrolü
AUDC3 $D205 Yazma
Ses Kanalı 3 Kontrolü
AUDC4 $D207 Yaz
Ses Kanalı 4 Kontrolü
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
Gürültü 2 | Gürültü 1 | Gürültü 0 | Kuvvet Hacmi | Cilt 3 | Cilt 2 | Ses seviyesi 1 | Cilt 0 |
Bit 0-3: 0'dan F'ye ses seviyesi üzerinde kontrol.
Bit 4: Zorunlu yalnızca ses çıkışı. Bu bit ayarlandığında kanal, AUDF zamanlayıcısını, gürültü/bozulma kontrollerini ve yüksek geçiş filtresini yok sayar. Ses, yalnızca ses düzeyi bitleri 0:3 ayarlanarak üretilir. Bu özellik, darbe kodu modülasyonu yoluyla dijital ses oluşturmak için kullanıldı .
Bit 5-7: Sesler/bozulma için kayıt defteri ayarlarını değiştirin. Aşağıda açıklanan bit değerleri:
Gürültü Değeri | Bit Değeri | Açıklama |
---|---|---|
0 0 0 | 00 $ | 5 bit sonra 17 bit polinomlar |
0 0 1 | 20$ | yalnızca 5 bit poli |
0 1 0 | 40 dolar | 5-bit, sonra 4-bit polys |
0 1 1 | 60 $ | yalnızca 5 bit poli |
100 | 80 dolar | yalnızca 17 bit poli |
1 0 1 | $A0 | poli yok (saf ton) |
1 1 0 | $C0 | yalnızca 4 bit poli |
1 1 1 | $E0 | poli yok (saf ton) |
Rastgele gürültülerin üretilmesi, 17 bitlik kaydırma yazmacının üstünden 8 bit okunarak sunulur. Bu kayıtlar, NTSC için 1.79 MHz veya PAL için 1.77 MHz frekansı tarafından sürülür. Çıkışları, her ses kanalının bölücü oranı tarafından bağımsız olarak kullanılabilir.
AUDCTL $D208 Yazma
Ses Kontrolü, ses kanalları için kullanılan saat girişi seçimine, yüksek geçişli filtre özelliği üzerinde kontrole, iki kanalı birleştirerek 16 bit frekans doğruluğuna, belirli kanallar için yüksek frekanslı bir saat seçmeye ve "rastgelelik" üzerinde kontrole izin verir. polinom girişi.
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
17'ye 9 Poli | CH1 1.79 | CH3 1.79 | CH2 + 1 | CH4 + 3 | FI1 + 3 | FI2 + 4 | 64'e karşı 15 kHz |
"1", açıklanmadıysa "açık" anlamına gelir:
- bit 0
- 01 $: (15 kHz), frekans bölücü oranı seçimi "0" - 64 kHz, "1" - 15 kHz
- 1. bit
- 02 $: (FI2 + 4), kanal 2 için kanal 4'ün frekansına göre derecelendirilen yüksek geçiren filtre
- 2. bit
- $04: (FI1 + 3), kanal 3'ün frekansına göre derecelendirilen kanal 1 için yüksek geçiş filtresi
- 3. Bit
- $08: (CH4 + 3), 16 bitlik doğruluk elde etmek için 4+3 bölücülerin bağlantısı
- 4. bit
- $10: (CH2 + 1), 16 bitlik doğruluk elde etmek için 2+1 bölücülerin bağlantısı
- 5. bit
- $20: (CH3 1.79), kanal 3 frekansını "0" olarak ayarlayın 64 kHz'dir. "1", 1.79 MHz NTSC veya 1.77 MHz PAL'dir
- 6. bit
- $40: (CH1 1.79), kanal 1 frekansını "0" olarak ayarlayın 64 kHz'dir. "1", 1.79 MHz NTSC veya 1.77 MHz PAL'dir
- 7. bit
- 80 $: (POLY 9), anahtar kaydırma kaydı "0" - 17-bit, "1" – 9-bit
Tüm frekans bölücüler (AUDF) aynı anda 64 kHz veya 15 kHz hızında çalıştırılabilir.
Frekans bölücüler 1 ve 3, dönüşümlü olarak CPU saati (1.79 MHz NTSC, 1.77 MHz PAL) tarafından çalıştırılabilir. Frekans bölücüler 2 ve 4, bölücüler 1 ve 3'ün çıkışı ile dönüşümlü olarak çalıştırılabilir. Bu şekilde, POKEY, 16-bit doğrulukta ses oluşturmak için 8-bit kanalların bağlanmasını mümkün kılar.
Olası kanal konfigürasyonları:
- dört adet 8 bit kanal
- iki 8 bit kanal ve bir 16 bit kanal
- iki 16 bit kanal
potansiyometreler
POKEY, Potansiyometreler için en yaygın olarak kullanılan ve Paddle Kontrol Cihazları olarak da bilinen sekiz analogdan dijitale dönüştürücü bağlantı noktasına sahiptir. Analog girişler, Dokunmatik Tablet denetleyicisi ve 12 düğmeli video oyunu Klavye Denetleyicileri için de kullanılır. Her giriş, yazılımdan açılıp kapatılabilen bir düşürme transistörüne sahiptir. Zamanlayıcılar, televizyondaki elektron ışını kalemin yanından geçtiğinde zamanlayıcıyı yakalayan damla transistöre bir fotodiyot bağlayarak bir ışık kalemini desteklemek için de kullanılabilir . Kalemin dikey konumu ayrı olarak okunmalıydı.
POT0 $D200 Okuma
GÖLGE: PADDL0 $0270
Paddle Controller 0 Girişi
POT1 $D201 Okuma
GÖLGE: PADDL1 $0271
Paddle Controller 1 Girişi
POT2 $D202 Okuma
GÖLGE: PADDL2 $0272
Paddle Controller 2 Girişi
POT3 $D203 Okuma
GÖLGE: PADDL3 0273 $
Paddle Controller 3 Girişi
POT4 $D204 Okuma
GÖLGE: PADDL4 02704 $
Paddle Controller 4 Girişi
POT5 $D205 Okuma
GÖLGE: PADDL5 $0275
Paddle Controller 5 Girişi
POT6 $D206 Okuma
GÖLGE: PADDL6 $0276
Paddle Controller 6 Girişi
POT7 $D207 Okuma
GÖLGE: PADDL7 $0277
Paddle Controller 7 Girişi
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
? | ? | ? | ? | ? | ? | ? | ? |
Her girişin 8 bitlik zamanlayıcısı vardır ve her TV satırının görüntülendiği zamanı sayar. Bu, okunan değerin doğrudan kanatlar tarafından sürülen nesnelerin ekran koordinatlarına beslenmesine izin verme avantajına sahipti. Atari Kürek değerleri 0 ile 228 arasında değişir, ancak mümkün olan maksimum değer 244'tür. Kürek denetleyicisi, maksimum saat yönünde döndürüldüğünde 0 okur ve saat yönünün tersine döndürüldüğünde artan değerleri döndürür ve maksimum değerinde sona erer.
Kürek okuma işlemi , POT* değerlerini 0'a, ALLPOT değerini $FF'ye sıfırlayan ve potansiyometre okuma kapasitörlerini boşaltan POTGO'ya yazarak başlar . POT* değerleri, potansiyometrenin direnç değerine ulaşana kadar taranırken artar. Paddle okuması tamamlandığında ALLPOT'taki karşılık gelen bit 0'a sıfırlanır.
Kürek tarama işleminin tamamlanması bir video karesinin çoğunluğunu alabilir. Atari İşletim Sistemi, Kürek okumasını otomatik olarak halleder. Kanatlar okunur ve 2. aşama dikey boşluk sırasında kanat taraması başlatılır. Paddle değerleri gölge kayıtlarına kopyalanır. (Paddle tetikleyicilerinin aslında PIA'dan okunan joystick yönü girişi olduğunu unutmayın.)
SKCTL'de bir bit ayarlayarak Paddle'ları daha hızlı taramak mümkündür . Okuma dizisi yalnızca birkaç tarama satırında tamamlanır, ancak değer daha az doğrudur.
ALLPOT $D208 Okuma
Potansiyometre Tarama Durumu
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
kürek 7 | kürek 6 | kürek 5 | kürek 4 | kürek 3 | kürek 2 | kürek 1 | kürek 0 |
Her bit bir potansiyometre girişine karşılık gelir (POT* kayıtları). POTGO'ya yazılarak palet taraması başlatıldığında, ALLPOT'taki her bir paletin biti 1'e ayarlanır. Bir paletin taraması tamamlandığında, ALLPOT'taki karşılık gelen bit, ilişkili POT* kaydındaki değerin artık okumak için geçerli olduğunu gösteren 0'a sıfırlanır.
POTGO $D20B Yaz
Potansiyometre Taramasını Başlatın
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
POTGO'ya yazmak, potansiyometre (Paddle) tarama sürecini başlatır. Bu, POT* değerlerini 0'a, ALLPOT değerini $FF'ye sıfırlar ve potansiyometre okuma kapasitörlerini boşaltır. Her potansiyometre taraması tamamlandığında, ALLPOT'taki potansiyometreye karşılık gelen bit temizlenir ve ilişkili POT* kaydının değerinin okuma için geçerli olduğunu gösterir.
Seri giriş çıkış bağlantı noktası
İçeriği:
- seri giriş hattı
- seri çıkış hattı
- seri saat çıkış hattı
- iki yönlü seri saat veri hattı
- SKREST, SEROUT, SERIN, SKCTL, SKSTAT'ı kaydeder
POKEY bir çeşit UART . Genellikle iki katına çıkan ses kanallarından biri baud hızı üreteci olarak kullanılır. Standart baud hızı 19.2 kbit/s'dir, mümkün olan maksimum baud hızı 127 kbit/s'dir. SEROUT kaydına yerleştirilen bir bayt, seri veri yolu üzerinden otomatik olarak gönderilir. Veri çerçevesi 10 bit içerir: 1 başlangıç biti, 8 veri biti, 1 durdurma biti. Gerilim seviyeleri 0 V (mantıksal 0) ve +4 V (mantıksal 1)'dir. Atari seri portunu basit bir voltaj dönüştürücü vasıtasıyla bir RS-232 portuna bağlamak mümkündür.
Her giriş/çıkış işlemi, POKEY'in dahili kaydırmalı yazmaçlarının değer değiştirmesine neden olur, bu nedenle POKEY için programlama yaparken, her işlem gerçekleştirildikten sonra bazı değerleri yeniden başlatmak gerekir.
SKREST $D20A Yaz
Seri Port Durumunu Sıfırla (SKSTAT).
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Bu kayda bir yazma işlemi, SKSTAT'ın 1'e kilitlenen bitleri 5 ila 7'yi sıfırlayacaktır .
SEROUT $D20D Yaz
Seri bağlantı noktası veri çıkış baytı.
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
Bu, her seferinde bir bit çıkış için seri kaydırma yazmacına aktarılacak sekiz bitlik (bir bayt) değer için paralel bir "tutma" kaydıdır. Bağlantı noktası çıkış için veri kabul etmeye hazır olduğunda, bir Seri Veri Çıkışı kesintisi, İşletim Sistemine bu çıkış kaydına bir bayt yazabileceğini bildirir.
SERİN $D20D Oku
Seri bağlantı noktası veri girişi baytı.
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
- | - | - | - | - | - | - | - |
SEROUT gibi, aynı zamanda paralel bir "tutma" kaydı. Bu, veri girişini bir seferde bir bit okuyan seri kaydırma yazmacı tarafından toplanan sekiz bitlik (bir bayt) değeri tutar. Tam bir bayt okunduğunda, İşletim Sistemine bu kayıttan baytı okuyabildiğini bildiren bir Seri Veri Girişi kesintisi meydana gelir.
SKCTL $D20F Yazma
Seri Port Kontrolü
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
Seri Arası | Seri Mod2 | Seri Mod1 | Seri Mod0 | Seri İki Tonlu | Hızlı Pot Tarama | KB Taramasını Etkinleştir | KB geri dönüşü |
Bit 0: Mekanik anahtarlardan gelen paraziti veya titreşimi ortadan kaldırmayı amaçlayan "geri dönme" taramasını etkinleştirin. 1 değeri, anahtarları tararken POKEY'in dahili bir karşılaştırma kaydı kullanmasını sağlar. Bir tuşun basılı olarak tanımlanmadan önce iki eşzamanlı taramada algılanması ve iki ardışık taramanın serbest bırakılmış sayılması için serbest bırakılmış olarak görülmesi gerekir. Bu, İşletim Sistemiyle normal klavye kullanımını sürdürmek için etkinleştirilmelidir.
Bit 1: Klavye taramasını etkinleştirmek için 1'e ayarlayın. Bu, İşletim Sistemiyle normal klavye kullanımını sürdürmek için etkinleştirilmelidir.
Bit 2: Daha az doğru olsa da hızlı Potansiyometre taramasını etkinleştirmek için 1'e ayarlayın. Hızlı Pot taraması, her döngüde sayacı artırır ve iki tarama satırında kullanılabilir bir sonuç döndürür. İşletim Sistemi, bir sonuç üretmek için bir kare (1/60. saniye) alarak sayacı her 114 döngüde (tarama çizgisi) bir artıran yavaş Pot Taramasını kullanır. İşletim Sistemi Dikey Boş Kesinti (VBI) sırasında Pot değerlerini okur ve sonucu RAM'deki potansiyometre Gölge kayıtlarına kopyalar. Ardından, sonraki VBI sırasında bir sonraki okuma için POTGO'yu sıfırlar.
Bit 3: Seri bağlantı noktası iki ton modunu etkinleştirin. Etkinleştirildiğinde, SIO veriyoluna 1 ve 0 bit çıkışı, zamanlayıcı 1 ve 2 tarafından ayarlanan tonlarla değiştirilir. Bu, normalde dijital verileri temsil eden analog tonları kasete yazmak için kullanılır.
Bit 4-6: Seri port işlemi için Saat Zamanlama Kontrolü. Aşağıda açıklanan bit değerleri:
Bağlantı Noktası Kontrolü [6:4] | Bit Değeri | Giriş Saati | Çıkış Saati | Çift Yönlü Saat |
---|---|---|---|---|
0 0 0 | 00 $ | Harici | Harici | Giriş |
0 0 1 | $10 | Kanallar 3+4 (eşzamansız) | Harici | Giriş |
0 1 0 | 20$ | Kanal 4 | Kanal 4 | Çıkış Kanalı 4 |
0 1 1 | 30 $ | Kanal 3+4 (eşzamansız) | Kanal 4 (eşzamansız) | Giriş |
100 | 40 dolar | Harici | Kanal 4 | Giriş |
1 0 1 | 50 dolar | Kanal 3+4 (eşzamansız) | Kanal 4 (eşzamansız) | Giriş |
1 1 0 | 60 $ | Kanal 4 | Kanal 2 | Çıkış Kanalı 4 |
1 1 1 | 70 $ | Kanal 3+4 (eşzamansız) | Kanal 2 | Giriş |
Bit 7: Bilinen bir 0 çıkışını zorlar, böylece zamanlayıcı 2, iki tonlu seri çıkış modunda zamanlayıcı 1'i sıfırlayabilir.
SKSTAT $D20F Okuma
Seri Bağlantı Noktası Durumu
7. bit | 6. bit | 5. bit | 4. bit | 3. Bit | 2. bit | 1. bit | bit 0 |
---|---|---|---|---|---|---|---|
Çerçeve hatasında seri | Aşırı yükte seri | KB taşması | Verileri Okumaya hazır | Shift tuşu | Son Tuşa Hala Basılı | Seri Giriş Meşgul | - |
KBCODE $D209 Okuma
GÖLGE: CH $ 02FC
Klavye Kodu
Sekiz IRQ kesmesi
- KIRMAK
- Ara (BREAK anahtar kesintisi)
- K
- Klavye (klavye kesme)
- SAYIN
- Seri Giriş Hazır ise (seri raydan okuma kesmesi)
- ODN
- Çıktı Verisi Gerekiyorsa (seri raydan yazma kesmesi)
- XD
- if eXmitend Data (seri iletim sonu kesmesi)
- T1
- Zamanlayıcı 1, zamanlayıcı 1 kesintisi
- T2
- Zamanlayıcı 2, zamanlayıcı 2 kesintisi
- T4
- Zamanlayıcı 4, zamanlayıcı 4 kesintisi
Kesintiler, IRQEN kaydı ile yazılımdan açılıp kapatılabilir. IRQSTAT kaydı, kesinti durumunu içerir.
Tuş takımı
00 ile 3F arasındaki değerleri içeren, gerçekten basılan tuşların (K0 K5) altı anahtar kaydı. 2 kontrol değeri içerir. Bunlardan biri 6 değerin tümünün kod çözücüsü görevi görür. İkinci kontrol değerleri, özel anahtar değerlerin kodunu çözmek için kullanılır - CTRL, SHIFT ve BREAK.
Referanslar
Dış bağlantılar
- ASMA — Atari SAP Music Archive Çeşitli Atari 8-bit oyunlarından POKEY chip-müzik (SAP) oynatıcılar ve SAP müzik koleksiyonu.
- PDF olarak taranan POKEY çip veri sayfası .
- Küçük ölçekli mantık çiplerinden yapılmış POKEY
- Commodore SID çipini taklit eden Atari 8-bit (POKEY kullanarak) videosu.