Changes
8255
,All of these are almost identical in their operation. It is possible to detect each version by writing and then reading from the ppi control i/o port. Each can give a different pattern of values that are read back.
<br>
== The 8255 in the CPC ==
In the CPC+, the 8255 is integrated into the ASIC. The "emulation" is not complete and some functionality is not available. Please see the [https://cpctech.cpcwiki.de/docs/cpcplus.html Extra CPC+ documentation] for more information.
<br>
== Port Usage ==
* NOTE - If you are using the firmware, always return the operating modes and I/O state of the ports used to their settings below. The firmware expects the settings to be the same as given below and may operate incorrectly if they are not.
<br>
== PPI Port A ==
|-
|}
<br>
== PPI Port B ==
* If port B is programmed as an output, you can make a fake vsync visible to the Gate-Array by writing 1 to bit 0. You can then turn it off by writing 0 to bit 0. It is fake in the sense that it is not generated by the CRTC as it normally is. This fake vsync doesn't work on all CPCs. It is not known if it is dependent on CRTC or 8255 or both.
* For more info on LK1-LK4 (and further LKs) see [[LK Links]]
<br>
== PPI Port C ==
|-
|}
<br>
== PPI Control ==
[[File:8255 Control1.png]]
<br>
== Group Modes ==
[[File:8255 - Port pins.gif]]
<br>
== Programming Examples ==
</pre>
<br>
== Block Diagram ==
[[File:8255 Block Diagram.png]]
<br>
== Amstrad ASIC PPI ==
*The 8255 PPI is not emulated by the Pre-ASIC. These CPC’s have a real PPI chip and therefore behave like the first generation of CPC’s.
*On a real PPI chip, when the PPI control register is used (with bit7=1) to configure the ports, the output latches of all ports are reset to 0. The ASIC poorly emulates the PPI and does not reset these ports.
<br>
== Resources ==
* [[Media:Intel8255A_datasheet.pdf]] PPI Datasheet (Intel)
* [https://github.com/jotego/jt8255 JT8255] Verilog implementation of the 8255 PPI
<br>
== Links ==
*[http://en.wikipedia.org/wiki/Intel_8255 Wikipedia about the 8255ppi]
*[http://quasar.cpcscene.net/doku.php?id=assem:ppi Quasar PPI documentation (in french)]
[[Category:Electronic Component]][[Category:CPC Internal Components]][[Category:Programming]]