ZXSTMULTIFACE

The state of the Multiface 1, Multiface 128 or Multiface 3.

// Multiface state
#define ZXSTMF_PAGEDIN            0x01
#define ZXSTMF_COMPRESSED         0x02
#define ZXSTMF_SOFTWARELOCKOUT    0x04
#define ZXSTMF_REDBUTTONDISABLED  0x08
#define ZXSTMF_DISABLED           0x10
#define ZXSTMF_16KRAMMODE         0x20

#define ZXSTMFM_1                 0
#define ZXSTMFM_128               1

typedef struct _tagZXSTMULTIFACE
{
  ZXSTBLOCK blk;
  BYTE ch48kModel;
  BYTE chFlags;
  BYTE chData[1];
} ZXSTMULTIFACE, *LPZXSTMULTIFACE;

Members

blk

The block header. The block id is ZXSTBID_MULTIFACE ('M', 'F', 'C', 'E').

ch48kModel

The Multiface model to use when emulating 16k or 48k Spectrums. This can be one of:

Value

Meaning

ZXSTMFM_1

Multiface 1

ZXSTMFM_128

Multiface 128

chFlags

Various flags specifying the current state of the Multiface. This can be a combination of:

Flag

Meaning

ZXSTMF_PAGEDIN

Specifies whether the Multiface ROM and RAM are currently paged in.

ZXSTMF_COMPRESSED

Specifies whether the Multiface RAM data (beginning at chData) is Zlib compressed or not.

ZXSTMF_SOFTWARELOCKOUT

Indicates that the software lockout feature of Multiface 128s and Multiface 3s has been enabled. This flag is not valid and should be set to 0 (zero) when emulating the Multiface 1.

ZXSTMF_REDBUTTONDISABLED

Indicates that the red (magic) button is disabled.

ZXSTMF_DISABLED

Indicates that the user has disabled Multiface 1 emulation with the physical disable switch. This flag is not valid and should be set to 0 (zero) when emulating the Multiface 128 or Multiface 3.

ZXSTMF_16KRAMMODE

Specifies Multiface hardware which has had the 8KB of ROM and 8KB of RAM replaced with 16KB of RAM. This is required by advanced Multiface programs such as SoftCrack. If ZXSTMF_16KRAMMODE is set, the RAM image stored at chData will expand to 16,384 bytes.

chData

The Zlib compressed or uncompressed Multiface RAM image, depending on whether ZXSTMF_COMPRESSED is set. When loading the Zlib compressed RAM image, the compressed size can be obtained by:

compressedSize = blk.dwSize - ( sizeof( ZXSTMULTIFACE ) - 1 - sizeof( ZXSTBLOCK ));

If ZXSTMF_16KRAMMODE is set, chData will expand to 16KB rather than 8KB.

Remarks

The last bytes written to ports $1ffd and $7ffd (which are used by the Multiface) can be read from the ZXSTBID_SPECREGS block which appears earlier in the file.

Revision history

Available since version 1.0