ZX Spectrum ULA: Difference between revisions

Jump to navigation Jump to search
no edit summary
m (→‎Keyboard Half-rows: Use wikitable class)
No edit summary
Line 2: Line 2:
[[Category:Video]]
[[Category:Video]]
[[Category:Audio]]
[[Category:Audio]]
The '''ULA''' (Uncommitted Logic Array) is a chip which controls most of the interfaces between the Z80 CPU and peripheral functions. On a [[ZX Spectrum 16k/48k]], it is a Ferranti 5C102, 5C112 or 6C001 (the '102 had a timing fault which necessitated an extra board called the "spider mod"; the 6C001 alters the timing of the colour burst signal to improve performance with certain TV sets.  ''(This info from the Spectrum Service Manual; don't know how to do citations on this wiki)'').
The '''ULA''' (Uncommitted Logic Array) is a chip which controls most of the interfaces between the Z80 CPU and peripheral functions.
 
The [[ZX Spectrum 16k/48k]] ULA went through [[#ULA versions|multiple revisions]] and is either a 5C or 6C series Ferranti ULA.
 
On a [[ZX Spectrum+ 128K]], or [[ZX Spectrum +2]] the ULA is the Ferranti 7K010E (labelled Amstrad 40056 in +2)
 
The ZX Spectrum +2A/2B, +3/3B machines use an entirely different gate array. See [[The Amstrad ASIC]]


== ULA Functions ==
== ULA Functions ==
Line 31: Line 37:
==== Example ====
==== Example ====
If the keys Caps Shift, T, and O are held down, and the Z80 does an IN on port 0xDEFE (57086<sub>10</sub>), this selects the half-rows '''''Caps'''''-'''V''' and '''P'''-'''Y''', so d<sub>0</sub> is low because of the Caps Shift, d<sub>1</sub> is low because of the O, and the T has no effect because its row is not selected.  Thus the returned data byte is 0x1C (that is, 0b00011100, or 28<sub>10</sub>) assuming EAR (d<sub>6</sub>) is low.
If the keys Caps Shift, T, and O are held down, and the Z80 does an IN on port 0xDEFE (57086<sub>10</sub>), this selects the half-rows '''''Caps'''''-'''V''' and '''P'''-'''Y''', so d<sub>0</sub> is low because of the Caps Shift, d<sub>1</sub> is low because of the O, and the T has no effect because its row is not selected.  Thus the returned data byte is 0x1C (that is, 0b00011100, or 28<sub>10</sub>) assuming EAR (d<sub>6</sub>) is low.
==ULA versions==
'''Need some text here about the different versions of the ULA and which board revisions they are compatible with'''


== Contention ==
== Contention ==

Navigation menu