Fix for reading $C01x for Apple II and II+ models. (#1261)
This commit is contained in:
parent
56cc779351
commit
fbc22fa566
|
@ -333,6 +333,22 @@ static char ClipboardCurrChar(bool bIncPtr)
|
||||||
return nKey;
|
return nKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BYTE ClipboardReadOrPeek(bool incPtr)
|
||||||
|
{
|
||||||
|
if (g_bPasteFromClipboard)
|
||||||
|
ClipboardInit();
|
||||||
|
|
||||||
|
if (g_bClipboardActive)
|
||||||
|
{
|
||||||
|
if (*lptstr == 0)
|
||||||
|
ClipboardDone();
|
||||||
|
else
|
||||||
|
return 0x80 | ClipboardCurrChar(incPtr);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
const UINT kAKDNumElements = 256/64;
|
const UINT kAKDNumElements = 256/64;
|
||||||
|
@ -402,43 +418,29 @@ BYTE KeybReadData (void)
|
||||||
{
|
{
|
||||||
LogFileTimeUntilFirstKeyRead();
|
LogFileTimeUntilFirstKeyRead();
|
||||||
|
|
||||||
if (g_bPasteFromClipboard)
|
BYTE res = ClipboardReadOrPeek(false);
|
||||||
ClipboardInit();
|
if (res)
|
||||||
|
return res;
|
||||||
if (g_bClipboardActive)
|
|
||||||
{
|
|
||||||
if(*lptstr == 0)
|
|
||||||
ClipboardDone();
|
|
||||||
else
|
|
||||||
return 0x80 | ClipboardCurrChar(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
return keycode | (keywaiting ? 0x80 : 0);
|
return keycode | (keywaiting ? 0x80 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//===========================================================================
|
//===========================================================================
|
||||||
|
|
||||||
BYTE KeybReadFlag (void)
|
BYTE KeybClearStrobe(void)
|
||||||
{
|
{
|
||||||
if (g_bPasteFromClipboard)
|
|
||||||
ClipboardInit();
|
|
||||||
|
|
||||||
if (g_bClipboardActive)
|
|
||||||
{
|
|
||||||
if(*lptstr == 0)
|
|
||||||
ClipboardDone();
|
|
||||||
else
|
|
||||||
return 0x80 | ClipboardCurrChar(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
keywaiting = 0;
|
keywaiting = 0;
|
||||||
|
|
||||||
if (IS_APPLE2) // Include Pravets machines too?
|
return ClipboardReadOrPeek(true);
|
||||||
return keycode;
|
}
|
||||||
|
|
||||||
|
BYTE KeybReadFlag (void)
|
||||||
|
{
|
||||||
|
_ASSERT(!IS_APPLE2); // And also not Pravets machines?
|
||||||
|
|
||||||
|
BYTE res = KeybClearStrobe();
|
||||||
|
if (res)
|
||||||
|
return res;
|
||||||
|
|
||||||
// AKD
|
// AKD
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ void KeybQueueKeypress(WPARAM key, Keystroke_e bASCII);
|
||||||
void KeybToggleCapsLock ();
|
void KeybToggleCapsLock ();
|
||||||
void KeybToggleP8ACapsLock ();
|
void KeybToggleP8ACapsLock ();
|
||||||
void KeybAnyKeyDown(UINT message, WPARAM wparam, bool bIsExtended);
|
void KeybAnyKeyDown(UINT message, WPARAM wparam, bool bIsExtended);
|
||||||
|
BYTE KeybClearStrobe(void);
|
||||||
BYTE KeybReadData (void);
|
BYTE KeybReadData (void);
|
||||||
BYTE KeybReadFlag (void);
|
BYTE KeybReadFlag (void);
|
||||||
void KeybSaveSnapshot(class YamlSaveHelper& yamlSaveHelper);
|
void KeybSaveSnapshot(class YamlSaveHelper& yamlSaveHelper);
|
||||||
|
|
|
@ -417,7 +417,10 @@ static BYTE __stdcall IOWrite_C00x(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULON
|
||||||
static BYTE __stdcall IORead_C01x(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG nExecutedCycles)
|
static BYTE __stdcall IORead_C01x(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG nExecutedCycles)
|
||||||
{
|
{
|
||||||
if (IS_APPLE2) // Include Pravets machines too?
|
if (IS_APPLE2) // Include Pravets machines too?
|
||||||
return KeybReadFlag();
|
{
|
||||||
|
KeybClearStrobe();
|
||||||
|
return IO_Null(pc, addr, bWrite, d, nExecutedCycles); // GH#1261
|
||||||
|
}
|
||||||
|
|
||||||
bool res = false;
|
bool res = false;
|
||||||
switch (addr & 0xf)
|
switch (addr & 0xf)
|
||||||
|
@ -445,7 +448,7 @@ static BYTE __stdcall IORead_C01x(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG
|
||||||
|
|
||||||
static BYTE __stdcall IOWrite_C01x(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG nExecutedCycles)
|
static BYTE __stdcall IOWrite_C01x(WORD pc, WORD addr, BYTE bWrite, BYTE d, ULONG nExecutedCycles)
|
||||||
{
|
{
|
||||||
return KeybReadFlag();
|
return KeybClearStrobe();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-------------------------------------
|
//-------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue