2005-09-03: Updated to version 1.38
Signed-off-by: Gwenhael Le Moine <gwenhael.le.moine@gmail.com>
This commit is contained in:
parent
e1230f4415
commit
0c2f128039
16 changed files with 373 additions and 266 deletions
BIN
EMU48.EXE
BIN
EMU48.EXE
Binary file not shown.
|
@ -1,4 +1,4 @@
|
|||
Known bugs and restrictions of Emu48 V1.37
|
||||
Known bugs and restrictions of Emu48 V1.38
|
||||
------------------------------------------
|
||||
|
||||
- the following I/O bits aren't emulated (incomplete)
|
||||
|
@ -55,4 +55,4 @@ Known bugs and restrictions of Emu48 V1.37
|
|||
- quitting the emulator while programming the flash isn't allowed,
|
||||
because the content of flash state machine isn't saved so far
|
||||
|
||||
06/14/04 (c) by Christoph Gießelink, c dot giesselink at gmx dot de
|
||||
08/30/05 (c) by Christoph Gießelink, c dot giesselink at gmx dot de
|
||||
|
|
|
@ -1,3 +1,50 @@
|
|||
Service Pack 38 for Emu48 Version 1.0
|
||||
|
||||
DISPLAY.C
|
||||
- changed gray scale implementation from conditional compiling to
|
||||
variable controlled
|
||||
- bugfix in function GetLineCounterGray() and StartDisplayGray(),
|
||||
VBL down counter counted 62,...,0,63 instead of 63,...,0
|
||||
|
||||
EMU48.C
|
||||
- changed function SettingsProc(), added IDC_GRAYSCALE button
|
||||
handling
|
||||
- changed function OnCreate() and OnDestroy(), changed gray scale
|
||||
implementation from conditional compiling to variable controlled
|
||||
|
||||
EMU48.H
|
||||
- removed gray scale definitions
|
||||
- changed some function prototypes to function pointers
|
||||
|
||||
EMU48.RC
|
||||
- added "Enable Virtual LCD Delay" checkbox in Settings dialog
|
||||
- changed menu text order from "Copy Stack/Copy Screen/Paste Stack"
|
||||
to "Copy Screen/Copy Stack/Paste Stack"
|
||||
- changed version
|
||||
|
||||
ENGINE.C
|
||||
- changed function WorkerThread(), changed gray scale implementation
|
||||
from conditional compiling to variable controlled
|
||||
|
||||
FILES.C
|
||||
- changed function PatchRom(), changed ASCII string handling from
|
||||
BYTE to CHAR data type
|
||||
|
||||
MOPS.C
|
||||
- changed function Nwrite(), changed gray scale implementation from
|
||||
conditional compiling to variable controlled
|
||||
|
||||
OPS.H
|
||||
- changed function Nsrb(), speed optimization
|
||||
|
||||
RESOURCE.H
|
||||
- added definition
|
||||
|
||||
SETTINGS.C
|
||||
- changed function ReadSettings() and WriteSettings(), added item
|
||||
"Grayscale" in section [Emulator] in the INI-File
|
||||
|
||||
|
||||
Service Pack 37 for Emu48 Version 1.0
|
||||
|
||||
DDESERV.C
|
||||
|
|
|
@ -15,11 +15,10 @@
|
|||
|
||||
// #define DEBUG_DISPLAY // switch for DISPLAY debug purpose
|
||||
|
||||
#if defined GRAYSCALE
|
||||
#define NOCOLORS 8
|
||||
#else
|
||||
#define NOCOLORS 2
|
||||
#endif
|
||||
#define NOCOLORSGRAY 8 // no. of colors in gray scale mode
|
||||
#define NOCOLORSBW 2 // no. of colors in black and white mode
|
||||
|
||||
#define DISPLAY_FREQ 19 // display update 1/frequency (1/64) in ms (gray scale mode)
|
||||
|
||||
#define B 0x00000000 // black
|
||||
#define W 0x00FFFFFF // white
|
||||
|
@ -30,13 +29,14 @@
|
|||
// main display lines, handle zero lines exception
|
||||
#define LINES(n) (((n) == 0) ? 64 : ((n)+1))
|
||||
|
||||
#define GRAYMASK (((((NOCOLORS)-1)>>1)<<24) \
|
||||
|((((NOCOLORS)-1)>>1)<<16) \
|
||||
|((((NOCOLORS)-1)>>1)<<8) \
|
||||
|((((NOCOLORS)-1)>>1)))
|
||||
#define GRAYMASK(c) (((((c)-1)>>1)<<24) \
|
||||
|((((c)-1)>>1)<<16) \
|
||||
|((((c)-1)>>1)<<8) \
|
||||
|((((c)-1)>>1)))
|
||||
|
||||
#define DIBPIXEL(d,p) *(((DWORD*)(d))++) = ((*((DWORD*)(d)) & GRAYMASK) << 1) | (p)
|
||||
#define DIBPIXEL(d,p) *(((DWORD*)(d))++) = ((*((DWORD*)(d)) & dwGrayMask) << 1) | (p)
|
||||
|
||||
BOOL bGrayscale = FALSE;
|
||||
UINT nBackgroundX = 0;
|
||||
UINT nBackgroundY = 0;
|
||||
UINT nBackgroundW = 0;
|
||||
|
@ -48,12 +48,30 @@ LPBYTE pbyLcd;
|
|||
HDC hLcdDC = NULL;
|
||||
HDC hMainDC = NULL;
|
||||
|
||||
BYTE (*GetLineCounter)(VOID) = NULL;
|
||||
VOID (*StartDisplay)(BYTE byInitial) = NULL;
|
||||
VOID (*StopDisplay)(VOID) = NULL;
|
||||
|
||||
static BYTE GetLineCounterGray(VOID);
|
||||
static BYTE GetLineCounterBW(VOID);
|
||||
static VOID StartDisplayGray(BYTE byInitial);
|
||||
static VOID StartDisplayBW(BYTE byInitial);
|
||||
static VOID StopDisplayGray(VOID);
|
||||
static VOID StopDisplayBW(VOID);
|
||||
|
||||
static HBITMAP hLcdBitmap;
|
||||
static HBITMAP hMainBitmap;
|
||||
|
||||
static DWORD Pattern[16];
|
||||
static BYTE Buf[36];
|
||||
|
||||
static DWORD dwGrayMask;
|
||||
|
||||
static LARGE_INTEGER lLcdRef; // reference time for VBL counter
|
||||
static UINT uLcdTimerId = 0;
|
||||
|
||||
static BYTE byVblRef = 0; // VBL stop reference
|
||||
|
||||
static DWORD dwKMLColor[64] = // color table loaded by KML script
|
||||
{
|
||||
W,B,B,B,B,B,B,B,B,B,B,B,B,B,B,B,
|
||||
|
@ -65,10 +83,10 @@ static DWORD dwKMLColor[64] = // color table loaded by KML script
|
|||
static struct
|
||||
{
|
||||
BITMAPINFOHEADER Lcd_bmih;
|
||||
RGBQUAD bmiColors[NOCOLORS];
|
||||
RGBQUAD bmiColors[NOCOLORSGRAY];
|
||||
} bmiLcd =
|
||||
{
|
||||
{0x28,0/*x*/,0/*y*/,1,8,BI_RGB,0,0,0,NOCOLORS,0}
|
||||
{0x28,0/*x*/,0/*y*/,1,8,BI_RGB,0,0,0,NOCOLORSGRAY,0}
|
||||
};
|
||||
|
||||
static __inline VOID BuildPattern(VOID)
|
||||
|
@ -106,32 +124,28 @@ static __inline VOID BuildPattern(VOID)
|
|||
|
||||
VOID UpdateContrast(BYTE byContrast)
|
||||
{
|
||||
#if defined GRAYSCALE
|
||||
INT i;
|
||||
INT i,nColors;
|
||||
|
||||
// table for max. 8 colors
|
||||
const INT nCAdj[] = { 0, 1, 1, 2, 1, 2, 2, 3 };
|
||||
|
||||
RGBQUAD c = *(RGBQUAD*)&dwKMLColor[byContrast]; // pixel on color
|
||||
RGBQUAD b = *(RGBQUAD*)&dwKMLColor[byContrast+32]; // pixel off color
|
||||
if ((Chipset.IORam[BITOFFSET] & DON) == 0 || I == *(DWORD*)&b)
|
||||
b = *(RGBQUAD*)&dwKMLColor[0];
|
||||
|
||||
// fill color palette of bitmap
|
||||
for (i = 0; i < ARRAYSIZEOF(bmiLcd.bmiColors); ++i)
|
||||
{
|
||||
const INT nCAdj[] = { 0, 1, 1, 2, 1, 2, 2, 3 };
|
||||
nColors = bGrayscale ? (NOCOLORSGRAY-1) : (NOCOLORSBW-1);
|
||||
|
||||
_ASSERT(i < ARRAYSIZEOF(bmiLcd.bmiColors));
|
||||
_ASSERT(i < ARRAYSIZEOF(nCAdj));
|
||||
_ASSERT(nColors <= ARRAYSIZEOF(nCAdj)); // no. of colors must be smaller than entries in the gray color table
|
||||
|
||||
// fill color palette of bitmap
|
||||
for (i = 0; i <= nColors; ++i)
|
||||
{
|
||||
bmiLcd.bmiColors[i] = b;
|
||||
bmiLcd.bmiColors[i].rgbRed += (((INT) c.rgbRed - (INT) b.rgbRed) * nCAdj[i] / 3);
|
||||
bmiLcd.bmiColors[i].rgbGreen += (((INT) c.rgbGreen - (INT) b.rgbGreen) * nCAdj[i] / 3);
|
||||
bmiLcd.bmiColors[i].rgbBlue += (((INT) c.rgbBlue - (INT) b.rgbBlue) * nCAdj[i] / 3);
|
||||
bmiLcd.bmiColors[i].rgbRed += ((INT) c.rgbRed - (INT) b.rgbRed) * nCAdj[i] / nCAdj[nColors];
|
||||
bmiLcd.bmiColors[i].rgbGreen += ((INT) c.rgbGreen - (INT) b.rgbGreen) * nCAdj[i] / nCAdj[nColors];
|
||||
bmiLcd.bmiColors[i].rgbBlue += ((INT) c.rgbBlue - (INT) b.rgbBlue) * nCAdj[i] / nCAdj[nColors];
|
||||
}
|
||||
#else
|
||||
bmiLcd.bmiColors[1] = *(RGBQUAD*)&dwKMLColor[byContrast]; // pixel on color
|
||||
bmiLcd.bmiColors[0] = *(RGBQUAD*)&dwKMLColor[byContrast+32]; // pixel off color
|
||||
if ((Chipset.IORam[BITOFFSET] & DON) == 0 || I == *(DWORD*)&bmiLcd.bmiColors[0])
|
||||
bmiLcd.bmiColors[0] = *(RGBQUAD*)&dwKMLColor[0];
|
||||
#endif
|
||||
|
||||
// update palette information
|
||||
_ASSERT(hLcdDC);
|
||||
|
@ -145,6 +159,28 @@ VOID SetLcdColor(UINT nId, UINT nRed, UINT nGreen, UINT nBlue)
|
|||
return;
|
||||
}
|
||||
|
||||
VOID SetLcdMode(BOOL bMode)
|
||||
{
|
||||
if ((bGrayscale = bMode))
|
||||
{
|
||||
// set pixel update mask
|
||||
dwGrayMask = GRAYMASK(NOCOLORSGRAY);
|
||||
GetLineCounter = GetLineCounterGray;
|
||||
StartDisplay = StartDisplayGray;
|
||||
StopDisplay = StopDisplayGray;
|
||||
}
|
||||
else
|
||||
{
|
||||
// set pixel update mask
|
||||
dwGrayMask = GRAYMASK(NOCOLORSBW);
|
||||
GetLineCounter = GetLineCounterBW;
|
||||
StartDisplay = StartDisplayBW;
|
||||
StopDisplay = StopDisplayBW;
|
||||
}
|
||||
UpdateContrast(Chipset.contrast);
|
||||
return;
|
||||
}
|
||||
|
||||
VOID CreateLcdBitmap(VOID)
|
||||
{
|
||||
// create LCD bitmap
|
||||
|
@ -159,7 +195,7 @@ VOID CreateLcdBitmap(VOID)
|
|||
SelectPalette(hLcdDC,hPalette,FALSE); // set palette for LCD DC
|
||||
RealizePalette(hLcdDC); // realize palette
|
||||
BuildPattern(); // build Nibble -> DIB mask pattern
|
||||
UpdateContrast(Chipset.contrast);
|
||||
SetLcdMode(bGrayscale); // init display update function pointer
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -170,6 +206,10 @@ VOID DestroyLcdBitmap(VOID)
|
|||
while(i < 32) dwKMLColor[i++] = B;
|
||||
while(i < 64) dwKMLColor[i++] = I;
|
||||
|
||||
GetLineCounter = NULL;
|
||||
StartDisplay = NULL;
|
||||
StopDisplay = NULL;
|
||||
|
||||
if (hLcdDC != NULL)
|
||||
{
|
||||
// destroy LCD bitmap
|
||||
|
@ -220,7 +260,7 @@ VOID DestroyMainBitmap(VOID)
|
|||
|
||||
VOID UpdateDisplayPointers(VOID)
|
||||
{
|
||||
GRAYON(EnterCriticalSection(&csLcdLock));
|
||||
EnterCriticalSection(&csLcdLock);
|
||||
{
|
||||
UINT nLines = LINES(Chipset.lcounter);
|
||||
|
||||
|
@ -248,7 +288,7 @@ VOID UpdateDisplayPointers(VOID)
|
|||
}
|
||||
Chipset.end2 = Chipset.start2 + (64 - nLines) * 34;
|
||||
}
|
||||
GRAYON(LeaveCriticalSection(&csLcdLock));
|
||||
LeaveCriticalSection(&csLcdLock);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -425,13 +465,16 @@ VOID UpdateMenuDisplay(VOID)
|
|||
|
||||
VOID WriteToMainDisplay(LPBYTE a, DWORD d, UINT s)
|
||||
{
|
||||
#if !defined GRAYSCALE
|
||||
INT x0, x;
|
||||
INT y0, y;
|
||||
DWORD *p;
|
||||
INT lWidth;
|
||||
UINT nLines;
|
||||
|
||||
INT lWidth = abs(Chipset.width); // display width
|
||||
UINT nLines = LINES(Chipset.lcounter); // main display lines
|
||||
if (bGrayscale) return; // no direct writing in grayscale mode
|
||||
|
||||
lWidth = abs(Chipset.width); // display width
|
||||
nLines = LINES(Chipset.lcounter); // main display lines
|
||||
|
||||
#if defined DEBUG_DISPLAY
|
||||
{
|
||||
|
@ -531,18 +574,19 @@ VOID WriteToMainDisplay(LPBYTE a, DWORD d, UINT s)
|
|||
GdiFlush();
|
||||
}
|
||||
LeaveCriticalSection(&csGDILock);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
VOID WriteToMenuDisplay(LPBYTE a, DWORD d, UINT s)
|
||||
{
|
||||
#if !defined GRAYSCALE
|
||||
UINT x0, x;
|
||||
UINT y0, y;
|
||||
DWORD *p;
|
||||
UINT nLines;
|
||||
|
||||
UINT nLines = LINES(Chipset.lcounter); // main display lines
|
||||
if (bGrayscale) return; // no direct writing in grayscale mode
|
||||
|
||||
nLines = LINES(Chipset.lcounter); // main display lines
|
||||
|
||||
#if defined DEBUG_DISPLAY
|
||||
{
|
||||
|
@ -651,7 +695,6 @@ VOID WriteToMenuDisplay(LPBYTE a, DWORD d, UINT s)
|
|||
GdiFlush();
|
||||
}
|
||||
LeaveCriticalSection(&csGDILock);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -706,15 +749,13 @@ VOID ResizeWindow(VOID)
|
|||
return;
|
||||
}
|
||||
|
||||
//################
|
||||
//#
|
||||
//# functions for gray scale implementation
|
||||
//#
|
||||
//################
|
||||
|
||||
#if defined GRAYSCALE
|
||||
|
||||
#define DISPLAY_FREQ 19 // display update 1/frequency (1/64) in ms
|
||||
|
||||
static LARGE_INTEGER lLcdRef; // reference time for VBL counter
|
||||
|
||||
static UINT uLcdTimerId = 0;
|
||||
|
||||
// main display update routine
|
||||
static VOID CALLBACK LcdProc(UINT uEventId, UINT uMsg, DWORD dwUser, DWORD dw1, DWORD dw2)
|
||||
{
|
||||
EnterCriticalSection(&csLcdLock);
|
||||
|
@ -735,7 +776,7 @@ static VOID CALLBACK LcdProc(UINT uEventId, UINT uMsg, DWORD dwUser, DWORD dw1,
|
|||
}
|
||||
|
||||
// LCD line counter calculation
|
||||
BYTE GetLineCounter(VOID)
|
||||
BYTE GetLineCounterGray(VOID)
|
||||
{
|
||||
LARGE_INTEGER lLC;
|
||||
BYTE byTime;
|
||||
|
@ -750,10 +791,10 @@ BYTE GetLineCounter(VOID)
|
|||
|
||||
if (byTime > 0x3F) byTime = 0x3F; // all counts made
|
||||
|
||||
return (0x7E - byTime) & 0x3F; // update display between VBL counter 0x3F-0x3E
|
||||
return 0x3F - byTime; // update display between VBL counter 0x3F-0x3E
|
||||
}
|
||||
|
||||
VOID StartDisplay(BYTE byInitial)
|
||||
static VOID StartDisplayGray(BYTE byInitial)
|
||||
{
|
||||
if (uLcdTimerId) // LCD update timer running
|
||||
return; // -> quit
|
||||
|
@ -763,14 +804,15 @@ VOID StartDisplay(BYTE byInitial)
|
|||
QueryPerformanceCounter(&lLcdRef); // actual time of top line
|
||||
|
||||
// adjust startup counter to get the right VBL value
|
||||
lLcdRef.QuadPart -= ((LONGLONG) ((0x7E - byInitial) & 0x3F) * lFreq.QuadPart) >> 12;
|
||||
_ASSERT(byInitial <= 0x3F); // line counter value 0 - 63
|
||||
lLcdRef.QuadPart -= ((LONGLONG) (0x3F - byInitial) * lFreq.QuadPart) >> 12;
|
||||
|
||||
VERIFY(uLcdTimerId = timeSetEvent(DISPLAY_FREQ,0,(LPTIMECALLBACK)&LcdProc,0,TIME_PERIODIC));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
VOID StopDisplay(VOID)
|
||||
static VOID StopDisplayGray(VOID)
|
||||
{
|
||||
BYTE a[2];
|
||||
ReadIO(a,LINECOUNT,2); // update VBL at display off time
|
||||
|
@ -790,11 +832,13 @@ VOID StopDisplay(VOID)
|
|||
return;
|
||||
}
|
||||
|
||||
#else
|
||||
//################
|
||||
//#
|
||||
//# functions for black and white implementation
|
||||
//#
|
||||
//################
|
||||
|
||||
static BYTE byVblRef = 0; // VBL stop reference
|
||||
|
||||
// LCD line counter calculation
|
||||
// LCD line counter calculation in BW mode
|
||||
static BYTE F4096Hz(VOID) // get a 6 bit 4096Hz down counter value
|
||||
{
|
||||
LARGE_INTEGER lLC;
|
||||
|
@ -805,24 +849,22 @@ static BYTE F4096Hz(VOID) // get a 6 bit 4096Hz down counter value
|
|||
return -(BYTE)(((lLC.QuadPart - lAppStart.QuadPart) << 12) / lFreq.QuadPart) & 0x3F;
|
||||
}
|
||||
|
||||
BYTE GetLineCounter(VOID) // get line counter value
|
||||
static BYTE GetLineCounterBW(VOID) // get line counter value
|
||||
{
|
||||
_ASSERT(byVblRef < 0x40);
|
||||
return (0x40 + F4096Hz() - byVblRef) & 0x3F;
|
||||
}
|
||||
|
||||
VOID StartDisplay(BYTE byInitial)
|
||||
static VOID StartDisplayBW(BYTE byInitial)
|
||||
{
|
||||
// get positive VBL difference between now and stop time
|
||||
byVblRef = (0x40 + F4096Hz() - byInitial) & 0x3F;
|
||||
return;
|
||||
}
|
||||
|
||||
VOID StopDisplay(VOID)
|
||||
static VOID StopDisplayBW(VOID)
|
||||
{
|
||||
BYTE a[2];
|
||||
ReadIO(a,LINECOUNT,2); // update VBL at display off time
|
||||
return;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#include "kml.h"
|
||||
#include "debugger.h"
|
||||
|
||||
#define VERSION "1.37"
|
||||
#define VERSION "1.38"
|
||||
#define CF_HPOBJ "CF_HPOBJ" // clipboard format for DDE
|
||||
|
||||
#define MAXPORTS 256 // number of COM ports
|
||||
|
@ -48,7 +48,7 @@ static const LPCTSTR szLicence =
|
|||
|
||||
|
||||
CRITICAL_SECTION csGDILock; // critical section for hWindowDC
|
||||
GRAYON(CRITICAL_SECTION csLcdLock); // critical section for display update
|
||||
CRITICAL_SECTION csLcdLock; // critical section for display update
|
||||
CRITICAL_SECTION csKeyLock; // critical section for key scan
|
||||
CRITICAL_SECTION csIOLock; // critical section for I/O access
|
||||
CRITICAL_SECTION csT1Lock; // critical section for timer1 access
|
||||
|
@ -266,6 +266,7 @@ static BOOL CALLBACK SettingsProc(HWND hDlg, UINT message, DWORD wParam, LONG lP
|
|||
CheckDlgButton(hDlg,IDC_AUTOSAVEONEXIT,bAutoSaveOnExit);
|
||||
CheckDlgButton(hDlg,IDC_OBJECTLOADWARNING,bLoadObjectWarning);
|
||||
CheckDlgButton(hDlg,IDC_ALWAYSDISPLOG,bAlwaysDisplayLog);
|
||||
CheckDlgButton(hDlg,IDC_GRAYSCALE,bGrayscale);
|
||||
|
||||
// set disassebler mode
|
||||
CheckDlgButton(hDlg,(disassembler_mode == HP_MNEMONICS) ? IDC_DISASM_HP : IDC_DISASM_CLASS,BST_CHECKED);
|
||||
|
@ -375,6 +376,13 @@ static BOOL CALLBACK SettingsProc(HWND hDlg, UINT message, DWORD wParam, LONG lP
|
|||
bLoadObjectWarning = IsDlgButtonChecked(hDlg, IDC_OBJECTLOADWARNING);
|
||||
bAlwaysDisplayLog = IsDlgButtonChecked(hDlg, IDC_ALWAYSDISPLOG);
|
||||
SetSpeed(bRealSpeed); // set speed
|
||||
// LCD grayscale checkbox has been changed
|
||||
if (bGrayscale != (BOOL) IsDlgButtonChecked(hDlg,IDC_GRAYSCALE))
|
||||
{
|
||||
UINT nOldState = SwitchToState(SM_INVALID);
|
||||
SetLcdMode(!bGrayscale); // set new display mode
|
||||
SwitchToState(nOldState);
|
||||
}
|
||||
if (nState == SM_INVALID)
|
||||
{
|
||||
bPort2IsShared = IsDlgButtonChecked(hDlg,IDC_PORT2ISSHARED);
|
||||
|
@ -450,7 +458,7 @@ static UINT SaveChanges(BOOL bAuto)
|
|||
static LRESULT OnCreate(HWND hWindow)
|
||||
{
|
||||
InitializeCriticalSection(&csGDILock);
|
||||
GRAYON(InitializeCriticalSection(&csLcdLock));
|
||||
InitializeCriticalSection(&csLcdLock);
|
||||
InitializeCriticalSection(&csKeyLock);
|
||||
InitializeCriticalSection(&csIOLock);
|
||||
InitializeCriticalSection(&csT1Lock);
|
||||
|
@ -492,7 +500,7 @@ static LRESULT OnDestroy(HWND hWindow)
|
|||
}
|
||||
|
||||
DeleteCriticalSection(&csGDILock);
|
||||
GRAYON(DeleteCriticalSection(&csLcdLock));
|
||||
DeleteCriticalSection(&csLcdLock);
|
||||
DeleteCriticalSection(&csKeyLock);
|
||||
DeleteCriticalSection(&csIOLock);
|
||||
DeleteCriticalSection(&csT1Lock);
|
||||
|
|
|
@ -6,14 +6,6 @@
|
|||
* Copyright (C) 1995 Sebastien Carlier
|
||||
*
|
||||
*/
|
||||
#if defined GRAYSCALE // grayscale defines
|
||||
#define GRAYON(a) a
|
||||
#define GRAYOFF(a)
|
||||
#else
|
||||
#define GRAYON(a)
|
||||
#define GRAYOFF(a) a
|
||||
#endif
|
||||
|
||||
#include "types.h"
|
||||
|
||||
#define HARDWARE "Yorke" // emulator hardware
|
||||
|
@ -116,6 +108,7 @@ extern VOID ReadLastDocument(LPTSTR szFileName, DWORD nSize);
|
|||
extern VOID WriteLastDocument(LPCTSTR szFilename);
|
||||
|
||||
// Display.c
|
||||
extern BOOL bGrayscale;
|
||||
extern UINT nBackgroundX;
|
||||
extern UINT nBackgroundY;
|
||||
extern UINT nBackgroundW;
|
||||
|
@ -126,8 +119,12 @@ extern UINT nLcdZoom;
|
|||
extern LPBYTE pbyLcd;
|
||||
extern HDC hLcdDC;
|
||||
extern HDC hMainDC;
|
||||
extern BYTE (*GetLineCounter)(VOID);
|
||||
extern VOID (*StartDisplay)(BYTE byInitial);
|
||||
extern VOID (*StopDisplay)(VOID);
|
||||
extern VOID UpdateContrast(BYTE byContrast);
|
||||
extern VOID SetLcdColor(UINT nId, UINT nRed, UINT nGreen, UINT nBlue);
|
||||
extern VOID SetLcdMode(BOOL bMode);
|
||||
extern VOID CreateLcdBitmap(VOID);
|
||||
extern VOID DestroyLcdBitmap(VOID);
|
||||
extern BOOL CreateMainBitmap(LPCTSTR szFilename);
|
||||
|
@ -139,9 +136,6 @@ extern VOID WriteToMainDisplay(LPBYTE a, DWORD d, UINT s);
|
|||
extern VOID WriteToMenuDisplay(LPBYTE a, DWORD d, UINT s);
|
||||
extern VOID UpdateAnnunciators(VOID);
|
||||
extern VOID ResizeWindow(VOID);
|
||||
extern BYTE GetLineCounter(VOID);
|
||||
extern VOID StartDisplay(BYTE byInitial);
|
||||
extern VOID StopDisplay(VOID);
|
||||
|
||||
// Engine.c
|
||||
extern BOOL bInterrupt;
|
||||
|
|
|
@ -74,7 +74,7 @@ BEGIN
|
|||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 160
|
||||
TOPMARGIN, 4
|
||||
BOTTOMMARGIN, 210
|
||||
BOTTOMMARGIN, 222
|
||||
END
|
||||
|
||||
IDD_CHOOSEKML, DIALOG
|
||||
|
@ -232,46 +232,48 @@ BEGIN
|
|||
ES_READONLY
|
||||
END
|
||||
|
||||
IDD_SETTINGS DIALOG DISCARDABLE 0, 0, 167, 217
|
||||
IDD_SETTINGS DIALOG DISCARDABLE 0, 0, 167, 229
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
CONTROL "Authentic Calculator Speed",IDC_REALSPEED,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,13,100,10
|
||||
CONTROL "Enable Virtual LCD Delay",IDC_GRAYSCALE,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,25,100,10
|
||||
CONTROL "Automatically Save Files",IDC_AUTOSAVE,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,25,89,10
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,37,89,10
|
||||
CONTROL "Automatically Save Files On Exit",IDC_AUTOSAVEONEXIT,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,37,114,10
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,49,114,10
|
||||
CONTROL "Show Load Object Warning",IDC_OBJECTLOADWARNING,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,49,102,10
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,61,102,10
|
||||
CONTROL "Always Show KML Compilation Result",IDC_ALWAYSDISPLOG,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,61,133,10
|
||||
GROUPBOX "General",IDC_STATIC,7,4,153,71
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,73,133,10
|
||||
GROUPBOX "General",IDC_STATIC,7,4,153,83
|
||||
CONTROL "HP Mnemonics",IDC_DISASM_HP,"Button",BS_AUTORADIOBUTTON |
|
||||
WS_GROUP | WS_TABSTOP,13,89,65,11
|
||||
WS_GROUP | WS_TABSTOP,13,101,65,11
|
||||
CONTROL "Class Mnemonics",IDC_DISASM_CLASS,"Button",
|
||||
BS_AUTORADIOBUTTON,84,89,70,11
|
||||
GROUPBOX "Disassembler",IDC_STATIC,7,78,153,28
|
||||
BS_AUTORADIOBUTTON,84,101,70,11
|
||||
GROUPBOX "Disassembler",IDC_STATIC,7,90,153,28
|
||||
CONTROL "Port 1 is Plugged",IDC_PORT1EN,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,13,119,67,10
|
||||
WS_TABSTOP,13,131,67,10
|
||||
CONTROL "Port 1 is Writeable",IDC_PORT1WR,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,84,119,69,10
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,84,131,69,10
|
||||
CONTROL "Port 2 is Shared",IDC_PORT2ISSHARED,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,131,65,10
|
||||
LTEXT "Port 2 File :",IDC_STATIC,13,147,37,8
|
||||
EDITTEXT IDC_PORT2,51,144,94,12,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "...",IDC_PORT2LOAD,145,144,10,12
|
||||
GROUPBOX "Memory Cards",IDC_STATIC,7,110,153,51
|
||||
LTEXT "Wire:",IDC_STATIC,13,176,17,8
|
||||
COMBOBOX IDC_WIRE,31,174,48,42,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,143,65,10
|
||||
LTEXT "Port 2 File :",IDC_STATIC,13,159,37,8
|
||||
EDITTEXT IDC_PORT2,51,156,94,12,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "...",IDC_PORT2LOAD,145,156,10,12
|
||||
GROUPBOX "Memory Cards",IDC_STATIC,7,122,153,51
|
||||
LTEXT "Wire:",IDC_STATIC,13,188,17,8
|
||||
COMBOBOX IDC_WIRE,31,186,48,42,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
LTEXT "IR:",IDC_STATIC,89,176,9,8
|
||||
COMBOBOX IDC_IR,107,174,48,43,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "IR:",IDC_STATIC,89,188,9,8
|
||||
COMBOBOX IDC_IR,107,186,48,43,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
GROUPBOX "Serial Ports",IDC_STATIC,7,164,153,27
|
||||
DEFPUSHBUTTON "&Ok",IDOK,9,196,50,14
|
||||
PUSHBUTTON "&Cancel",IDCANCEL,107,196,50,14
|
||||
GROUPBOX "Serial Ports",IDC_STATIC,7,176,153,27
|
||||
DEFPUSHBUTTON "&Ok",IDOK,9,208,50,14
|
||||
PUSHBUTTON "&Cancel",IDCANCEL,107,208,50,14
|
||||
END
|
||||
|
||||
IDD_CHOOSEKML DIALOG DISCARDABLE 0, 0, 195, 66
|
||||
|
@ -536,8 +538,8 @@ END
|
|||
//
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION 1,3,7,0
|
||||
PRODUCTVERSION 1,3,7,0
|
||||
FILEVERSION 1,3,8,0
|
||||
PRODUCTVERSION 1,3,8,0
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
|
@ -554,12 +556,12 @@ BEGIN
|
|||
BEGIN
|
||||
VALUE "CompanyName", "Sebastien Carlier & Christoph Gießelink\0"
|
||||
VALUE "FileDescription", "HP38/39/40/48/49 Emulator\0"
|
||||
VALUE "FileVersion", "1, 3, 7, 0\0"
|
||||
VALUE "FileVersion", "1, 3, 8, 0\0"
|
||||
VALUE "InternalName", "Emu48\0"
|
||||
VALUE "LegalCopyright", "Copyright © 2005\0"
|
||||
VALUE "OriginalFilename", "Emu48.exe\0"
|
||||
VALUE "ProductName", "Emu48\0"
|
||||
VALUE "ProductVersion", "1, 3, 7, 0\0"
|
||||
VALUE "ProductVersion", "1, 3, 8, 0\0"
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
|
@ -604,8 +606,8 @@ BEGIN
|
|||
MENUITEM "&Load Object...", ID_OBJECT_LOAD
|
||||
MENUITEM "&Save Object...", ID_OBJECT_SAVE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Copy String", ID_STACK_COPY
|
||||
MENUITEM "C&opy Screen", ID_VIEW_COPY
|
||||
MENUITEM "&Copy String", ID_STACK_COPY
|
||||
MENUITEM "&Paste String", ID_STACK_PASTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Reset Calculator", ID_VIEW_RESET, GRAYED
|
||||
|
|
|
@ -579,7 +579,8 @@ loop:
|
|||
|
||||
EvalOpcode(FASTPTR(Chipset.pc)); // execute opcode
|
||||
|
||||
GRAYOFF(CheckDisp(!Chipset.Shutdn)); // check for display update
|
||||
// check for display update in BW mode
|
||||
if (!bGrayscale) CheckDisp(!Chipset.Shutdn);
|
||||
AdjustSpeed(); // adjust emulation speed
|
||||
}
|
||||
bInterrupt = FALSE; // be sure to reenter opcode loop
|
||||
|
|
|
@ -216,7 +216,7 @@ BOOL PatchRom(LPCTSTR szFilename)
|
|||
DWORD dwFileSizeLow = 0;
|
||||
DWORD dwFileSizeHigh = 0;
|
||||
DWORD lBytesRead = 0;
|
||||
LPBYTE lpStop,lpBuf = NULL;
|
||||
PSZ lpStop,lpBuf = NULL;
|
||||
DWORD dwAddress = 0;
|
||||
UINT nPos = 0;
|
||||
|
||||
|
@ -269,7 +269,7 @@ BOOL PatchRom(LPCTSTR szFilename)
|
|||
} while (lpBuf[nPos]);
|
||||
continue;
|
||||
}
|
||||
dwAddress = strtoul(&lpBuf[nPos],(CHAR **)&lpStop,16);
|
||||
dwAddress = strtoul(&lpBuf[nPos], &lpStop, 16);
|
||||
nPos += lpStop-&lpBuf[nPos]+1;
|
||||
if (*lpStop != ':' || *lpStop == 0)
|
||||
continue;
|
||||
|
|
|
@ -931,7 +931,7 @@ VOID Nwrite(BYTE *a, DWORD d, UINT s)
|
|||
if ((p=WMap[u]) != NULL) memcpy(p+v, a, c);
|
||||
}
|
||||
}
|
||||
GRAYOFF(UpdateDisplay(d, c)); // update display
|
||||
if (!bGrayscale) UpdateDisplay(d, c); // update display
|
||||
a+=c;
|
||||
d=(d+c)&0xFFFFF;
|
||||
} while (s-=c);
|
||||
|
|
|
@ -353,7 +353,7 @@ static __inline void Nsrb(BYTE *a, UINT s)
|
|||
while (--s)
|
||||
{
|
||||
*a >>= 1;
|
||||
if (a[1]&1) *a |= 8;
|
||||
*a |= ((a[1] & 1) << 3);
|
||||
a++;
|
||||
}
|
||||
*a >>= 1;
|
||||
|
|
|
@ -28,123 +28,124 @@
|
|||
#define IDD_PROFILE 121
|
||||
#define IDD_MACROSET 122
|
||||
#define IDC_REALSPEED 1000
|
||||
#define IDC_AUTOSAVE 1001
|
||||
#define IDC_AUTOSAVEONEXIT 1002
|
||||
#define IDC_OBJECTLOADWARNING 1003
|
||||
#define IDC_ALWAYSDISPLOG 1004
|
||||
#define IDC_PORT1EN 1005
|
||||
#define IDC_PORT1WR 1006
|
||||
#define IDC_PORT2ISSHARED 1007
|
||||
#define IDC_PORT2 1008
|
||||
#define IDC_PORT2LOAD 1009
|
||||
#define IDC_WIRE 1010
|
||||
#define IDC_IR 1011
|
||||
#define IDC_EMUDIR 1012
|
||||
#define IDC_EMUDIRSEL 1013
|
||||
#define IDC_UPDATE 1014
|
||||
#define IDC_KMLSCRIPT 1015
|
||||
#define IDC_AUTHOR 1016
|
||||
#define IDC_TITLE 1017
|
||||
#define IDC_KMLLOG 1018
|
||||
#define IDC_VERSION 1019
|
||||
#define IDC_LICENSE 1020
|
||||
#define IDC_DISASM_WIN 1021
|
||||
#define IDC_DISASM_MAP 1022
|
||||
#define IDC_DISASM_ROM 1023
|
||||
#define IDC_DISASM_RAM 1024
|
||||
#define IDC_DISASM_PORT1 1025
|
||||
#define IDC_DISASM_PORT2 1026
|
||||
#define IDC_DISASM_MODULE 1027
|
||||
#define IDC_DISASM_HP 1028
|
||||
#define IDC_DISASM_CLASS 1029
|
||||
#define IDC_ADDRESS 1030
|
||||
#define IDC_DISASM_ADR 1031
|
||||
#define IDC_DISASM_NEXT 1032
|
||||
#define IDC_DISASM_COPY 1033
|
||||
#define IDC_DEBUG_CODE 1034
|
||||
#define IDC_STATIC_CODE 1035
|
||||
#define IDC_STATIC_REGISTERS 1036
|
||||
#define IDC_STATIC_MEMORY 1037
|
||||
#define IDC_STATIC_STACK 1038
|
||||
#define IDC_REG_A 1039
|
||||
#define IDC_REG_B 1040
|
||||
#define IDC_REG_C 1041
|
||||
#define IDC_REG_D 1042
|
||||
#define IDC_REG_R0 1043
|
||||
#define IDC_REG_R1 1044
|
||||
#define IDC_REG_R2 1045
|
||||
#define IDC_REG_R3 1046
|
||||
#define IDC_REG_R4 1047
|
||||
#define IDC_REG_D0 1048
|
||||
#define IDC_REG_D1 1049
|
||||
#define IDC_REG_P 1050
|
||||
#define IDC_REG_PC 1051
|
||||
#define IDC_REG_OUT 1052
|
||||
#define IDC_REG_IN 1053
|
||||
#define IDC_REG_ST 1054
|
||||
#define IDC_REG_CY 1055
|
||||
#define IDC_REG_MODE 1056
|
||||
#define IDC_REG_MP 1057
|
||||
#define IDC_REG_SR 1058
|
||||
#define IDC_REG_SB 1059
|
||||
#define IDC_REG_XM 1060
|
||||
#define IDC_MISC_INT 1061
|
||||
#define IDC_MISC_KEY 1062
|
||||
#define IDC_MISC_BS 1063
|
||||
#define IDC_NEWVALUE 1064
|
||||
#define IDC_ENTERADR 1065
|
||||
#define IDC_DEBUG_MEM 1066
|
||||
#define IDC_DEBUG_MEM_ADDR 1067
|
||||
#define IDC_DEBUG_MEM_COL0 1068
|
||||
#define IDC_DEBUG_MEM_COL1 1069
|
||||
#define IDC_DEBUG_MEM_COL2 1070
|
||||
#define IDC_DEBUG_MEM_COL3 1071
|
||||
#define IDC_DEBUG_MEM_COL4 1072
|
||||
#define IDC_DEBUG_MEM_COL5 1073
|
||||
#define IDC_DEBUG_MEM_COL6 1074
|
||||
#define IDC_DEBUG_MEM_COL7 1075
|
||||
#define IDC_DEBUG_MEM_TEXT 1076
|
||||
#define IDC_DEBUG_STACK 1077
|
||||
#define IDC_STATIC_BREAKPOINT 1078
|
||||
#define IDC_BREAKEDIT_ADD 1079
|
||||
#define IDC_BREAKEDIT_DELETE 1080
|
||||
#define IDC_BREAKEDIT_WND 1081
|
||||
#define IDC_STATIC_MMU 1082
|
||||
#define IDC_MMU_IO_A 1083
|
||||
#define IDC_MMU_NCE2_A 1084
|
||||
#define IDC_MMU_CE1_A 1085
|
||||
#define IDC_MMU_CE2_A 1086
|
||||
#define IDC_MMU_NCE3_A 1087
|
||||
#define IDC_MMU_IO_S 1088
|
||||
#define IDC_MMU_CE1_S 1089
|
||||
#define IDC_MMU_CE2_S 1090
|
||||
#define IDC_MMU_NCE2_S 1091
|
||||
#define IDC_MMU_NCE3_S 1092
|
||||
#define IDC_STATIC_MISC 1093
|
||||
#define IDC_MISC_BS_TXT 1094
|
||||
#define IDC_INSTR_TEXT 1095
|
||||
#define IDC_INSTR_CODE 1096
|
||||
#define IDC_INSTR_COPY 1097
|
||||
#define IDC_INSTR_CLEAR 1098
|
||||
#define IDC_PROFILE_LASTCYCLES 1099
|
||||
#define IDC_PROFILE_LASTTIME 1100
|
||||
#define IDC_BPCODE 1101
|
||||
#define IDC_BPRPL 1102
|
||||
#define IDC_BPACCESS 1103
|
||||
#define IDC_BPREAD 1104
|
||||
#define IDC_BPWRITE 1105
|
||||
#define IDC_FIND_DATA 1106
|
||||
#define IDC_FIND_ASCII 1107
|
||||
#define IDC_FIND_CASE 1108
|
||||
#define IDC_ADDR20_24 1109
|
||||
#define IDC_ADDR25_27 1110
|
||||
#define IDC_ADDR28_29 1111
|
||||
#define IDC_ADDR30_34 1112
|
||||
#define IDC_MACRO_SLOW 1113
|
||||
#define IDC_MACRO_FAST 1114
|
||||
#define IDC_MACRO_SLIDER 1115
|
||||
#define IDC_MACRO_REAL 1116
|
||||
#define IDC_MACRO_MANUAL 1117
|
||||
#define IDC_GRAYSCALE 1001
|
||||
#define IDC_AUTOSAVE 1002
|
||||
#define IDC_AUTOSAVEONEXIT 1003
|
||||
#define IDC_OBJECTLOADWARNING 1004
|
||||
#define IDC_ALWAYSDISPLOG 1005
|
||||
#define IDC_PORT1EN 1006
|
||||
#define IDC_PORT1WR 1007
|
||||
#define IDC_PORT2ISSHARED 1008
|
||||
#define IDC_PORT2 1009
|
||||
#define IDC_PORT2LOAD 1010
|
||||
#define IDC_WIRE 1011
|
||||
#define IDC_IR 1012
|
||||
#define IDC_EMUDIR 1013
|
||||
#define IDC_EMUDIRSEL 1014
|
||||
#define IDC_UPDATE 1015
|
||||
#define IDC_KMLSCRIPT 1016
|
||||
#define IDC_AUTHOR 1017
|
||||
#define IDC_TITLE 1018
|
||||
#define IDC_KMLLOG 1019
|
||||
#define IDC_VERSION 1020
|
||||
#define IDC_LICENSE 1021
|
||||
#define IDC_DISASM_WIN 1022
|
||||
#define IDC_DISASM_MAP 1023
|
||||
#define IDC_DISASM_ROM 1024
|
||||
#define IDC_DISASM_RAM 1025
|
||||
#define IDC_DISASM_PORT1 1026
|
||||
#define IDC_DISASM_PORT2 1027
|
||||
#define IDC_DISASM_MODULE 1028
|
||||
#define IDC_DISASM_HP 1029
|
||||
#define IDC_DISASM_CLASS 1030
|
||||
#define IDC_ADDRESS 1031
|
||||
#define IDC_DISASM_ADR 1032
|
||||
#define IDC_DISASM_NEXT 1033
|
||||
#define IDC_DISASM_COPY 1034
|
||||
#define IDC_DEBUG_CODE 1035
|
||||
#define IDC_STATIC_CODE 1036
|
||||
#define IDC_STATIC_REGISTERS 1037
|
||||
#define IDC_STATIC_MEMORY 1038
|
||||
#define IDC_STATIC_STACK 1039
|
||||
#define IDC_REG_A 1040
|
||||
#define IDC_REG_B 1041
|
||||
#define IDC_REG_C 1042
|
||||
#define IDC_REG_D 1043
|
||||
#define IDC_REG_R0 1044
|
||||
#define IDC_REG_R1 1045
|
||||
#define IDC_REG_R2 1046
|
||||
#define IDC_REG_R3 1047
|
||||
#define IDC_REG_R4 1048
|
||||
#define IDC_REG_D0 1049
|
||||
#define IDC_REG_D1 1050
|
||||
#define IDC_REG_P 1051
|
||||
#define IDC_REG_PC 1052
|
||||
#define IDC_REG_OUT 1053
|
||||
#define IDC_REG_IN 1054
|
||||
#define IDC_REG_ST 1055
|
||||
#define IDC_REG_CY 1056
|
||||
#define IDC_REG_MODE 1057
|
||||
#define IDC_REG_MP 1058
|
||||
#define IDC_REG_SR 1059
|
||||
#define IDC_REG_SB 1060
|
||||
#define IDC_REG_XM 1061
|
||||
#define IDC_MISC_INT 1062
|
||||
#define IDC_MISC_KEY 1063
|
||||
#define IDC_MISC_BS 1064
|
||||
#define IDC_NEWVALUE 1065
|
||||
#define IDC_ENTERADR 1066
|
||||
#define IDC_DEBUG_MEM 1067
|
||||
#define IDC_DEBUG_MEM_ADDR 1068
|
||||
#define IDC_DEBUG_MEM_COL0 1069
|
||||
#define IDC_DEBUG_MEM_COL1 1070
|
||||
#define IDC_DEBUG_MEM_COL2 1071
|
||||
#define IDC_DEBUG_MEM_COL3 1072
|
||||
#define IDC_DEBUG_MEM_COL4 1073
|
||||
#define IDC_DEBUG_MEM_COL5 1074
|
||||
#define IDC_DEBUG_MEM_COL6 1075
|
||||
#define IDC_DEBUG_MEM_COL7 1076
|
||||
#define IDC_DEBUG_MEM_TEXT 1077
|
||||
#define IDC_DEBUG_STACK 1078
|
||||
#define IDC_STATIC_BREAKPOINT 1079
|
||||
#define IDC_BREAKEDIT_ADD 1080
|
||||
#define IDC_BREAKEDIT_DELETE 1081
|
||||
#define IDC_BREAKEDIT_WND 1082
|
||||
#define IDC_STATIC_MMU 1083
|
||||
#define IDC_MMU_IO_A 1084
|
||||
#define IDC_MMU_NCE2_A 1085
|
||||
#define IDC_MMU_CE1_A 1086
|
||||
#define IDC_MMU_CE2_A 1087
|
||||
#define IDC_MMU_NCE3_A 1088
|
||||
#define IDC_MMU_IO_S 1089
|
||||
#define IDC_MMU_CE1_S 1090
|
||||
#define IDC_MMU_CE2_S 1091
|
||||
#define IDC_MMU_NCE2_S 1092
|
||||
#define IDC_MMU_NCE3_S 1093
|
||||
#define IDC_STATIC_MISC 1094
|
||||
#define IDC_MISC_BS_TXT 1095
|
||||
#define IDC_INSTR_TEXT 1096
|
||||
#define IDC_INSTR_CODE 1097
|
||||
#define IDC_INSTR_COPY 1098
|
||||
#define IDC_INSTR_CLEAR 1099
|
||||
#define IDC_PROFILE_LASTCYCLES 1100
|
||||
#define IDC_PROFILE_LASTTIME 1101
|
||||
#define IDC_BPCODE 1102
|
||||
#define IDC_BPRPL 1103
|
||||
#define IDC_BPACCESS 1104
|
||||
#define IDC_BPREAD 1105
|
||||
#define IDC_BPWRITE 1106
|
||||
#define IDC_FIND_DATA 1107
|
||||
#define IDC_FIND_ASCII 1108
|
||||
#define IDC_FIND_CASE 1109
|
||||
#define IDC_ADDR20_24 1110
|
||||
#define IDC_ADDR25_27 1111
|
||||
#define IDC_ADDR28_29 1112
|
||||
#define IDC_ADDR30_34 1113
|
||||
#define IDC_MACRO_SLOW 1114
|
||||
#define IDC_MACRO_FAST 1115
|
||||
#define IDC_MACRO_SLIDER 1116
|
||||
#define IDC_MACRO_REAL 1117
|
||||
#define IDC_MACRO_MANUAL 1118
|
||||
#define ID_FILE_NEW 40001
|
||||
#define ID_FILE_OPEN 40002
|
||||
#define ID_FILE_SAVE 40003
|
||||
|
@ -211,7 +212,7 @@
|
|||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 123
|
||||
#define _APS_NEXT_COMMAND_VALUE 40062
|
||||
#define _APS_NEXT_CONTROL_VALUE 1118
|
||||
#define _APS_NEXT_CONTROL_VALUE 1119
|
||||
#define _APS_NEXT_SYMED_VALUE 108
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
@ -152,6 +152,7 @@ VOID ReadSettings(VOID)
|
|||
disassembler_mode = ReadInt(_T("Disassembler"),_T("Mnemonics"),disassembler_mode);
|
||||
// Emulator
|
||||
bRealSpeed = ReadInt(_T("Emulator"),_T("RealSpeed"),bRealSpeed);
|
||||
bGrayscale = ReadInt(_T("Emulator"),_T("Grayscale"),bGrayscale);
|
||||
dwSXCycles = ReadInt(_T("Emulator"),_T("SXCycles"),dwSXCycles);
|
||||
dwGXCycles = ReadInt(_T("Emulator"),_T("GXCycles"),dwGXCycles);
|
||||
SetSpeed(bRealSpeed); // set speed
|
||||
|
@ -184,6 +185,7 @@ VOID WriteSettings(VOID)
|
|||
WriteInt(_T("Disassembler"),_T("Mnemonics"),disassembler_mode);
|
||||
// Emulator
|
||||
WriteInt(_T("Emulator"),_T("RealSpeed"),bRealSpeed);
|
||||
WriteInt(_T("Emulator"),_T("Grayscale"),bGrayscale);
|
||||
WriteInt(_T("Emulator"),_T("SXCycles"),dwSXCycles);
|
||||
WriteInt(_T("Emulator"),_T("GXCycles"),dwGXCycles);
|
||||
// Macro
|
||||
|
|
|
@ -232,46 +232,48 @@ BEGIN
|
|||
ES_READONLY
|
||||
END
|
||||
|
||||
IDD_SETTINGS DIALOG DISCARDABLE 0, 0, 167, 217
|
||||
IDD_SETTINGS DIALOG DISCARDABLE 0, 0, 167, 229
|
||||
STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Settings"
|
||||
FONT 8, "MS Sans Serif"
|
||||
BEGIN
|
||||
CONTROL "Authentic Calculator Speed",IDC_REALSPEED,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,13,100,10
|
||||
CONTROL "Enable Virtual LCD Delay",IDC_GRAYSCALE,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,25,100,10
|
||||
CONTROL "Automatically Save Files",IDC_AUTOSAVE,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,25,89,10
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,37,89,10
|
||||
CONTROL "Automatically Save Files On Exit",IDC_AUTOSAVEONEXIT,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,37,114,10
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,49,114,10
|
||||
CONTROL "Show Load Object Warning",IDC_OBJECTLOADWARNING,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,49,102,10
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,61,102,10
|
||||
CONTROL "Always Show KML Compilation Result",IDC_ALWAYSDISPLOG,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,61,133,10
|
||||
GROUPBOX "General",IDC_STATIC,7,4,153,71
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,73,133,10
|
||||
GROUPBOX "General",IDC_STATIC,7,4,153,83
|
||||
CONTROL "HP Mnemonics",IDC_DISASM_HP,"Button",BS_AUTORADIOBUTTON |
|
||||
WS_GROUP | WS_TABSTOP,13,89,65,11
|
||||
WS_GROUP | WS_TABSTOP,13,101,65,11
|
||||
CONTROL "Class Mnemonics",IDC_DISASM_CLASS,"Button",
|
||||
BS_AUTORADIOBUTTON,84,89,70,11
|
||||
GROUPBOX "Disassembler",IDC_STATIC,7,78,153,28
|
||||
BS_AUTORADIOBUTTON,84,101,70,11
|
||||
GROUPBOX "Disassembler",IDC_STATIC,7,90,153,28
|
||||
CONTROL "Port 1 is Plugged",IDC_PORT1EN,"Button",BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP,13,119,67,10
|
||||
WS_TABSTOP,13,131,67,10
|
||||
CONTROL "Port 1 is Writeable",IDC_PORT1WR,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,84,119,69,10
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,84,131,69,10
|
||||
CONTROL "Port 2 is Shared",IDC_PORT2ISSHARED,"Button",
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,131,65,10
|
||||
LTEXT "Port 2 File :",IDC_STATIC,13,147,37,8
|
||||
EDITTEXT IDC_PORT2,51,144,94,12,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "...",IDC_PORT2LOAD,145,144,10,12
|
||||
GROUPBOX "Memory Cards",IDC_STATIC,7,110,153,51
|
||||
LTEXT "Wire:",IDC_STATIC,13,176,17,8
|
||||
COMBOBOX IDC_WIRE,31,174,48,42,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
BS_AUTOCHECKBOX | WS_TABSTOP,13,143,65,10
|
||||
LTEXT "Port 2 File :",IDC_STATIC,13,159,37,8
|
||||
EDITTEXT IDC_PORT2,51,156,94,12,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "...",IDC_PORT2LOAD,145,156,10,12
|
||||
GROUPBOX "Memory Cards",IDC_STATIC,7,122,153,51
|
||||
LTEXT "Wire:",IDC_STATIC,13,188,17,8
|
||||
COMBOBOX IDC_WIRE,31,186,48,42,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
LTEXT "IR:",IDC_STATIC,89,176,9,8
|
||||
COMBOBOX IDC_IR,107,174,48,43,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
LTEXT "IR:",IDC_STATIC,89,188,9,8
|
||||
COMBOBOX IDC_IR,107,186,48,43,CBS_DROPDOWNLIST | WS_VSCROLL |
|
||||
WS_TABSTOP
|
||||
GROUPBOX "Serial Ports",IDC_STATIC,7,164,153,27
|
||||
DEFPUSHBUTTON "&Ok",IDOK,9,196,50,14
|
||||
PUSHBUTTON "&Cancel",IDCANCEL,107,196,50,14
|
||||
GROUPBOX "Serial Ports",IDC_STATIC,7,176,153,27
|
||||
DEFPUSHBUTTON "&Ok",IDOK,9,208,50,14
|
||||
PUSHBUTTON "&Cancel",IDCANCEL,107,208,50,14
|
||||
END
|
||||
|
||||
IDD_CHOOSEKML DIALOG DISCARDABLE 0, 0, 195, 66
|
||||
|
|
|
@ -24,6 +24,14 @@ mingw-runtime-3.3.tar.gz
|
|||
binutils-2.15.90-20040222-1.tar.gz
|
||||
gcc-core-3.4.1-20040711-1.tar.gz
|
||||
|
||||
or
|
||||
|
||||
MinGW-3.1.0-1.exe
|
||||
w32api-3.3.tar.gz
|
||||
mingw-runtime-3.8.tar.gz
|
||||
binutils-2.15.94-20050118-1.tar.gz
|
||||
gcc-core-3.4.4-20050522-1.tar.gz
|
||||
|
||||
Older versions of the MinGW package might not work, because there are several
|
||||
bug fixes, especially in the header files, made in the last time.
|
||||
|
||||
|
@ -35,4 +43,4 @@ Many thanks to Pedro A. Arranda Guti
|
|||
compatible.
|
||||
|
||||
|
||||
06/13/05 (c) by Christoph Gießelink
|
||||
08/22/05 (c) by Christoph Gießelink
|
||||
|
|
BIN
uninst.exe
BIN
uninst.exe
Binary file not shown.
Loading…
Reference in a new issue