Changes

Peripheral Soft Reset

830 bytes added, 08:26, 10 September 2022
Port F8FFh is an undocumented and a documented, but rarely known I/O address, used by the standard BIOS functions MC_BOOT_PROGRAM and MC_START_PROGRAM (vector BD13h and BD16h). These functions are usually executed when starting a binary program with RUN"FILENAME.BIN", both functions do issue an "OUT [F8FFh],FFh". This feature is apparently intended to allow Peripherals to re-initialize themselves when needed. From the official [[SOFT158]] specs: :"All expansion peripherals should be reset when an output is performed to I/O channel #F8FF. In particular a peripheral that generates interrupts must not generate an interrupt until it is re-initialised after such an output has been performed." Most or all peripherals (including Amstrad's own [[DDI-1]]) aren't following that suggestion, and usually there is no need to do so. There may be a few special cases there hardware could take use of it, such like interrupt generating devices, especially if they do access formerly allocated memory.
== Avoid this ==
== Known Hardware ==
The Soft Reset feature isn't too is useful(initialize hardware expansions), and there's but no used a lot; the [[PlayCity]], [[Nova]] and [[CPCISA]] are the only hardware known to be (expansion using intentionally) using that this feature (though when reverse engineering things by only examining the software drivers one may easily miss its presence, since the OUT [F8FFh] is issued by the BIOS, not by the driver). Moreover, there are probably various devices that do not directly use Port F8FFh, but that do react to the OUT because of incomplete port decoding. For example, the [[ACU Real Time Clock (DIY)]] decodes only A10,A4,A3 of its Port FBFFh, and so, it will also react to OUT [F8FFh],FFh. == Offical Specs ==
The only known hardware that is * [[Media:S158ap12.pdf|SOFT 158 Appendix 12 (maybe unintentionallyXII) using (The Hardware)]] - general info on Port F8FFh is (page 3)* [[CPCISA by YarekMedia:S968ap13.pdf|SOFT 968 Appendix 13 (XIII) (Hints Tips and Workarounds)]]. - info on Port F8FFh and interrupts (page 7)
Moreover, there are probably various devices that do not directly use Port F8FFh, but that do react to the OUT because of incomplete port decoding. For example, the [[ACU Real Time Clock (DIY)Category:Hardware]] decodes only A10,A4,A3 of it's Port FBFFh, and so, it will also react to OUT [F8FFh],FFh.
198
edits