The layered access approach as described below is being implemented. Streaming of IPF data as well logical data is complete for raw streams, gap streams, and data streams apart from weak bits.
Changing the encoding type (i.e. MFM, GCR, etc.) as well as toggling between encoded and unencoded data is fully supported, e.g. marks are usually unencoded while the rest of the block data normally is. Changes within the same logical block is possible even for encoding type - previously only toggling the encoded state was possible.
The streaming code correctly generates data for streams of any sizes to bit level (previously, byte level) including looping data of arbitrary sizes to any specified or unspecified total length given in bits - e.g. generating data to fill a gap without knowing the size of the gap.
Changed slightly how gap streams are encoded to streamline the code base.