651
edits
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. | 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 == |