Peripheral Soft Reset
From CPCWiki - THE Amstrad CPC encyclopedia!
Revision as of 21:54, 9 January 2010 by Nocash (Talk | contribs) (Created page with 'Port F8FFh is an undocumented and 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…')
Port F8FFh is an undocumented and 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.
Avoid this
- Software should never write to (or even read from) Port F8FFh. That might cause connected Peripherals to reset themselves.
- Hardware should not perform any actions (other than the intended Soft Reset action) upon accessing Port F8FFh. Eg. producing hardware that formats the disc on write to Port F8FFh would be no good. This applies also on incompletely decoded addresses, eg. formatting on write to Port F8F0h, but also mirroring that action to F8FFh.
- When intentionally using the feature, be sure to have the port fully decoded. Ie. do not re-initialize your hardware on writes to other 'nearby' ports like F8EFh (Schneider RS232 Interface).
Known Hardware
There's no hardware known to use the Soft Reset feature - though when reverse engineering things by only examining the software drivers one may easily miss it, since the OUT is issued by the BIOS, not by the driver.
The only known hardware that is - maybe unintentionally - using Port F8FFh is CPCISA by Yarek.