Emu28 v1.16 DEBUGGER.C - changed function OnLButtonUp(), NewValue(), EnterAddr() and EnterBreakpoint(), replaced WM_GETTEXT message call with function GetWindowText() DISASM.C - bugfix in function disassemble(), the NOP5 opcode returned wrong address for next instruction (GOTO opcode skipping one nibble) EMU28.C - bugfix in function SaveChanges(), function GetSaveAsFilename() returns a boolean and not a button id and removed call of last document saving - changed function OnPaint(), removed mixture of BitBlt() calls with argument hPaintDC and hWindowDC inside critical section - bugfix in function OnFileSaveAs(), function GetSaveAsFilename() returns a boolean and not a button id and removed call of last document saving - changed function OnFileClose(), removed call of DisableDebugger() because it's now done in function ResetDocument() - changed function OnTopics(), minor optimization by replacing ShellExecuteEx() with ShellExecute() - changed function WinMain(), added last document saving at end of program EMU28.H - extern declaration of global variable EMU28.RC - changed version and copyright FILES.C - changed function ResetDocument(), added call of DisableDebugger() - changed function GetLoadObjectFilename() and GetSaveObjectFilename(), changed default file filter from *.* to *.HP MOPS.C - changed function GetLPD(), added possibility to disable low battery detection SETTINGS.C - changed function ReadSettings() and WriteSettings(), added item "Disable" in section [LowBat] in the INI-File Emu28 v1.15 DDESERV.C - changed function DdeCallback(), changed to new BINARYHEADER28C defintion DISASM.C - disabled automatic inline code - fixed source file formatting error - changed function append_field(), defined as inline code - changed function append_r_addr(), code optimization EMU28.C - bugfix in function OnFileNew(), function SaveBackup() was called when emulator engine was running -> this may caused inconsistent backup data - changed function OnFileOpen(), added MruAdd() call - added new function OnFileMruOpen(), command handler for MRU menu selections - changed function OnFileSaveAs(), minor optimizations and added MruAdd() call - changed function OnObjectSave(), minor optimization - changed function MainWndProc(), added MRU message handler - changed function WinMain(), added StartupBackup handling and added MRU initialization, startup file adding and cleanup EMU28.DSP - added mru.c sources EMU28.H - renamed define BINARYHEADER28 into BINARYHEADER28C and the definition to "HPHP28-C" to separate it from Emu42 - extern declaration of global variable and functions - changed function prototypes EMU28.RC - cosmetic changes in dialog IDD_CHOOSEKML to improve WinXP style - added Menuitem Files "Recent Files..." - changed version FILES.C - changed function GetCutPathName(), better support for UNC names - changed function SaveBackup(), added assertion for checking emulator engine state - changed function WriteStack(), now checking the complete binary header "HPHP28-C" to distinguish them from Emu42 object files, adjusted to new prototype of function RPL28_ObjectSize() and added new error state for bad objects - changed function LoadObject(), added error message for bad objects - changed function SaveObject(), changed to new BINARYHEADER28C defintion MRU.C - new module for MRU routines OPCODES.C - bugfix in function o158x(), o159x(), o15Cx(), o15Dx(), o15Ax(), o15Bx(), o15Ex() and o15Fx(), used wrong cpu cycles - changed function o83n(), o88n() and o89n(), speed optimization OPS.H - changed function Tbit0(), Tbit1(), Ta(), Tb(), Tae() and Tbe(), speed optimization RESOURCE.H - added definition for MRU handling RPL.C - bugfix in RPL_ObjectSize(), changed function prototype for adding buffer size parameter preventing reading outside buffer area when decoding bad objects SETTINGS.C - added function DelReg() for deleting a registry item - changed function ReadSettings() and WriteSettings(), added item "StartupBackup" in section [Files] - added functions ReadSettingsString(), WriteSettingsString(), ReadSettingsInt(), WriteSettingsInt() and DelSettingsKey(), universal settings interface used for MRU data handling TIMER.C - bugfix in function TimeProc(), under certain conditions this function is called with a zero uEventId and this may clash with a reset timer event identifier Emu28 v1.14 DDESERV.C - bugfix in function DdeCallback(), decoding of the item name wasn't UNICODE compatible DEBUGGER.C - added new function OnSetCursor(), message handler for "Activation Follows Mouse" implementation - changed function Debugger(), added "Always On Top" and "Activation Follows Mouse" handling - bugfix in function OnToolDebug(), argument for owner window handle was wrong, but over the years I has liked this debugger dialog behavior so I put in the correct argument for this behavior DISPLAY.C - changed function ResizeWindow(), added "Always on top" feature EMU28.C - moved CF_HPOBJ definition to EMU28.H - removed global variable bClassicCursor - added function ForceForegroundWindow() forcing window to foreground - changed function SettingsProc(), added "Always On Top" and "Activation Follows Mouse" handling - changed function OnMouseMove(), added "Activation follows mouse" feature - added function OnNcMouseMove() for "Activation follows mouse" feature in non client area - changed function MainWndProc(), added WM_NCMOUSEMOVE message handler - bugfix in function WinMain(), moved additional DDE stuff just behind DDE server initialization, adjusted length for cut filenames preventing negative values and call ShowWindow() before asking for a new document preventing a KML script dialog without a parent window EMU28.H - added CF_HPOBJ definition from EMU28.C - removed declaration of bClassicCursor - extern declaration of global variables and functions EMU28.RC - added item "Always On Top" and "Activation Follows Mouse" in settings dialog - changed version and copyright FILES.C - added global variable saving the patched ROM checksum - changed function SetWindowPathTitle(), adjusted length for cut filename - changed function CrcRom(), change function prototype, added unpacked data check and made function public - bugfix in function CrcRom(), hadn't detected address content changes at addresses ending with a 0x2 and 0x3 because only lower 16 bit of checksum was used -> modified function cause a warmstart because of new checksum - changed function UnmapRom(), added reset of ROM checksum variable - new function IsDataPacked() for unpacked data check - changed function OpenDocument(), use ROM checksum made in InitKML() and added checks for packed memory data - changed function SaveDocument(), adjusted to new prototype of CrcRom() KML.C - bugfix in function KillKML(), class member variable wasn't reset - bugfix in function TransparentCircle(), there was no radius value check for preventing division by 0 and color low adjust value wasn't reached because of wrong color offset divisor -> adjusted LOWADJ definition to get similar output to buggy earlier version - changed function MouseMovesTo(), removed bClassicCursor switch for using arrow cursor over button - changed function InitKML(), added full check for unpacked ROM image and build checksum of patched ROM MOPS.C - bugfix in function WriteIO(), display sync error flag reset in the DSPCTL (0x303) register hasn't worked on CPU reset condition OPCODES.C - bugfix in function o807(), Chipset.in register must be refreshed before checking for a pressed key PCH.H - added include stddef.h - restricted DWORD_PTR type definition for MSVC6.0 and earlier RESOURCE.H - added some definitions SETTINGS.C - changed function ReadSettings() and WriteSettings(), added item "ActFollowsMouse" and "AlwaysOnTop" in section [Emulator], removed item "ClassicCursor" from [KML] section in the INI-File TIMER.C - changed function CalcT2(), in the case of a pending timer2 interrupt return always the timer2 value 0xFFFFFFFF Emu28 v1.13 DDESERV.C - removed warnings when compiling under VS2005 - changed function DdeCallback(), case XTYP_POKE and XTYP_REQUEST now decode the item name for the stack level DEBUGGER.C - removed warnings when compiling under VS2005 EMU28.C - removed warnings when compiling under VS2005 EMU28.H - changed function prototypes EMU28.RC - changed version - replaced CREATEPROCESS_MANIFEST_RESOURCE_ID definition in manifest declaration by 1 EXTERNAL.C - changed function BeepWave(), removed VS2005 warning - changed function BeepWin9x(), disabled implementation for x64 architecture FILES.C - changed function PatchRom(), removed VS2005 warning - changed function WriteStack(), added stack level argument - changed function LoadObject(), adjusted call of WriteStack() to new function prototype IO.H - renamed LBICTL to LPD KEYBOARD.C - bugfix in function ScanKeyboard(), if keyboard reading wasn't active a released ON key wasn't cleared in the "in" register KEYMACRO.C - removed warnings when compiling under VS2005 - changed function OnToolMacroNew(), minor optimization writing macro file header KML.C - removed warnings when compiling under VS2005 - changed function DisplayChooseKml(), changed return type of dialog box - changed function ParseLine(), change typecast of szLexString from DWORD to DWORD_PTR KML.H - changed variable type of nParam[] element of KmlLine structure because element is also used as pointer MOPS.C - renamed LBICTL to LPD - changed function Npeek() and Nread(), adjusted to new prototypes of ReadIO() and ReadSlaveIO() - new function GetLPD() for reading the LPD state - changed prototypes of function ReadIO() and ReadSlaveIO(), added update argument - bugfix in function ReadIO(), WriteIO(), ReadSlaveIO() and WriteSlaveIO(), added implementation of the LPD (0x300) register - changed function WriteIO(), added IAM bit implementation in the DSPTEST (0x302) register for timer emulation - bugfix in function WriteSlaveIO(), a DON bit change in the DSPCTL (0x303) register hadn't affect on the annunciators PCH.H - added _CRT_SECURE_NO_DEPRECATE definition - added DWORD_PTR type definition RESOURCE.H - removed CREATEPROCESS_MANIFEST_RESOURCE_ID and RT_MANIFEST definition RPL.C - added definition of EDITLINE - added function RPL_Depth() returning stack depth - changed function RPL_Pick(), added check of stack depth - changed function RPL_Push(), new implementation with stack level argument STACK.C - adjusted calls of RPL_Push() to new function prototype - changed function RPL_SetBcd(), removed compiler warning - bugfix in function OnStackPaste(), case "any other format" must be treated as string and not as binary object TIMER.C - removed warnings when compiling under VS2005 - bugfix in function StartTimers(), timers are stopped if the IAM bit in the DSPTEST (0x302) register of the master chip with the quarz crystal isn't set - bugfix in function StopTimers(), on stopping master timer slave timers wasn't stopped automatically Emu28 v1.12 DISASM.C - bugfix in function disasm_8(), the ?HS=0 n opcode showed always as ?=0 opcode DISPLAY.C - bugfix in function StopDisplay(), in most times display wasn't cleared in calculator off state (bug introduced in v1.10) EMU28.C - changed function OnFileClose(), removed call of KillKML() because will be done in ResetDocument() - bugfix in function OnViewScript(), removed error message because it's wrong when script is ok, but log report was leaved with Cancel button, also if clause of error message box was never reached because error message box had no Cancel button - changed function OnViewScript(), added call of SetWindowPathTitle() to adjust length of window title - changed function WinMain(), simplified document loading at startup and replaced full filename title with length cut filename EMU28.H - extern declaration of global functions EMU28.RC - changed version FILES.C - moved function WriteStack() inside file - added new function GetCutPathName(), creating a length cut filename - added new function SetWindowPathTitle(), replacement for calling SetWindowTitle() for getting length cut filenames as title - changed function MapRom(), removed some useless variable settings and optimized ROM unpacking - changed function OpenDocument(), SaveDocumentAs() and RestoreBackup(), replaced call of function SetWindowTitle() with SetWindowPathTitle() - changed function GetOpenFilename(), GetSaveAsFilename(), GetLoadObjectFilename() and GetSaveObjectFilename(), moved storage place of local file buffer from heap to stack KML.C - bugfix in function CreateKmlList(), fixed possible call of API function lstrcmpi() with NULL pointer at Hardware detection and select only KML files with a valid Model statement - bugfix in function Lex(), EOF without LF at end of non empty line wasn't detected as EOL Emu28 v1.11 DISPLAY.C - changed function UpdateContrast(), added background color to display bitmap - changed function WritePixelQuad(), draw only one pixel instead of four pixels now; added 3rd background color - bugfix in function UpdateMainDisplay(), added emulation of display row bitmap (0x1E0-0x2DF) - bugfix in function UpdateAnnunciators(), adjusted contrast table entry to lesser contrast EMU28.H - added definition with valid calculator models - added macro with model validation code EMU28.RC - changed version FETCH.C - changed function EvalOpcode(), included assertion for detecting access to packed memory data FILES.C - bugfix in function OpenDocument(), after reading CPU state, ext. RAM pointer must immediately be deleted because on error condition function ResetDocument() tries to free this memory; added check for valid calculator model KML.C - bugfix in function InitButton(), nested scancode block commands hadn't handled correctly - changed function InitKML(), changed checking for valid Model argument and changed the corresponding error message Emu28 v1.10 DDESERV.C - bugfix in function DdeCallback(), used wrong return in XTYP_POKE case for calculator models without stack DEBUGGER.C - changed function UpdateMemoryWnd(), added follow dispatcher - new fuction OnMemFollow() to handle follow menu entries - changed function OnDblClick() and OnKeyUpDown(), replaced all function calls of UpdateMemoryWnd() with ViewMemWnd() because of the modified behavior of UpdateMemoryWnd() - changed function Debugger(), added "Follow" menu entry initialization in WM_INITDIALOG and menu commands handler in WM_COMMAND section DISPLAY.C - changed function WritePixelQuad(), added Zoom factor 3 handling - changed function StopDisplay(), removed display clear EMU28.C - changed function SaveChanges(), default button for confirming the "Do you want to save changes ?" message depends now on the "SaveDefaultConfirm" INI-File setting (1=yes / 0=no button) EMU28.H - expanded MMUMAP enumeration - extern declaration of global variable EMU28.RC - changed IDD_KMLLOG, replaced "Always" text with "Show Script compilation result next time" - added "Follow" menu entries in debugger "Memory" context menu - changed version FILES.C - bugfix in function NewDocument(), the backup now behave like with function OpenDocument() -> the backup now contain the emulator state before the new session and not the new session itself - changed function ResetDocument(), NewDocument(), OpenDocument(), SaveDocument(), SaveBackup(), RestoreBackup() and ResetBackup(), added external RAM handling - bugfix in function RestoreBackup(), window title wasn't updated - bugfix in function CreateBIPalette(), for 16 and 32 bitcount bitmaps no logical palette was created - bugfix in function LoadBitmapFile(), function blocked loading bitmap when ROM file was missing KML.C - changed table szLexDelim[], removed first element - added new table eIsGlobalBlock[] with valid block tokens - added new function IsGlobalBlock(), checking if token inside eIsGlobalBlock[] table - changed function Lex(), added assertion for mode checking - changed function ParseLines(), added syntax checking for command tokens and removed "Open block." message - changed function ParseBlocks(), added syntax checking for block tokens - changed function InitLcd(), TOK_ZOOM argument wasn't checked, on illegal zoom values use 1 as default now - bugfix in function LoadKMLGlobal(), keyword "Global" had only been detected as first command in KML script KML.H - adjusted definitions of LEX_BLOCK, LEX_COMMAND and LEX_PARAM to modified table szLexDelim[] MOPS.C - added new function ModuleId() for calculating the RAM Id from the module size - bugfix in function MapNCE(), size calculation for mirroring was wrong - added new function MapEXT() for mapping external RAM - changed function MapROM(), added calls of MapEXT() - changed function Config(), Uncnfg(), Reset(), C_Eq_Id() and MapData(), added external RAM handling - bugfix in function Uncnfg(), changed unconfig order between master and slave controller, master is unconfigurated first - bugfix in function MapData(), priority order was wrong, adjusted to the one used in function Map() RESOURCE.H - added several definitions RPL.C - added new function RPL_GarbageCol() for doing a garbage collection - changed function RPL_CreateTemp(), added garbage collection on low memory condition SETTINGS.C - changed function ReadSettings() and WriteSettings(), added item "SaveDefaultConfirm" in section [Files] in the INI-File TYPES.H - added new variables for external RAM handling Emu28 v1.09 DISPLAY.C - changed function UpdateMainDisplay(), removed DEBUG_DISPLAY implementation - bugfix in function UpdateContrast(), used background Color 0 in calculator off state even if Color 32 was defined, added critical section for DIB section update because of asynchronous display update now and added update of annunciators - bugfix in function CreateLcdBitmap(), DIB section shouldn't created from the memory DC - deleted function WriteToMainDisplay(), not necessary for the new display implementation any more - added functions LcdProc(), StartDisplay() and StopDisplay() for new the implementation of the display engine EMU28.C - changed function SettingsProc(), added sound handling - moved function OnStackCopy() and OnStackPaste() to STACK.C - changed function WinMain(), added accelerator key access for menus EMU28.DSP - added stack.c sources EMU48.H - removed definitions of DISP_ANNUN and DISP_MAIN - removed reference of variable disp - removed function prototype of WriteToMainDisplay() - extern declaration of global functions EMU28.RC - added "Sound" group in Settings dialog - changed menu text "Copy String" to "Copy Stack" and menu text "Paste String" to "Paste Stack" - added accelerator resource - changed version and copyright ENGINE.C - bugfix in function WorkerThread(), when changing into SM_RUN state display contrast must also be restored - changed function WorkerThread(), when changing into SM_RUN state display engine must be started and when leaving SM_RUN state display engine must be stopped now FILES.C - added function RomType() returning the current ROM version IO.H - added MROW_BEGIN and MROW_END definitions KML.C - bugfix in function SkipWhite(), skipping remark text hadn't stop at string end - bugfix in function ParseBlocks(), stopped script parsing without error at unknown block token - bugfix in function SkipLines(), TOK_END was handled wrong -> this caused a RunKey end if condition of TOK_IFPRESSED or TOK_IFFLAG was false and there was no TOK_ELSE inside this level - bugfix in function KillKML(), ROM type wasn't reset to the preset value at the end MOPS.C - changed MMU page size bits from code constants to a definition - deleted function UpdateDisplay(), not necessary for the new display implementation any more - changed function Nwrite(), removed calling of functions UpdateDisplay() and UpdateAnnunciators() - changed function WriteIO(), control of the DSPCTL (0x303) register calls now the functions StartDisplay() and StopDisplay() to start/stop the display engine and removed DISP_MAIN references - changed function WriteIO(), replaced DISP_ANNUN references by an annuncator implementation in function WriteSlaveIO() - changed function WriteSlaveIO(), added annunciator implementation OPS.H - added MMU page and address size definitions RPL.C - added function RPL_GetSystemFlag() returning the state of the given flag RESOURCE.H - added several definitions STACK.C - new modul with the message handler functions OnStackCopy() and OnStackPaste() prior located in EMU28.C - changed function OnStackCopy() and OnStackPaste(), they can now also copy real numbers from and to the clipboard TIMER.C - changed function CheckT(), minor optimization in checking if INT or WAKE bit is set Emu28 v1.08 DISPLAY.C - bugfix in function CreateMainBitmap(), in error case hMainDC variable wasn't cleared EMU28.H - extern declaration of global variables EMU28.RC - changed menu text order from "Copy Stack/Copy Screen/Paste Stack" to "Copy Screen/Copy Stack/Paste Stack" - changed version EXTERNAL.C - added function BeepWave(), beeper function using sound card - added function BeepWin9x(), PC speaker function for working on Win9x - changed function External(), removed range checking of duration; call function BeepWin9x() on Win9x instead of Beep() or in the case of wave sound the function BeepWave() FILES.C - changed function PatchRom(), changed ASCII string handling from BYTE to CHAR data type KML.C - changed function AddToLog(), changed argument qualifier and minor code optimization - bugfix in function InitKML(), changed log message for no "Model" definition found and a missing "Bitmap" definition wasn't detected OPS.H - changed function Nsrb(), speed optimization PCH.H - added include conio.h SETTINGS.C - changed function ReadSettings() and WriteSettings(), added item "WaveBeep" and "WaveVolume" in section [Emulator] in the INI-File Emu28 v1.07 DDESERV.C - changed function DdeCallback(), removed delays after ON key state change DEBUGGER.C - bugfix in function Debugger(), used function to set icon which hasn't worked properly under WinXP EMU28.C - changed function OnStackPaste(), minor code optimization - changed function OnDropFiles(), OnStackPaste() and OnObjectLoad(), removed delays after ON key state change - changed function declaration of function OnTopics() - bugfix in function WinMain(), szCurrentKml wasn't initialized EMU28.RC - changed version FILES.C - changed function WriteStack(), minor optimization when saving as string - bugfix in function OpenDocument(), check for empty KML file name was wrong, so the error handler of the following InitKML() was always called in this case - bugfix in function OpenDocument(), reload KML button state from last document close - changed function LoadObject(), file access is now shared - changed function DibNumColors() and CreateBIPalette(), changed argument qualifier KML.C - changed variable qualifier of eIsBlock[] table and removed TOK_NONE item from it - bugfix, global variables pKml and pKmlList hadn't be initialized - removed usage of global variables bKmlLogOkEnabled and nKmlFiles - changed function PrintfToLog(), use a local buffer instead of the heap for the output buffer of the wvsprintf() function, this helps to reduce fragmentation of the heap - changed function KMLLogProc(), minor code optimization and removed use of global variable bKmlLogOkEnabled and windows redraw in the WM_INITDIALOG case - changed function DisplayKMLLog(), removed use of global variable bKmlLogOkEnabled and transfer state of bOkEnabled over the lParam argument to the dialog box procedure - bugfix in function CreateKmlList(), fixed a memory leak in the case of no title - changed function ChooseKMLProc(), minor code optimization - changed function IsBlock(), minor code optimization - bugfix in function ParseString(), fixed memory leak in error case and optimized implementation - changed function IncludeLines(), IncludeBlocks(), LoadKMLGlobal() and InitKML(), file access is now shared - added function ReloadButtons(), update internal button state from chip keyboard matrix content KML.H - added ReloadButtons() function prototype OPS.H - bugfix in function Nsub() and Nrsub(), in some situations wrong results in dec mode with illegal decimal number entry as 2nd operator TIMER.C - bugfix in function RescheduleT2(), better accuracy on conversation of timer2 ticks into multimedia timer ms - changed function StartTimers(), added calculation of maximum timer2 ticks that can be handled by one timer event - changed function StartTimers() and StopTimers(), changed multimedia timer to best possible timer resolution instead of risking to fail with 1 ms resolution preset Emu28 v1.06 CHECKBOX.BMP - fixed one pixel with wrong color EMU28.C - changed function UpdateWindowStatus(), added macro specifiy menu control - changed function CopyItemsToClipboard(), simplified implementation in UNICODE mode by saving the data in the CF_UNICODETEXT format - changed function OnLButtonDown(), OnLButtonUp(), OnMouseMove(), OnKeyDown() and OnKeyUp(), disable function handling when in macro play mode - changed function MainWndProc(), added some macro handler functions EMU28.DSP - added keymacro.c sources EMU28.H - extern declaration of global variables and functions EMU28.RC - changed "Always" checkbox in "KML Script Compilation Result" dialog from a pushlike to normal one for better readability under Windows XP style - added "Macro Settings" dialog - added Menuitem Tools "Macro..." - changed version and copyright ENGINE.C - bugfix in function AdjustSpeed(), on large operations the workaround condition for Win2k was detected and the following synchronizing failed because the CPU didn't got the free running cycles for the waited time - changed function WorkerThread(), close running keyboard macros when switching into invalid state KEYBOARD.C - changed function KeyboardEvent(), added call to key recording function KeyMacroRecord() - bugfix in function KeyboardEvent(), prevent buffer overflow with too big out codes on Chipset.Keyboard_Row array KEYMACRO.C - new modul supporting keyboard macro functions KML.C - added function PlayKey(), handle button with OutIn code KML.H - added PlayKey() function prototype MOPS.C - bugfix in function WriteIO() and WriteSlaveIO(), writing to timer failed if first writing address was before the timer address area PCH.H - added VERIFY macro RESOURCE.H - added several definitions SETTINGS.C - changed function ReadSettings() and WriteSettings(), added section [Macro] in INI-File Emu28 v1.05 EMU28.C - added function OnTopics() to call help file - changed function MainWndProc(), added ID_HELP_TOPICS to command message handler EMU28.RC - changed version and copyright - added Menuitem Help "Help Topics" in main menu FILES.C - added functions UpChk(), Checksum(), CorrectChecksum() and RebuildRomChecksum() for recalculation of ROM checksums - changed function PatchRom(), added recalculation of ROM checksums at end of ROM patching OPS.H - changed function Nadd(), optimized "illegal number in dec mode" detection - changed function Ninc(), Ndec(), Nsub() and Nrsub(), removed register wrap handling - changed function Nneg(), optimized non zero value handling - bugfix in function Nsrc(), the Sticky Bit (SB) wasn't handled in all rSRC opcodes RESOURCE.H - added definition Emu28 v1.04 CURSOR.C - new modul to create a hand cursor DDESERV.C - replaced all LocalAlloc() with HeapAlloc() memory requests DEBUGGER.C - replaced all LocalAlloc() with HeapAlloc() memory requests DISASM.C - changed several variable qualifiers from TCHAR * to LPCTSTR and replaced rest of TCHAR * by LPTSTR - changed variable qualifier of hp_reg_1_af and hp_reg_2_af - changed function append_tab(), speed optimization - changed function append_field(), removed use of temporary variable DISPLAY.C - replaced variable use of hOldLcdBitmap with hLcdBitmap - replaced variable use of hOldMainBitmap with hMainBitmap EMU28.DSP - added cursor.c sources EMU28.C - changed variable qualifier of szLicence - added global variables - replaced all LocalAlloc() with HeapAlloc() memory requests - bugfix in function CopyItemsToClipboard(), don't worked in UNICODE mode because character translation was missing - changed function OnCreate() and OnDestroy(), added load and destroy of two new cursor resources - changed function WinMain(), removed class cursor from main window EMU28.H - extern declaration of global variables and functions - moved T2CYCLES definition from OPCODES.H - changed function DuplicateString(), replaced LocalAlloc() with HeapAlloc() memory request EMU28.RC - changed version and copyright - changed resource language description to English FILES.C - replaced all LocalAlloc() with HeapAlloc() memory requests KML.C - replaced all LocalAlloc() with HeapAlloc() memory requests - bugfix in function PrintfToLog(), temporary buffer was half of size in UNICODE mode - bugfix in function BrowseFolder(), the shell's allocator release was missing in one case - changed function ChooseKMLProc(), optimized IDC_EMUDIRSEL command case - bugfix in function ParseString(), strings greater 127 characters caused a buffer overflow in UNICODE mode - bugfix in function KillKML(), set variables bDebug, nKMLFlags and nLcdZoom to there startup values - changed function MouseMovesTo(), added code part to select cursor OPCODES.C - bugfix in function o3X() and o8082X(), used wrong cpu cycles OPCODES.H - moved T2CYCLES definition to EMU28.H PCH.H - added IDC_HAND definition for non Win2k OS project RPL.C - replaced all LocalAlloc() with HeapAlloc() memory requests SETTINGS.C - changed function ReadSettings() and WriteSettings(), added item "ClassicCursor" in section [KML] in the INI-File TIMER.C - bugfix in function CalcT(), estimated timer ticks were sometimes to large because there was a misbehavior between real time clock and counted CPU cycles when in free running mode - changed function RescheduleT(), optimized initialization of synchronization variables used in CalcT() - changed function ReadT(), minor optimization calculating the timer value Emu28 v1.03 DEBUGGER.C - bugfix in function NewValue(), EnterAddr(), EnterBreakpoint(), EditBreakpoint() and InfoIntr(), uncompleted wParam argument decoding in WM_COMMAND case - replaced function OnToggleCheck() with ToggleBreakpointItem(), a more general function to toggle a breakpoint check box - changed function EditBreakpoint(), adjusted LBN_DBLCLK case to use the new ToggleBreakpointItem() function and modified behavior of VK_SPACE to toogle all selected items EMU28.C - added Critical Section initialization for CPU slow down - changed function SetWindowTitle(), changed argument qualifier - bugfix in function SettingsProc(), Disasm() and About(), uncompleted wParam argument decoding in WM_COMMAND case - bugfix in function MainWndProc(), wrong wParam argument decoding in WM_SYSCOMMAND case - bugfix in function WinMain(), fixed possible buffer overflows in state file loading message EMU28.H - extern declaration of global function EMU28.RC - changed version - changed IDC_DEBUG_MEM from static to listbox control, looks better in connection with WinXP style ENGINE.C - bugfix in function AdjustSpeed(), AdjKeySpeed() and SetSpeed(), reference setting wasn't synchronized FILES.C - changed buffer size information of files and pathes from 260 to MAX_PATH definition - removed global variable hRomFile, using local now - removed variable "hRomMap", remainder of older implementation - changed function MapRom(), minor optimization in ROM image loading - bugfix in function GetOpenFilename(), GetSaveAsFilename(), GetLoadObjectFilename() and GetSaveObjectFilename(), adjusted size of temporary buffer to size of destination buffer and fixed memory allocation bug in UNICODE mode - changed function LoadBitmapFile(), it's better to validate the pbyRom instead of the hRomFile variable to check if the ROM is loaded to avoid possible side effects (ROM loaded by resource) and removed uncalled code part KML.C - bugfix in function KMLLogProc(), uncompleted wParam argument decoding in WM_COMMAND case and update of the bAlwaysDisplayLog variable only in the IDOK and IDCANCEL case - bugfix in function ChooseKMLProc(), uncompleted wParam argument decoding in WM_COMMAND case and added UNREFERENCED_PARAMETER statement - bugfix in function ParseLines() and ParseBlocks(), fixed problem of uninitialized variable which may occur on parsing corrupt KML files Emu28 v1.02 DEBUGGER.C - added function UpdateDbgCycleCounter() to handle a 64 bit CPU cycles counter in debug mode - added implementation of "Profiler" dialog box DEBUGGER.H - extern declaration of global function EMU28.C - changed function WinMain(), added non modal "Profiler" dialog box in main message handler EMU28.H - extern declaration of global variable - changed prototype of function AdjKeySpeed() EMU28.RC - changed version and copyright - bugfixes in dialogs, some WS_EX_ styles (especially window borders) don't worked on some operating systems - added Menuitem Info "Profiler..." in debugger menu - added "Profiler" dialog ENGINE.C - bugfix in function Debugger(), fixed problem at quitting debugger when last executed opcode was SHUTDN - changed function Debugger(), added call for 64 bit cpu cycle counter adjust - changed function AdjKeySpeed(), changed back to v1.00 version, slow down on every key pressed KEYBOARD.C - changed function KeyboardEvent(), changed call of AdjKeySpeed() KML.C - changed function DrawAnnunciator(), changed making of gray scale mask RESOURCE.H - added definitions TIMER.C - bugfix in accurate timer handling, variable wasn't initialized so it might haven't worked Emu28 v1.01 DEBUGGER.C - bugfix in function Debugger(), removed illegal call of DestroyMenu() in WM_DESTROY message handler DISPLAY.C - changed function UpdateAnnunciators(), added gray scale emulation of annunciators EMU28.C - changed function OnCreate(), don't enable DragAcceptFiles() here - changed function OnDropFiles(), checking calculator model to disable stack writing isn't necessary any more EMU28.H - changed prototype of function AdjKeySpeed() EMU28.RC - changed version and copyright ENGINE.C - changed function AdjKeySpeed(), a detected pressed key is now a boolean argument from caller; this allows to detect a pressed, but not by KBD_OR selected key -> no CPU slow down in this case FILES.C - removed unused variables - changed functions CrcRom(), MapRom() and UnmapRom(), can handle packed ROM files now KEYBOARD.C - bugfix in function KeyboardEvent(), CPU slow down by calling the function AdjKeySpeed() on key pressed must be activated here KML.C - changed function DrawAnnunciator(), added gray scale emulation of annunciators - changed function InitKML(), enable object "Drag and Drop" calculator model dependend here now KML.H - changed prototype of function DrawAnnunciator() MOPS.C - bugfix in function MapData(), wrong implementation of ROM area detection - changed function WriteIO(), added annunciators update in CONTRAST register (0x301, 0x302) emulation OPCODES.C - changed function o802() and o803(), removed AdjKeySpeed() call (c) by Christoph Gießelink, c dot giesselink at gmx dot de