
|
PSG AY-3-8910 K.Weeniet, 00-00-00
PSG (Programable Sound Generator) AY-3-8910.
--------------------------------------------
0A0h - Adres port.
0A1h - Data Write port.
0A2h - Data read port.
De PSG heeft 16 registers #00 tot #0F deze zijn voor het instellen van
de juiste geluid instellingen, ook de Joystick en de Cassette input
worden door de PSG geregeld en zijn ook op de registers af telezen.
Registers #00 en #01:
7 6 5 4 3 2 1 0
+-------------------------------+
| Channel A frequency LSB | #00
+---+---+---+---+---+---+---+---+
| X | X | X | X |Ch. A Freq. MSB| #01
+---+---+---+---+---+---+---+---+
Met deze twee registers kan de toon hoogte van het huidige kanaal
ingestelt worden. Voor kanaal B Zijn dit de registers #02, #03. Voor
kanaal C Zijn dit #04, #05.
Register #06:
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
| X | X | X | Noice-Frequency | #06
+---+---+---+---+---+---+---+---+
Bit 4 tot 0 voor het instellen van de ruis-frequency, deze geld voor
elk kanaal waarbij het "Noice" bit 0 is.
Inhoud R6 Noice-frequency Inhoud R6 Noice-frequency
1 111860 Hz 17 6580 Hz
2 55930 Hz 18 6214 Hz
3 37286 Hz 19 5887 Hz
4 27965 Hz 20 5593 Hz
5 22372 Hz 21 5326 Hz
6 18643 Hz 22 5084 Hz
7 15980 Hz 23 4863 Hz
8 13982 Hz 24 4660 Hz
9 12428 Hz 25 4474 Hz
10 11186 Hz 26 4302 Hz
11 10169 Hz 27 4142 Hz
12 9321 Hz 28 3995 Hz
13 8604 Hz 29 3857 Hz
14 7990 Hz 30 3728 Hz
15 7457 Hz 31 3608 Hz
16 6991 Hz
Register #07:
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
|Bdr|Adr|CNC|BNC|ANC|CTN|BTN|ATN| #07
+---+---+---+---+---+---+---+---+
ANC/BNC/CNC: Noice on channel A/B/C (Ruis)
ATN/BTN/CTN: Tone on channel A/B/C (Toon)
Dit register "Enables" of "Disables" de geluids en ruis kanalen A to
C: 0=Enable, 1=Disable. Voor Port A en Port B (Bdr/Adr) kan de
richting (Direction) worden bepaald: 0=Input, 1=Output. Register moet
altijd 10xxxxxx bevatten anders is er kans op beschadinging van de
PSG, als er bepaalde apparaten aan de in of outputs van de PSG hangen.
Register #08:
7 6 5 4 3 2 1 0
+---+---+---+---+---------------+
| X | X | X |MOD|CH. A Amplitude| #08
+---+---+---+---+---+---+---+---+
De 4 Amplitude bit bepaalen het volume van kanaal A ( 0 -15 ). De MODE
bit bepaald of de amplitude gelijk blijft of ge moduleerd wordt.
0=Fixed, 1=Modulated. Als gekozen wordt voor modelatie dan zal dit
gebeuren volgens het "Envelope Shape" tabel ( #13), de snelheid van de
modelatie staat in de "Envelope Frequency" tabellen ( #11, #12) zal
het volume worden gemoduleerd. Voor de kanalen B en C zullen voor de
Amplitude de registers #9 en #10 worden gebruikt.
Register #11 en #12:
7 6 5 4 3 2 1 0
+-------------------------------+
| Envelope Frequency LSB | #11
+---+---+---+---+---+---+---+---+
| Envelope Frequency MSB | #12
+---+---+---+---+---+---+---+---+
De Envelope Frequency is de Frequentie waar op de Modulatie vorm (te
selecteren met Register #13) afgespeeld wordt bepaalt. De registers
#11 en #12 vormen samen een 16-bits getal van 0 tot 65535, Register
#11 bevan het Laagst Significante Byte en register #12 het Meest Sigú
nificante Byte. Een hoge frequency wordt verkregen door laage inhoud
van registers #11 en #12. Een Lage frequency door een hoge inhoud van
deze registers. De Frequency by 1 is 6991 Hz, van 65535 is deze 0.11
Hz.
Register #13:
7 6 5 4 3 2 1 0
+---+---+---+---+---------------+
| X | X | X | X |Envelope Shape | #13
+---+---+---+---+---+---+---+---+
Dit Register bevat de code van de Modelatie vorm. Een code van 0-15,
Sommige Code's bevatten de zelfde vormen.
S0,S1,S2,S3,S9 S4-S7,S15 S8
| |\ | /| | |\ |\ |\ |\
|____| \______ |____/ |_____ |____| \| \| \|
S10 S11 S12
_____
| |\ /\ / | |\ | | /| /| /| /
|____| \/ \/ |____| \| |____/ |/ |/ |/
S13 S14
____
| /\ /\ | /
|____/ \/ \/ |_______/
Register #14:
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
|CsI|Kbd|TrB|TrA|Rig|Lef|Dow|Up | #14
+---+---+---+---+---+---+---+---+
Dit register is voor het lezen van PSG Port A. De zes Joystick bits
geven de richting en de vuurknoppen aan. Voor deze bits gelt: 0=Ingeú
drukt, 1=Niet ingedrukt. De Keyboard Mode bit (Kbd) wordt niet geú
bruikt op Europesche machines, op Japansche computers is dit verbonden
met een Jumper om het Character set te bepalen. De Cassette Input
(Csi) word Gebruikt voor het lezen van een signaal van de Cassette EAR
output.
Register #15:
7 6 5 4 3 2 1 0
+---+---+---+---+---+---+---+---+
|KLd|JSl|Pl2|Pl1| 1 | 1 | 1 | 1 | #14
+---+---+---+---+---+---+---+---+
Dit register is voor het Schrijven naar PSG Port B. De vier laagste
bits zijn verbonden via de TTL open-collector buffers met pin 6 en 7
van elk van de twee Joystick connectors. De twee Pulse bits (Pl2/Pl1)
worden gebruikt om een korte positive puls te genereren naar een
Paddle op Joystick-port 1 of 2. Elke paddle bevat een monostable timer
die de lengte van de puls neemt. Pas als de timer is geTriggered kan
de positie van de paddle bepaalt worden door te tellen tot de Monoú
stable is uit getelt. De Joystick select bit bepaalt welke Joystick
poort verbonden is met de PSG: 0=Connector 1, 1=Connector 2. De Kana
LED wordt niet gebruikt op europesche machines, op Japansche machines
wordt het gebruikt om een Keyboard mode indicator aan te sturen.
Voorbeeld voor het instellen en lezen van PSG-register's:
We proberen register #08 in testellen (Amplitude van kanaal A) in
machine taal zal dit zijn:
SETPSG: LD A,B ; Zet Register nummer in A
OUT (0A0h),A ; Register naar PSG port 0A0h
LD A,C ; Zet Data in A
OUT (0A1h),A ; Data naar PSG port 0A1h
RET ; Spring terug
; Waarbij Z80 register -B- het nummer van het PSG register moet be-
; vatten en Z80 register -C- de data
Dus:
----
----
LD B,08h ; Register #08
LD C,00001110b ; Amplitude (binair ) = 14
CALL SETPSG ; Start Routine "SETPSG"
----
----
Voor het lezen kunnen we het volgende proberen:
READPSG: OUT (0A0h),A ; Register naar PSG port 0A0h
IN (0A2h),A ; Lees Data van PSG port 0A2h
RET ; Spring terug
; Waarbij in Z80 register -A- het telezen register nummer moet gezet
; worden, naar afloop zal de routine in Z80 register -A- de inhoud
; van het gevraagde register zetten.
Dus:
----
----
LD A,08h ; Register #08
CALL READPSG ; Start Routine "READPSG"
-----
-----
|