mirror of
https://github.com/AppleWin/AppleWin.git
synced 2026-04-21 07:17:41 +00:00
Removed redundant binary v2 save-state code
Also: . support new CpuType independently of Apple2Type . save-state: don't save disk track image if no disk . save-state: re-init AppleWin internals & UI to reflect changed Apple2Type
This commit is contained in:
@@ -1425,124 +1425,3 @@ bool CSuperSerialCard::LoadSnapshot(YamlLoadHelper& yamlLoadHelper, UINT slot, U
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//---
|
||||
|
||||
struct SSC_Unit
|
||||
{
|
||||
SSC_DIPSW DIPSWDefault;
|
||||
SSC_DIPSW DIPSWCurrent;
|
||||
|
||||
DWORD uBaudRate;
|
||||
|
||||
BYTE uStopBits;
|
||||
BYTE uByteSize;
|
||||
BYTE uParity;
|
||||
|
||||
BYTE uControlByte;
|
||||
BYTE uCommandByte;
|
||||
|
||||
DWORD dwCommInactivity; // If non-zero then COM port open
|
||||
|
||||
bool bTxIrqEnabled;
|
||||
bool bRxIrqEnabled;
|
||||
|
||||
bool vbTxIrqPending;
|
||||
bool vbRxIrqPending;
|
||||
|
||||
bool bWrittenTx;
|
||||
|
||||
char SerialPortName[8];
|
||||
};
|
||||
|
||||
struct SS_CARD_SSC
|
||||
{
|
||||
SS_CARD_HDR Hdr;
|
||||
SSC_Unit Unit;
|
||||
};
|
||||
|
||||
void CSuperSerialCard::GetSnapshot(const HANDLE hFile)
|
||||
{
|
||||
SS_CARD_SSC CardSuperSerial;
|
||||
|
||||
CardSuperSerial.Hdr.UnitHdr.hdr.v2.Length = sizeof(SS_CARD_SSC);
|
||||
CardSuperSerial.Hdr.UnitHdr.hdr.v2.Type = UT_Card;
|
||||
CardSuperSerial.Hdr.UnitHdr.hdr.v2.Version = 1;
|
||||
|
||||
CardSuperSerial.Hdr.Slot = m_uSlot;
|
||||
CardSuperSerial.Hdr.Type = CT_SSC;
|
||||
|
||||
SSC_Unit& Unit = CardSuperSerial.Unit;
|
||||
|
||||
Unit.DIPSWDefault = m_DIPSWDefault;
|
||||
Unit.DIPSWCurrent = m_DIPSWCurrent;
|
||||
Unit.uBaudRate = m_uBaudRate;
|
||||
Unit.uStopBits = m_uStopBits;
|
||||
Unit.uByteSize = m_uByteSize;
|
||||
Unit.uParity = m_uParity;
|
||||
Unit.uControlByte = m_uControlByte;
|
||||
Unit.uCommandByte = m_uCommandByte;
|
||||
Unit.dwCommInactivity = m_dwCommInactivity;
|
||||
Unit.bTxIrqEnabled = m_bTxIrqEnabled;
|
||||
Unit.bRxIrqEnabled = m_bRxIrqEnabled;
|
||||
Unit.vbTxIrqPending = m_vbTxIrqPending;
|
||||
Unit.vbRxIrqPending = m_vbRxIrqPending;
|
||||
Unit.bWrittenTx = m_bWrittenTx;
|
||||
|
||||
strncpy_s(Unit.SerialPortName, sizeof(Unit.SerialPortName), GetSerialPortName(), _TRUNCATE);
|
||||
|
||||
//
|
||||
|
||||
DWORD dwBytesWritten;
|
||||
BOOL bRes = WriteFile( hFile,
|
||||
&CardSuperSerial,
|
||||
CardSuperSerial.Hdr.UnitHdr.hdr.v2.Length,
|
||||
&dwBytesWritten,
|
||||
NULL);
|
||||
|
||||
if(!bRes || (dwBytesWritten != CardSuperSerial.Hdr.UnitHdr.hdr.v2.Length))
|
||||
throw std::string("Save error: SSC");
|
||||
}
|
||||
|
||||
void CSuperSerialCard::SetSnapshot(const HANDLE hFile)
|
||||
{
|
||||
SS_CARD_SSC CardSuperSerial;
|
||||
|
||||
DWORD dwBytesRead;
|
||||
BOOL bRes = ReadFile( hFile,
|
||||
&CardSuperSerial,
|
||||
sizeof(CardSuperSerial),
|
||||
&dwBytesRead,
|
||||
NULL);
|
||||
|
||||
if (dwBytesRead != sizeof(CardSuperSerial))
|
||||
throw std::string("Card: file corrupt");
|
||||
|
||||
if (CardSuperSerial.Hdr.Slot != 2) // fixme
|
||||
throw std::string("Card: wrong slot");
|
||||
|
||||
if (CardSuperSerial.Hdr.UnitHdr.hdr.v2.Version != 1)
|
||||
throw std::string("Card: wrong version");
|
||||
|
||||
if (CardSuperSerial.Hdr.UnitHdr.hdr.v2.Length != sizeof(SS_CARD_SSC))
|
||||
throw std::string("Card: unit size mismatch");
|
||||
|
||||
SSC_Unit& Unit = CardSuperSerial.Unit;
|
||||
|
||||
m_DIPSWDefault = Unit.DIPSWDefault;
|
||||
m_DIPSWCurrent = Unit.DIPSWCurrent;
|
||||
m_uBaudRate = Unit.uBaudRate;
|
||||
m_uStopBits = Unit.uStopBits;
|
||||
m_uByteSize = Unit.uByteSize;
|
||||
m_uParity = Unit.uParity;
|
||||
m_uControlByte = Unit.uControlByte;
|
||||
m_uCommandByte = Unit.uCommandByte;
|
||||
m_dwCommInactivity = Unit.dwCommInactivity;
|
||||
m_bTxIrqEnabled = Unit.bTxIrqEnabled;
|
||||
m_bRxIrqEnabled = Unit.bRxIrqEnabled;
|
||||
m_vbTxIrqPending = Unit.vbTxIrqPending;
|
||||
m_vbRxIrqPending = Unit.vbRxIrqPending;
|
||||
m_bWrittenTx = Unit.bWrittenTx;
|
||||
|
||||
SetSerialPortName(Unit.SerialPortName);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user