Currently, the Spectrum tape class (in CSpectrumDos::CTape) is derived from CDos, thus not easily leveraging assets that CSpectrumDos offers to disk systems - actually, the disk system must manually forward all requests that a tape may want, which is inefficient and error-prone. Apart of that, a Spectrum tape's CSpectrumDos::CTape::GetFileExportNameAndExt method doesn't well encode unprintable characters and doesn't preserve Spectrum keywords - such functionality is provided by CSpectrumDos class, not by CDos.
It's thus suggested that functionalities common for all Spectrum-based media be extracted to an intermediate class called CSpectrumBase, from which both CSpectrumDos and CSpectrumDos::CTape are derived. The same idea is valid for CSpectrumDos::CSpectrumFileManagerView - an intermediate CSpectrumBase::CSpectrumBaseFileManagerView should be introduced, stripped off of disk-specific functionalities.
Currently, the Spectrum tape class (in CSpectrumDos::CTape) is derived from CDos, thus not easily leveraging assets that CSpectrumDos offers to disk systems - actually, the disk system must manually forward all requests that a tape may want, which is inefficient and error-prone. Apart of that, a Spectrum tape's CSpectrumDos::CTape::GetFileExportNameAndExt method doesn't well encode unprintable characters and doesn't preserve Spectrum keywords - such functionality is provided by CSpectrumDos class, not by CDos.
It's thus suggested that functionalities common for all Spectrum-based media be extracted to an intermediate class called CSpectrumBase, from which both CSpectrumDos and CSpectrumDos::CTape are derived. The same idea is valid for CSpectrumDos::CSpectrumFileManagerView - an intermediate CSpectrumBase::CSpectrumBaseFileManagerView should be introduced, stripped off of disk-specific functionalities.