emu48-mirror/Sources/Emu48/CHANGES.TXT
Gwenhael Le Moine 8fe52143cf
2008-05-11: Updated to version 1.47
Signed-off-by: Gwenhael Le Moine <gwenhael.le.moine@gmail.com>
2024-03-19 23:35:29 +01:00

3536 lines
119 KiB
Text
Raw Blame History

Service Pack 47 for Emu48 Version 1.0
DDESERV.C
- bugfix in function DdeCallback(), readded delay after ON key state
change, bug introduced in SP37
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)
EMU48.C
- changed function SettingsProc(), adjusted to new prototype of
function GetLoadObjectFilename(), use (*.BIN) as default file
filter now
- changed function OnPaint(), removed mixture of BitBlt() calls with
argument hPaintDC and hWindowDC inside critical section
- changed function OnFileClose(), removed call of DisableDebugger()
because it's now done in function ResetDocument()
- bugfix in function OnDropFiles() and OnObjectLoad(), readded delay
after ON key state change, bug introduced in SP37
- changed function OnObjectLoad() and OnObjectSave(), adjusted to
new prototype of function GetLoadObjectFilename() and
GetSaveObjectFilename(), use (*.HP;*.LIB) as default file filter
now
EMU48.H
- added file filter definitions
- extern declaration of global variable and function
- changed function prototypes
EMU48.RC
- changed name order in copyright messages
- changed version and copyright
EXTERNAL.C
- removed inline function Return(), replaced by a rstkpop() call
- added function Beeper() for beeping without taking care about
the different beeping methods
- added function RCKBp() simulating the ROM Check Beep
FILES.C
- changed function ResetDocument(), added call of DisableDebugger()
- changed function GetOpenFilename() and GetSaveAsFilename(),
removed some NULL characters at end of file filter definition
string
- changed function GetLoadObjectFilename() and
GetSaveObjectFilename(), changed function prototype, added
arguments for the file filter and the default extention
I28F160.C
- adjusted implementation to the new bit array of the block lock
table
I28F160.H
- changed structure WSMset_t, replaced byte array byLockCnfg[32]
with the bit array dwLockCnfg variable
KEYMACRO.C
- changed function OnToolMacroNew() and OnToolMacroPlay(), removed
some NULL characters at end of file filter definition string
KML.C
- changed function GetStringOf(), changed for better reading
- changed function SkipWhite(), optimized and better readable
implementation
- bugfix in function ParseToken(), optimized string delimeter
searching among other optimizations and removed increment of line
counter on LF character to correct the line numbering on UNIX
files with LF instead of CR LF at line end -> line counter
increment is done in function SkipWhite() on decoding next keyword
in function Lex()
- changed function ParseLine(), replaced main loop "goto" construct
LOWBAT.C
- bugfix in function StartBatMeasure(), creating the battery
watching thread wasn't Win9x compatible
- changed function GetBatteryState(), added possibility to disable
low battery detection
SETTINGS.C
- changed function ReadSettings() and WriteSettings(), added item
"Disable" in section [LowBat] in the INI-File
STACK.C
- bugfix in function OnStackPaste(), readded delay after ON key
state change, bug introduced in SP37
Service Pack 46 for Emu48 Version 1.0
EMU48.C
- bugfix in function SaveChanges(), returned wrong ID when function
GetSaveAsFilename() returned FALSE, bug introduced in SP45
- bugfix in function WinMain(), in some cases only file short names
had been written as last document
EMU48.RC
- changed version
Service Pack 45 for Emu48 Version 1.0
EMU48.C
- bugfix in function SaveChanges(), function GetSaveAsFilename()
returns a boolean and not a button id and removed call of last
document saving
- changed function OnFileOpen(), added MruAdd() call
- added new function OnFileMruOpen(), command handler for MRU menu
selections
- bugfix in function OnFileSaveAs(), function GetSaveAsFilename()
returns a boolean and not a button id, minor optimizations,
removed call of last document saving and added MruAdd() call
- changed function OnObjectSave(), minor optimization
- changed function MainWndProc(), added MRU message handler
- changed function WinMain(), added MRU handling and added last
document saving at end of program
EMU48.DSP
- added mru.c sources
EMU48.H
- extern declaration of global functions
EMU48.RC
- added Menuitem Files "Recent Files..."
- changed version
MRU.C
- new module for MRU routines
RESOURCE.H
- added definition for MRU handling
SETTINGS.C
- added function DelReg() for deleting a registry item
- 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
Service Pack 44 for Emu48 Version 1.0
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
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
DISPLAY.C
- changed function ResizeWindow(), added "Always on top" feature
EMU48.C
- removed definition of MAXPORTS
- removed global variable bClassicCursor
- added function ForceForegroundWindow() forcing window to
foreground
- changed function SetCommList(), don't try all possible COM ports
any more, get current serial device list from registry
"HKLM\Hardware\\DeviceMap\\SerialComm" and fill both combo boxes
at one loop for speed up scanning
- changed function SettingsProc(), added "Always On Top" and
"Activation Follows Mouse" checkbox handling, adjusted to new CRC
handling of port2 and adjusted to new prototype of function
SetCommList()
- bugfix in function OnFileNew(), function SaveBackup() was called
when emulator engine was running -> this may caused inconsistent
backup data
- 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, added StartupBackup handling,
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
EMU48.H
- removed declaration of bClassicCursor
- extern declaration of global variables and functions
- changed function prototypes
EMU48.RC
- added item "Always On Top" and "Activation Follows Mouse" in
settings dialog
- cosmetic changes in dialog IDD_CHOOSEKML to improve WinXP style
- changed version
FILES.C
- added global variables holding the patched ROM checksum and the
port2 CRC
- changed function GetCutPathName(), better support for UNC names
- 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 MapRom(), removed check for packed ROM image ->
a more complete check is implemented in InitKML() now
- changed function UnmapRom(), added reset of ROM checksum variable
- changed function CrcPort2(), change function prototype and added
unpacked data check
- changed function MapPort2(), added CRC calculation with saving
result in global variable and added unpacked data check
- changed function UnmapPort2(), added reset of port2 CRC variable
- new function IsDataPacked() for unpacked data check
- changed function OpenDocument(), use ROM checksum made in
InitKML() and port2 CRC made in MapPort2() and added checks for
packed memory data
- changed function SaveDocument(), changed document signature to
"Emu48 Document\xFE" without the calculator model dependent
variations and adjusted implementation to new prototypes of
CrcRom() and CrcPort2()
- changed function SaveBackup(), added assertion for checking
emulator engine state
- bugfix in function GetSaveAsFilename(), removed "Win48 Document"
from filter list because Emu48 cannot create such a document
- changed function WriteStack(), adjusted to new prototype of
function RPL_ObjectSize() and added new error state for bad
objects
- changed function LoadObject(), added error message for bad objects
KML.C
- bugfix in function KillKML(), class member variable wasn't reset
- 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
OPCODES.C
- changed function o83n(), o88n() and o89n(), speed optimization
OPS.H
- changed function Tbit0(), Tbit1(), Ta(), Tb(), Tae() and Tbe(),
speed optimization
PCH.H
- added include stddef.h
- restricted DWORD_PTR type definition for MSVC6.0 and earlier
RESOURCE.H
- added some definitions
RPL.C
- bugfix in RPL_ObjectSize(), changed function prototype for adding
buffer size parameter preventing reading outside buffer area when
decoding bad objects
SERIAL.C
- changed function CommOpen(), increased buffer size for device name
SETTINGS.C
- changed function ReadSettings() and WriteSettings(), added item
"StartupBackup" in section [Files] and item "ActFollowsMouse" and
"AlwaysOnTop" in section [Emulator], removed item "ClassicCursor"
from [KML] section in the INI-File
Service Pack 43 for Emu48 Version 1.0
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
DISASM.C
- bugfix in function disasm_8(), the ?HS=0 n opcode showed always as
?=0 opcode
DISPLAY.C
- changed function StopDisplayGray() and StopDisplayBW(), adjusted
to new prototype of ReadIO()
EMU48.C
- removed warnings when compiling under VS2005
- moved CF_HPOBJ definition to EMU48.H
- replaced function IsPort2Writeable() with IsFileWriteable()
- bugfix in function SettingsProc(), in case IDC_PORT2LOAD an update
of the port2 writeable checkbox was missing, in case IDOK a
changed port2 writeable checkbox made a warmstart even if there's
no port2 filename, changed behavior of port2 area if port2
filename is given by the command line argument: show actual port2
file in disabled port2 filename edit field now, also changes of
the port2 shared and writeable checkboxes have affect now
- changed function OnFileClose(), removed call of KillKML() because
will be done in ResetDocument()
EMU48.DSP
- added lowbat.c sources
EMU48.H
- added CF_HPOBJ definition from EMU48.C
- changed function prototypes
- extern declaration of global functions
EMU48.RC
- replaced CREATEPROCESS_MANIFEST_RESOURCE_ID definition in manifest
declaration by 1
- changed version and copyright
ENGINE.C
- changed function WorkerThread(), added control of battery
measurement thread
EXTERNAL.C
- changed function BeepWave(), removed VS2005 warning
- changed function BeepWin9x(), disabled implementation for x64
architecture
FILES.C
- changed function PatchNibble(), added saving state that ROM
address is patched
- bugfix in function UpdatePatches(), the function maybe called for
patching the ROM when it's already patched, in this case the patch
restore list was overwritten with the patched data
- changed function PatchRom(), removed VS2005 warning
- changed function MapPort2(), improved checking for valid size
- bugfix in function GetLoadObjectFilename(), removed call of
HeapFree() which was a remainder of the implementation prior to
SP42
- changed function WriteStack(), added stack level argument
- changed function LoadObject(), adjusted call of WriteStack() to
new function prototype
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
- 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
KML.H
- changed variable type of nParam[] element of KmlLine structure
because element is also used as pointer
LOWBAT.C
- new module with battery measurement
MOPS.C
- changed function Npeek() and Nread(), adjusted to new prototype of
ReadIO()
- changed prototype of function ReadIO(), added update argument
- bugfix in function ReadIO(), the LPE (0x109), RBR LSB (0x114) and
RBR MSB (0x115) register access had to differ between peek and
read mode and added implementation of the LB0 and VLBI bits in the
LPD (0x108) and implementation of the ELBI and EVLBI bits in the
LPE (0x109) register
OPCODES.C
- bugfix in function o807(), Chipset.in register must be refreshed
before checking for a pressed key
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
- changed function CalcT2(), in the case of a pending timer2
interrupt return always the timer2 value 0xFFFFFFFF
Service Pack 42 for Emu48 Version 1.0
EMU48.C
- 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
EMU48.H
- extern declaration of global functions
EMU48.RC
- changed version
FETCH.C
- changed function EvalOpcode(), included assertion for detecting
access to packed memory data
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 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
I28F160.C
- bugfix in function WrStateE8N(), removed "Write to Buffer command
failed when requesting for the buffer length" code part introduced
in SP27; this was in reality a workaround for the actually fixed
Nwrite() flash access bug and illegal data length information
wasn't handled correctly
IO.H
- added DISP1CTL, LINENIBS, DISP2CTL and BAUD bit definitions
KML.C
- added keyword "Menubar" to pLexToken[] table -> scripts using this
keyword are parsed with a warning but not with a fatal error
- changed function CreateKmlList(), 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
KML.H
- added TOK_MENUBAR definition
MOPS.C
- bugfix in function UckBit(), when UART is off then the UCK bit
was always cleared, but it's always set
- bugfix in function Npeek(), Nread() and Nwrite(), flash access
over a 2KB MMU boundary caused problems in some cases
- bugfix in function WriteIO(), race condition when clearing the SON
bit in the IOC (0x110) register, the UART was still working so the
cleared IOC (0x110), RCS (0x111), TCS (0x112), RBR (0x114,0x115)
and TBR (0x116,0x117) register can be overwritten by the serial
thread
SERIAL.C
- bugfix in function CommOpen(), method of port closing was illegal
because COM port dependent threads hadn't been stopped
Service Pack 41 for Emu48 Version 1.0
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 function 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
- added Zoom 3 to all nLcdZoom range assertions
- changed function UpdateMainDisplay(), UpdateMenuDisplay(),
WriteToMainDisplay() and WriteToMenuDisplay(), added Zoom factor 3
handling
EMU48.H
- added definition with valid calculator models
- added macro with model validation code
EMU48.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 and copyright
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
- bugfix in function OpenDocument(), after reading CPU state, port
pointers must immediately be deleted because on error condition
function ResetDocument() tries to free this memory; added check
for valid calculator model
- 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(), added zoom factor 3 to range check of
TOK_ZOOM
- bugfix in function InitButton(), nested scancode block commands
hadn't handled correctly
- bugfix in function LoadKMLGlobal(), keyword "Global" had only been
detected as first command in KML script
- changed function InitKML(), changed checking for valid Model
argument and changed the corresponding error message
KML.H
- adjusted definitions of LEX_BLOCK, LEX_COMMAND and LEX_PARAM to
modified table szLexDelim[]
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
Service Pack 40 for Emu48 Version 1.0
DISPLAY.C
- bugfix in function UpdateContrast(), used background Color 0 in
calculator off state even if Color 32 was defined
- bugfix in function CreateLcdBitmap(), DIB section shouldn't
created from the memory DC
EMU48.C
- added function IsPort2Writeable() to check if read only file
attribute is not set on port2 file
- major changes in function SettingsProc(), added "Port 2 is
Writeable" handling and make port2 changeable without closing the
current emulation session
- 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)
EMU48.H
- extern declaration of global variable and functions
EMU48.RC
- added item "Port 2 is Writeable" in settings dialog
- changed version
ENGINE.C
- bugfix in function WorkerThread(), when changing into SM_RUN state
display contrast must also be restored
FILES.C
- changed function CrcPort2(), made it global accessible
KML.C
- added keywords "Topbar" and "Vga" to pLexToken[] table -> scripts
using these keywords now are parsed with warnings and not quit
with a fatal error any more
- 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
KML.H
- added TOK_TOPBAR and TOK_VGA definition
RESOURCE.H
- added definition
RPL.C
- added function RPL_GetSystemFlag() returning the state of the
given system flag
SETTINGS.C
- changed function ReadSettings() and WriteSettings(), added item
"SaveDefaultConfirm" in section [Files] in the INI-File
STACK.C
- added helper functions RPL_GetZInt() and RPL_SetZInt() to handle
HP49G Precision Integer objects
- added function DoInt() to handle a HP49G Precision Integer object
- changed function OnStackCopy() and OnStackPaste(), added HP49G
Precision Integer support (limited to 127/128 digits incl. sign)
TIMER.C
- changed function CheckT1() and CheckT2(), minor optimization in
checking if INT or WAKE bit is set
Service Pack 39 for Emu48 Version 1.0
DISPLAY.C
- bugfix in function CreateMainBitmap(), in error case hMainDC
variable wasn't cleared
EMU48.C
- changed function SettingsProc(), added sound handling
- moved function OnStackCopy() and OnStackPaste() to STACK.C
- changed function WinMain(), added accelerator key access for menus
EMU48.DSP
- added stack.c sources
EMU48.H
- extern declaration of global variables and functions
EMU48.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
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()
KML.C
- bugfix in function InitKML(), changed log message for no "Model"
definition found and a missing "Bitmap" definition wasn't detected
PCH.H
- added include conio.h
RESOURCE.H
- added several definitions
SETTINGS.C
- changed function ReadSettings() and WriteSettings(), added item
"WaveBeep" and "WaveVolume" in section [Emulator] in the INI-File
STACK.C
- new module with the message handler functions OnStackCopy() and
OnStackPaste() prior located in EMU48.C
- changed function OnStackCopy() and OnStackPaste(), they can now
also copy real numbers from and to the clipboard
TIMER.C
- bugfix in function SetT1(), fixed unsynchronized access to timer1
value, stop timer1 only if running and restart timer1 only when
timer2 is running
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
- changed function DdeCallback(), removed delays after ON key state
change
EMU48.C
- changed function SettingsProc(), added IDC_PORT2LOAD button
handling
- changed function OnStackPaste(), minor code optimization
- changed function OnDropFiles(), OnStackPaste() and OnObjectLoad(),
removed delays after ON key state change
- bugfix in function WinMain(), szCurrentKml wasn't initialized
EMU48.RC
- added "..." button Settings dialog
- changed version
ENGINE.C
- bugfix in function UpdateKdnBit(), wrong DWORD truncation of
Chipset.cycles variable
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
- 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 AddToLog(), changed argument qualifier and minor
code optimization
- 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
OPS.H
- bugfix in function Nsub() and Nrsub(), in some situations wrong
results in dec mode with illegal decimal number entry as 2nd
operator
RESOURCE.H
- added definition
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
Service Pack 36 for Emu48 Version 1.0
CHECKBOX.BMP
- fixed one pixel with wrong color
DEBUGGER.C
- bugfix in function Debugger(), used function to set icon which
hasn't worked properly under WinXP
DISPLAY.C
- changed function UpdateMenuDisplay(), minor code optimizations
- changed function WriteToMenuDisplay(), code optimizations
EMU48.C
- changed function UpdateWindowStatus(), added macro specific 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
EMU48.DSP
- added keymacro.c sources
EMU48.H
- extern declaration of global variables and functions
EMU48.RC
- changed "Always" checkbox in "KML Script Compilation Result"
dialog from a pushlike to normal one for better readability under
WinXP 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
FILES.C
- changed function MapRom(), added detection for packed ROM images
- bugfix in function OpenDocument(), reload KML button state from
last document close
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 module supporting keyboard macro functions
KML.C
- added function ReloadButtons(), update internal button state from
chip keyboard matrix content
- added function PlayKey(), handle button with OutIn code
KML.H
- added ReloadButtons() and PlayKey() function prototype
MOPS.C
- bugfix in function WriteIO(), writing to timer2 failed if first
writing address was before the timer2 address area
- changed function WriteIO(), changing the CONTRLSB (0x101) or the
DISPTEST (0x102) register doesn't effect any display pointer, so
update request for recalculating the pointers removed
OPCODES.C
- bugfix in function o802() and o803(), the r=IN opcodes work also
on odd addresses in the IO register memory mapping area
PCH.H
- added VERIFY macro
RESOURCE.H
- added several definitions
SETTINGS.C
- changed function ReadSettings() and WriteSettings(), added section
[Macro] in INI-File
Service Pack 35 for Emu48 Version 1.0
DDESERV.C
- replaced all LocalAlloc() with HeapAlloc() memory requests
DEBUGGER.C
- replaced all LocalAlloc() with HeapAlloc() memory requests
- changed function UpdateProfileWnd(), replaced CONST TCHAR * with
LPCTSTR
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
- renamed variable nLcdDoubled to nLcdZoom
- changed function UpdateMainDisplay() and UpdateMenuDisplay(),
minor improvement by reading each display line now with the actual
display start pointer
EMU48.C
- renamed variable nLcdDoubled to nLcdZoom
- replaced all LocalAlloc() with HeapAlloc() memory requests
- bugfix in function CopyItemsToClipboard(), don't worked in UNICODE
mode because character translation was missing
EMU48.H
- extern declaration of global variable
- moved T2CYCLES definition from OPCODES.H
- renamed variable nLcdDoubled to nLcdZoom
- changed function DuplicateString(), replaced LocalAlloc() with
HeapAlloc() memory request
EMU48.RC
- changed version
- changed resource language description to English
FILES.C
- replaced all LocalAlloc() with HeapAlloc() memory requests
- changed function CreateBIPalette(), allocated memory for
LOGPALETTE isn't initialized with zero any more
KML.C
- renamed variable nLcdDoubled to nLcdZoom
- replaced all LocalAlloc() with HeapAlloc() memory requests
- bugfix in function PrintfToLog(), temporary buffer was half of
size in UNICODE mode
- changed function BrowseFolder() and ChooseKMLProc(), renamed
IDC_EMU48DIR to IDC_EMUDIR and IDC_EMU48DIRSEL to IDC_EMUDIRSEL
- 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(), display size wasn't reset to the
preset value at the end
RESOURCE.H
- renamed IDC_EMU48DIR to IDC_EMUDIR
- renamed IDC_EMU48DIRSEL to IDC_EMUDIRSEL
RPL.C
- replaced all LocalAlloc() with HeapAlloc() memory requests
OPCODES.H
- moved T2CYCLES definition to EMU48.H
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
TIMER.C
- bugfix in function CalcT2(), estimated timer2 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 RescheduleT2(), optimized initialization of
synchronization variables used in CalcT2()
- changed function SetHP48Time(), changed variable typ of ticks and
time from LONGLONG to ULONGLONG
- changed function ReadT2(), minor optimization calculating the
timer2 value
Service Pack 34 for Emu48 Version 1.0
CURSOR.C
- new module to create a hand cursor
DEBUGGER.C
- bugfix in function NewValue(), EnterAddr(), EnterBreakpoint(),
EditBreakpoint(), InfoIntr() and InfoWoRegister(), 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
DISPLAY.C
- replaced variable use of hOldLcdBitmap with hLcdBitmap
- replaced variable use of hOldMainBitmap with hMainBitmap
EMU48.C
- removed limitation to 16 COM ports
- changed variable qualifier of szLicence
- added global variables
- 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
- changed function OnCreate() and OnDestroy(), added load and
destroy of two new cursor resources
- bugfix in function MainWndProc(), wrong wParam argument decoding
in WM_SYSCOMMAND case
- changed function WinMain(), removed class cursor from main window
- bugfix in function WinMain(), fixed possible buffer overflows in
state file loading message
EMU48.DSP
- added cursor.c sources
EMU48.H
- extern declaration of global variables and functions
EMU48.RC
- changed IDC_DEBUG_MEM from static to listbox control, looks better
in connection with WinXP style
- changed version and copyright
FILES.C
- renamed variable szEmu48Directory[] to szEmuDirectory[]
- changed buffer size information of files and pathes from 260 to
MAX_PATH definition
- 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
ENGINE.C
- bugfix in function AdjustSpeed(), AdjKeySpeed() and SetSpeed(),
reference setting wasn't synchronized
KML.C
- renamed variable szEmu48Directory[] to szEmuDirectory[]
- 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
- bugfix in function KillKML(), set variables bDebug and nKMLFlags
to there startup values
- changed function MouseMovesTo(), added code part to select cursor
OPCODES.C
- bugfix in function o3X(), o8082X(), oBb0(), oBb1(), oBb2(),
oBb3(), oBb4(), oBb5(), oBb6() and oBb7(), used wrong cpu cycles
PCH.H
- added IDC_HAND definition for non Win2k OS project
SETTINGS.C
- renamed variable szEmu48Directory[] to szEmuDirectory[]
- changed function ReadSettings() and WriteSettings(), added item
"ClassicCursor" in section [KML] in the INI-File
Service Pack 33 for Emu48 Version 1.0
DEBUGGER.C
- bugfix in function Debugger(), removed illegal call of
DestroyMenu() in WM_DESTROY message handler
- 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
EMU48.C
- changed function WinMain(), added non modal "Profiler" dialog box
in main message handler
EMU48.H
- extern declaration of global variable
EMU48.RC
- changed version and copyright
- bugfix 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
KEYBOARD.C
- bugfix in function KeyboardEvent(), CPU slow down by calling the
function AdjKeySpeed() on key pressed must be activated here
OPCODES.C
- changed function o802() and o803(), removed AdjKeySpeed() call
RESOURCE.H
- added definitions
RPL.C
- replaced object prolog entries by definitions
SERIAL.C
- bugfix in function CommSetBaud(), changed DCB setting from 1 to 2
stop bits which is closer to the original 2-3/16 stop bits
TIMER.C
- changed function TimeProc(), removed check if timer running
Service Pack 32 for Emu48 Version 1.0
DDESERV.C
- bugfix in function DdeCallback(), DDE commands POKE and REQUEST
worked also on machines with no stack and debugger control in DDE
command POKE was missing
DEBUGGER.C
- bugfix in function OnKeyF7() and OnKeyF8(), on expected longer
operations like with skipping interrrupt code, the menu and
toolbar should be set into run mode; a general setting into run
mode wasn't used because of menu flickering
- changed function OnStackPush() and OnStackPop(), stack elements
can be pushed or poped on any stack level now
- bugfix in function OnLButtonUp(), forgot P and WP field selection
update on P register changing
- changed function OnKeyRightLeft(), code optimizations
- changed function NotifyDebugger(), handle changed argument type
- bugfix in function Debugger(), set the menu and toolbar into run
mode at startup, this prevents wrong active buttons when interrupt
code should be skipped and the calculator can't leave the
interrupt code because the ON key is permanently down or another
interrupt source prevent leaving the interrupt handler
DEBUGGER.H
- added new debugger notify defines
EMU48.C
- changed function OnCreate(), don't enable DragAcceptFiles() here
- changed function OnDropFiles(), checking calculator model to
disable stack writing isn't necessary any more
EMU48.DSP
- new makefile for MSVC 6.0
EMU48.H
- extern declaration of global function (DLL version)
- added hardware type define
EMU48.RC
- changed version
ENGINE.C
- changed function Debugger(), added ability to detect an ASM and
RPL breakpoint on the same address
- bugfix in function ResumeDebugger(), resume may hung in CPU
shutdown mode
FILES.C
- changed function OpenDocument() and SaveDocumentAs(), added
callback notify function call for DLL version
KML.C
- added "Hardware" keyword in Global section
- changed function CreateKmlList(), added checking the "Hardware"
keyword to ignore KML scripts for other emulators
- changed function InitGlobal(), added logfile output for the
"Hardware" keyword
- changed function InitKML(), enable object "Drag and Drop"
calculator model dependend here now
KML.H
- added TOK_HARDWARE definition
Service Pack 31 for Emu48 Version 1.0
DEBUGGER.C
- bugfix in function Debugger(), used wrong background color in
WM_CTLCOLORSTATIC message handler for WinXP style
DISPLAY.C
- bugfix in function WriteToMainDisplay() and WriteToMenuDisplay(),
drew to display even if the DON bit in the =BITOFFSET (0x100)
register was cleared
EMU48.C
- added global variable
- changed function SettingsProc(), added IDC_OBJECTLOADWARNING check
box handling
- bugfix in function OnViewSettings(), removed calling of function
ReadSettings() because INI file settings may be invalid here
- changed function OnObjectLoad(), to disable warning message use a
global variable now
EMU48.H
- extern declaration of global variable
- changed prototype of function ScanKeyboard()
EMU48.RC
- added item "Show Load Object Warning" in Settings dialog
- added "..." button in "Choose Your KML Script" dialog
- changed version
ENGINE.C
- bugfix in function UpdateKdnBit(), update KDN bit only when
keyboard interrupt is on and the timer is running
FILES.C
- bugfix in function NewDocument(), set the RST bit in the LPE
(0x109) register to indicate a POR (Power On Reset)
- bugfix in function RestoreBackup(), when the KML script
initialization failed the Chipset.Port0, Chipset.Port1 and
Chipset.Port2 pointer referenced to unallocated memory
IO.H
- added LPD and LPE definitions
KEYBOARD.C
- bugfix in function ScanKeyboard(), a stopped timer don't prevent
keyboard status update, it prevents the 1ms keyboard polling and
generating a keyboard interrupt; also now distinguish keyboard
update between 1ms keyboard poll and direct update with A=IN and
C=IN command
- changed function KeyboardEvent(), call function ScanKeyboard() in
the 1ms poll context now
KML.C
- new functions BrowseCallbackProc() and BrowseFolder(), helper
functions to browse a directory
- changed function ChooseKMLProc(), added implementation of browser
button, removed WM_SETTEXT message handler and changed WM_COMMAND
handler from 'if' to 'switch' structure
- bugfix in function ChooseKMLProc(), used wrong array size of
szEmu48Directory in UNICODE mode
MOPS.C
- bugfix in function CpuReset(), set the RST bit in the LPE (0x109)
register to indicate NRES reset
- bugfix in function Npeek(), Nread() and Nwrite(), wrap around over
address #FFFFF failed
- bugfix in function ReadIO(), reset the RST bit in the LPE (0x109)
register after reading
- bugfix in function WriteIO(), added implementation of the RST bit
in the LPE (0x109) register
OPCODES.C
- renamed define BIGENDIAN to _BIGENDIAN to avoid problems with the
definition in WINSOCK2.H
- bugfix in function o158x(), o159x(), o15Cx(), o15Dx(), o15Ax(),
o15Bx(), o15Ex(), o15Fx(), o807(), o819f0(), o819f1(), o819f2(),
o819f3(), oF0(), oF1(), oF2(), oF3(), oF4(), oF5(), oF6() and
oF7(), used wrong cpu cycles
- changed function o800() and o801(), call function ScanKeyboard()
in the 1ms poll context now
- bugfix in function o802() and o803(), added ScanKeyboard()
function call for direct Chipset.in update
- bugfix in function o8080(), added ScanKeyboard() function call to
activate 1ms keyboard polling
- changed function o80810(), call function ScanKeyboard() in the
direct update context now
OPCODES.H
- changed some remarks
PCH.H
- added include shlobj.h
RESOURCE.H
- added definition
SETTINGS.C
- changed definitions, allows setting of INI filename and registry
path in the makefile now
- changed function ReadSettings() and WriteSettings(), added item
"LoadObjectWarning" in section [Files] in the INI-File
Service Pack 30 for Emu48 Version 1.0
DEBUGGER.C
- bugfix in function Debugger(), used wrong debugger window position
when task bar was on top or left side
- added implementation of "Write-Only Register" dialog box
DDESERV.C
- added io.h in header definition
- removed usage of Chipset.dispon variable
DISPLAY.C
- added sources of gray scale emulation (experimental)
- replaced the LCD1_ROW by the LCD_ROW definition and the use of the
LCD2_ROW and the LCD3_ROW definitions by a calculation base on
LCD_ROW
- changed macro LINES(), added brackets forcing operator priority
- changed BITMAPINFO color table variable type from DWORD to RGBQUAD
- changed LCD bitmap from 64 palette entries to the number of used
colors in the LCD area, so function UpdateContrast() do not change
the drawing patterns to a new palette entry, it change the palette
itself now
- bugfix in function UpdateContrast(), switch palette to LCD off
background color if display is off
- bugfix in function DestroyLcdBitmap(), contrast palette wasn't
restored to startup colors
- changed function WriteToMainDisplay(), used wrong sizeof argument
to get the 4 byte x-multiplier in the calculation of the memory
position in the LCD bitmap
- bugfix in function StartDisplay(), the VBL counter of a switched
on display starts at the LINECOUNT (0x128,0x129) register content
EMU48.C
- removed usage of Chipset.dispon variable
- bugfix in function SetCommList(), used wrong NO_SERIAL string
definition for UNICODE mode
- bugfix in function OnDestroy(), call function SwitchToState() only
if CPU emulation thread is running
- bugfix in function OnViewCopy(), clipboard contained wrong data
when left display margin was unequal to zero
EMU48.H
- changed prototype of function StartDisplay()
- extern declaration of global function
EMU48.RC
- fixed misspellings "hexdezimal" to "hexadecimal"
- added "Write-Only Register" dialog
- added Windows XP manifest resource
- changed version and copyright
EMU48.XML
- manifest file for Windows XP
ENGINE.C
- changed function WorkerThread(), added parameter to StartDisplay()
function call
FILES.C
- bugfix in function NewDocument(), OpenDocument() and
RestoreBackup(), used wrong window restore position when task bar
was on top or left side
- bugfix in function SaveBackup(), get workspace instead of screen
coordinates of main window
- changed function LoadObject(), changed text output of "load error"
message boxes
KML.C
- changed function InitAnnunciator() and DrawAnnunciator(),
determine the number of valid entries now from the annunciator
array size
MOPS.C
- removed usage of Chipset.dispon variable
- bugfix in function Npeek(), fixed most of the wrong read values in
the I/O register area
- changed function Nwrite(), added conditional gray scale compiling
and added parameter to StartDisplay() function call
- bugfix in function WriteIO(), after changing the DON bit in
BITOFFSET (0x100) the display contrast must be updated as well
RESOURCE.H
- added some definitions
SERIAL.C
- redesign of character transmit part, on some PC systems corrupted
characters were sent
TIMER.C
- workaround for Win2k in function CalcT2(), when detecting a
"negative" time use the CPU cycles for new timer2 value
Service Pack 29 for Emu48 Version 1.0
DEBUGGER.C
- bugfix in function UpdateMiscWnd(), readded trailing spaces in
"On" text
- changed function Debugger(), replaced bDbgEnable with nDbgState
access
DEBUGGER.H
- added new debugger state defines
DISPLAY.C
- added variable and functions from MOPS.C
- new functions StartDisplay() and StopDisplay() to control display
EMU48.C
- added VOID as parameter in functions with no argument
- added Critical Section initialization for gray scale emulation
- changed function UpdateWindowStatus(), OnDropFiles(),
OnStackPaste() and OnObjectLoad(), replaced bDbgEnable with
nDbgState access
- changed function OnDropFiles(), OnFileClose(), OnStackPaste() and
OnObjectLoad(), added debugger control
EMU48.H
- added defines for conditional gray scale compiling
- removed declaration of bDbgEnable
- extern declaration of global variables and functions
EMU48.RC
- changed version and copyright
ENGINE.C
- removed global variable bDbgEnable, replaced by a state in the
nDbgState variable
- added new functions SuspendDebugger() and ResumeDebugger() for
debugger control
- changed functions Debugger(), WaitForSleepState(), SwitchToState()
and WorkerThread(), added debugger control instead of general
debugger switching off
- changed function CheckSerial(), removed interrupt handling and
made function public
- changed function SwitchToState() and WorkerThread(), replaced
bDbgEnable with nDbgState access
- changed function WorkerThread(), main loop don't check status of
serial port any more, serial port must be initialized before
entering the RUN state now, added start/stop VBL counter at
entering/leaving the RUN state
FILES.C
- changed function WriteStack(), minor optimization
MOPS.C
- removed variable ioc_acc
- moved variable byVblRef and the functions F4096Hz() and
GetLineCounter() to DISPLAY.C
- changed function CpuReset(), must close serial port here
- changed function WriteIO(), control of the BITOFFSET (0x100)
register calls now the functions StartDisplay() and StopDisplay()
to modify the VBL counter reference
- changed function WriteIO(), changing the IOC (0x110) register
must also update the serial port status, because this isn't
handled in the CPU main loop any more
TIMER.C
- changed function RescheduleT2(), calculate now ceil of time delay
to reduce checking of timer2 value without timer2 overflow
Service Pack 28 for Emu48 Version 1.0
DEBUGGER.C
- bugfix in table MemMap[], NCE3 reference in HP39/40 part was wrong
- bugfix in function SetMappingMenu(), used wrong variable type for
UNICODE mode
- changed function UpdateMiscWnd(), removed trailing spaces in text
- new functions OnStackPush(), OnStackPop() and OnStackModify() and
other changes for implementation of the stack context menu
- changed function OnFindOK(), minor optimizations
- changed function OnNewValue(), now returns exit condition
DISPLAY.C
- removed usage of Chipset.dispon variable
EMU48.C
- bugfix in function SetCommList(), detection of COM ports larger
than COM9 failed
- moved shutdown of CPU emulation thread from the WinMain() to the
OnDestroy() function to avoid trouble with closed window DC
EMU48.DSP
- added configuration "Release Unicode"
- added configuration "Debug Unicode"
EMU48.RC
- added "Stack" menu entries
- added accelerator key in "Find" dialog
- changed version and copyright
I28F160.C
- bugfix in table byQueryTab[], content of not specified offset 0x03
is 0x02; offset 0x1B and 0x1D contain 0x30 in the real chip
- changed function WrStateE8N(), WrStateE8D() and WrState60D(), use
device specific data from query table instead of program constants
- bugfix in function WrStateE8C(), don't set the BWSLBS bit in the
status register on trying to set a 0 bit
- changed function WrState40D(), removed useless increment
- bugfix in function WrState30C(), don't set the ECLBS bit in the
status register when trying to erase a lock bit with WP# = low
- changed function WrState20C() and WrState30C(), use device
dimensions from query table now and optimized data filling part
- bugfix in function WrState60D(), the BWSLBS or the ECLBS bit in
the status register is set when trying to modify lock bits with
WP# = low
- bugfix in function RdStateId() and RdStateQuery(), Flash commands
"Read Identifier Codes" and "Read Query" now behave on illegal
address access like the original calculator
RESOURCE.H
- added definitions
SERIAL.C
- bugfix in function SerialThread(), added implementation of the RER
bit in the RCS (0x111) register for receiver BREAK condition
- bugfix in function CommOpen(), opening COM ports larger than COM9
failed
- bugfix in function CommTxBRK(), added LPB (Loop Back) emulation
Service Pack 27 for Emu48 Version 1.0
DEBUGGER.C
- various changes in many functions for implementation of the module
memory view
- changed function CreateToolbar(), replaced InitCommonControlsEx()
with InitCommonControls() function call to be compatible with the
project version 0x0200
EMU48.C
- changed function Disasm(), can use value of external port2 size
directly now
EMU48.RC
- added "Mapping" menu entries
- changed version
FILES.C
- changed function MapPort2(), don't limit port2 to 128KB here
I28F160.C
- bugfix in function WrStateE8N(), a "Write to Buffer" command
failed when requesting for the buffer length
KML.C
- added VOID as parameter in function prototypes
- replaced structure names changed in KML.H into the new ones
KML.H
- changed structure names Token to KmlToken, Line to KmlLine, Block
to KmlBlock, Button to KmlButton and Annunciator to KmlAnnunciator
because the Line and Button definition clash with the MacOS API
MOPS.C
- changed function MapP2(), limit port2 mapping size to 128KB here
OPCODES.C
- changed function o138(), o139(), o13A(), o13B(), o13C(), o13D(),
o13E(), o13F(), o19d2(), o1Ad4(), o1Dd2() and o1Ed4(), added big
endian machine support (use define BIGENDIAN)
PCH.H
- added _WIN32_IE definition for project version
RESOURCE.H
- added definitions
Service Pack 26 for Emu48 Version 1.0
DEBUGGER.C
- bugfix in function ViewMemWnd(), wrong ASCII view of characters in
text area, strings are saved in LSB, MSB order
- changed function Debugger(), save and restore debugger window
position in session now
- bugfix in function Debugger(), missing initialization of menu
entry CODE Object Breakpoints
- bugfix in function OnFindOK(), search for ASCII character in
LSB, MSB order
DISPLAY.C
- bugfix in function ResizeWindow(), 'Offset' command in KML script
section 'Background' hasn't worked
EMU48.C
- added Critical Section initialization
- bugfix in function OnPaint(), 'Offset' command in KML script
section 'Background' hasn't worked
EMU48.H
- extern declaration of global variable and function
EMU48.RC
- changed version
FILES.C
- changed functions ResetDocument(), ResetBackup() and
InitializeOFN(), replaced function FillMemory() with ZeroMemory()
- changed function OpenDocument(), can handle various Chipset sizes
now
KML.C
- bugfix in function DrawButton() and ClipButton, 'Offset' command
in KML script section 'Background' hasn't worked
MOPS.C
- bugfix function WriteIO(), when writing to the IOC (0x110)
register a possible USRQ interrupt wasn't generated
- changed function WriteIO(), writing the RER bit of the RCS (0x111)
register and writing the TBF bit of the TBR (0x116,0x117) register
is thread save now
- bugfix function WriteIO(), added implementation of the BRK bit in
the TCS (0x112) register
- changed function WriteIO(), removed NINT2 line update at writing
TBR (0x116,0x117) register, is doing in function CommTransmit()
PCH.H
- added include ctype.h
SERIAL.C
- minimized size of PC receive buffer
- bugfix in function SerialThread(), CommOpen(), CommClose() and
CommTransmit(), added implementation of the RER bit (only for
framing errors) in the RCS (0x111) register and of the TBF and TBZ
bit in the TCS (0x112) register
- new function CommTxBRK(), handle BREAK condition on Tx line
Service Pack 25 for Emu48 Version 1.0
DDESERV.C
- replaced variable type _TCHAR with TCHAR
- added some UNREFERENCED_PARAMETER statements
DEBUGGER.C
- replaced variable type _TCHAR with TCHAR
- added UNREFERENCED_PARAMETER statement
- bugfix in function UpdateCodeWnd(), used uninitialized variables
at first call and optimized actual address searching
- changed function UpdateStackWnd(), save stack content also as
value for easier access
- changed function OnKeyF6(), optimized getting address of selected
item
- changed function OnKeyF8(), optimized GOSUB, GOSUBL, GOSBVL
decoding
- replaced functions OnNOP3Break(), OnRplBreak() and
OnInterruptsStepOverInt() with OnToggleMenuItem()
- changed function OnDblClick(), double click on stack window item
now shows the address content in the code window
- bugfix in function InfoIntr(), variable lIndex may be used without
having been initialized
DISASM.C
- replaced variable type _TCHAR with TCHAR
- bugfix in function disassemble(), the r=-r fs opcodes showed
always as r=r-1 fs opcodes
DISPLAY.C
- added UNICODE support in debug output parts
- used wrong black and white RGB definition, so default display
color was white on black background and not vice versa
- changed function UpdateContrast(), optimization
EMU48.C
- replaced variable type _TCHAR with TCHAR
- changed function CopyItemsToClipboard(), SetCommList(),
OnStackCopy() and OnStackPaste(), added some brackets
EMU48.H
- replaced variable type _TCHAR with TCHAR
- added MapData defines
- extern declaration of global variable and function
- removed declaration of Npack() and Nunpack()
EMU48.RC
- changed properties of IDC_DEBUG_STACK
- added Menuitem Debug "CODE Objects Breakpoints" in debugger menu
- changed version and copyright
ENGINE.C
- replaced variable type _TCHAR with TCHAR
- changed function Debugger(), added DOCODE breakpoint handling
EXTERNAL.C
- added ops.h in header definition
FILES.C
- replaced variable type _TCHAR with TCHAR
- added ops.h in header definition
- changed function PatchRom(), added typecast for GCC compiler
- bugfix in function PatchRom(), lines beginning with a remark were
sometimes decoded as a valid line
- bugfix in function MapPort2(), 32KB cards were rejected
I28F160.C
- changed table definitions fnWrState[] and fnRdState[], removed a
CONST statement
KML.C
- replaced variable type _TCHAR with TCHAR
- changed function ParseLines(), added some brackets
- changed prototypes of function GetStringParam(), GetIntegerParam()
and SkipLines(), fixed argument mismatch
- changed function RunLine(), added default case for GCC compiler
- changed function SkipWhite(), If() and InitKML(), removed unused
variables
- changed function KillKML(), optimizations
- changed function DrawAnnunciator(), optimizations
KML.H
- replaced variable type _TCHAR with TCHAR
MOPS.C
- added UNICODE support in debug output parts
- added ops.h in header definition
- moved MapData defines to EMU48.H
- made function MapData() public
- changed function Npeek(), Nread() and Nwrite(), added brackets for
better code understanding
OPCODES.C
- changed function o8Cd4() and o8Ed4(), added some spaces for better
code understanding
OPS.H
- changed function Npack() and Nunpack(), made them static
- changed function Nneg(), added some brackets
RESOURCE.H
- added definition
RPL.C
- added ops.h in header definition
- added missing HP39/40G entries in RAM entry table
SERIAL.C
- replaced variable type _TCHAR with TCHAR
- changed function UpdateUSRQ(), added return type
- changed function CommTransmit() and CommReceive(), derivate
interrupt generation from the state of the USRQ bit now
SETTINGS.C
- replaced variable type _TCHAR with TCHAR
- bugfix in registry macro WriteString(), used wrong data size in
UNICODE mode
- bugfix in function GetRegistryString(), returned wrong string
length and used wrong read buffer size in UNICODE mode
TIMER.C
- added ops.h in header definition
- changed function MAX(), had no definition of return value
- changed function RescheduleT2(), added some brackets
Service Pack 24 for Emu48 Version 1.0
DBGTOOL.BMP
- bitmap with debugger toolbar buttons
DEBUGGER.C
- added toolbar to debugger window
- changed function EnterBreakpoint(), DrawBreakpoint() and
EditBreakpoint(), added RPL breakpoint handling
- changed function OnToggleCheck(), changed method of item redraw
- changed function EditBreakpoint(), added multiple selection for
deleting breakpoints
DEBUGGER.H
- added new breakpoint define
DISASM.C
- bugfix in function rn_map(), handle NULL pointer pages now
- bugfix in function disasm_8(), fixed broken opcode 80810
mnemonic
EMU48.C
- changed function SetWindowTitle(), optimization
EMU48.DSP
- added library comctl32.lib
EMU48.RC
- added debugger toolbar
- added RPL breakpoint in "Enter breakpoint" dialog
- changed version and copyright
ENGINE.C
- changed function Debugger(), added RPL breakpoint handling
PCH.H
- added include commctrl.h
RESOURCE.H
- added definitions
Service Pack 23 for Emu48 Version 1.0
DDESERV.C
- replaced numbers with state machines defines
DEBUGGER.C
- new function DisableMenuKeys(), replace menu item disable in
function OnKeyF5() and OnKeyF9()
- bugfix in function StrToReg() and OnLButtonUp(), used ASCII
instead of a member function of TCHAR.H
- changed function OnLButtonUp(), skip automatically disabled
windows
- bugfix in function OnKeyF9(), "Run to Cursor" menu item wasn't
disabled
DISASM.C
- bugfix in function disasm_8(), illegal opcodes beginning with 8081
crashed emulator, illegal opcodes beginning with 818f were shown
as r=r+CON fs,n and r=r-CON fs,n opcodes, illegal opcodes
beginning with 819f were shown as rSRB.F opcodes
EMU48.C
- replaced numbers with state machines defines
- moved the ShowWindow() call in main program behind the state file
load to avoid viewing the window at the standard startup position
EMU48.RC
- changed version and copyright
ENGINE.C
- replaced numbers with state machines defines
- bugfix in function Debugger(), checked wrong data breakpoint
addresses in connection with the P,WP,XS,S,M fields
FILES.C
- bugfix in function SaveDocument(), when the emulator window is
minimized the wrong window position was saved in the Chipset
structure
IO.H
- changed LINECOUNT MSB definitions
KEYBOARD.C
- replaced numbers with state machines defines
KML.C
- replaced numbers with state machines defines
MOPS.C
- bugfix in function CpuReset(), BS-FF must be cleared as well
OPCODES.C
- bugfix in function o807(), added BS-FF reset handling
- removed function o_invalid()
OPCODES.H
- removed prototype of function o_invalid()
Service Pack 22 for Emu48 Version 1.0
DEBUGGER.C
- moved global variables to EMU48.C and ENGINE.C
- changed function ViewCodeWnd() and NotifyDebugger(), changed "->"
PC position marker to "-R" on RPL breakpoints
- bugfix in function DisableDebugger(), don't destroy handle before
windows closed
- changed function Debugger(), set signal for window and last
instruction buffer closed at end of WM_DESTROY message handler,
init additional variables
- added implementation of "Find" dialog box
- bugfix in function NewValue(), EnterAddr() and EnterBreakpoint(),
used ASCII instead of a member function of TCHAR.H
- changed function OnToggleCheck(), OnDrawBreakWnd(),
DrawBreakpoint() and EditBreakpoint(), now the list box element
use a link to the corresponding breakpoint element
- bugfix in function OnDrawBreakWnd(), sometimes the old focus
rectangle wasn't purged
- changed function EditBreakpoint(), checkbox can also be toggled
with the space key now
- bugfix in function OnEditBreakpoint(), redrawed code window always
at PC position and not at actual address
DEBUGGER.H
- moved extern declaration of global variables to EMU48.H
DISPLAY.C
- bugfix in function UpdateDisplayPointers(), UpdateMainDisplay(),
UpdateMenuDisplay(), WriteToMainDisplay(), WriteToMenuDisplay(),
calculated wrong display areas when LINECOUNT (0x128,0x129)
register was zero
EMU48.C
- replaced numbers with state machines defines
- added global variable from DEBUGGER.C
- changed function UpdateWindowStatus(), use groups for
enable/disable menu items now
- changed function SettingsProc(), use global variable if COM port
is open instead of calling CommConnect()
- bugfix in function OnPaint(), calculated wrong rectangle for
display area when LINECOUNT (0x128,0x129) register was zero
- bugfix in function OnDropFiles(), OnStackPaste(), OnObjectLoad(),
can't switch on if in debugger mode
- changed function WinMain(), added non modal "Find" dialog box in
main message handler
- bugfix in function WinMain(), fixed a resource leak
EMU48.DSP
- added library advapi32.lib
EMU48.H
- removed extern declaration of global variable and function
- removed COM port state defines
- added state machine defines
- extern declaration of global variables
- changed function prototype
EMU48.RC
- changed properties of IDC_BREAKEDIT_WND
- added "Find" dialog
- changed version
ENGINE.C
- replaced numbers with state machines defines
- made COM port open flag public
- added global variables from DEBUGGER.C
- changed function Debugger(), a RPL breakpoint is now set on the
destination address of a PC=(A) or a PC=(C) instruction and the
RPL breakpoint detection with a prior A=DAT0 A D0=D0+ 5 sequence
has been removed
- changed function CheckSerial(), use return value of CommOpen()
instead of calling CommConnect()
- changed function WaitForSleepState(), close debugger before going
into sleep state
- changed function SwitchToState(), changed detection of emulation
thread termination and debugger now can be active when changing
from Run to Sleep state
FILES.C
- changed function OpenDocument(), because of changed function
CpuReset() additional work for automatic restart on changed ROM
needed
IO.H
- added BITOFFSET definition
MOPS.C
- removed variable ir_ctrl_acc, was never used
- bugfix in function CpuReset(), changed some initial settings
- bugfix in function WriteIO(), force new COM port initialization
when the EIRU bit in the IRC (0x11A) register has changed
- bugfix in function WriteIO(), reading from the LINECOUNT
(0x128,0x129) register destroyed the settings for the
Chipset.lcounter variable
RESOURCE.H
- added some definitions
RPL.C
- changed function RPL_CreateTemp(), changed remarks
SERIAL.C
- removed function CommConnect(), not used any more
- changed function CommOpen(), changed function return type
- bugfix in function CommOpen(), receiver state variables weren't
resetted
- bugfix in function CommClose(), changed detection of thread
termination and fixed a resource leak
- bugfix in function CommTransmit(), receive buffer may be
overflowed when LPB (Loop Back) bit was set
SETTINGS.C
- prepared for registry support
Service Pack 21 for Emu48 Version 1.0
CHECKBOX.BMP
- bitmap with checked and unchecked box
DDESERV.C
- prepared for UNICODE support
DEBUGGER.C
- prepared for UNICODE support
- added implementation of "Run to Cursor"
- added HP39/40G stuff to function InitBsArea() and UpdateMiscWnd()
- added Enable/Disable of breakpoints in the Edit breakpoints dialog
- added breakpoint load/save file functions
- bugfix in function NewValue(), EnterAddr(), EnterBreakpoint(),
EditBreakpoint() and InfoIntr(), try to get a window handle at
begin of a dialog message handler cause illegal handles in some
cases
DEBUGGER.H
- extern declaration of global variable and functions
DISASM.C
- prepared for UNICODE support
- changed function rn_port2(), select internal or external port2
memory by the Chipset.Port2Size variable now
DISPLAY.C
- prepared for UNICODE support
EMU48.C
- prepared for UNICODE support
- added HP39/40G stuff to function UpdateWindowStatus(),
SettingsProc(), OnDropFiles() and Disasm()
- bugfix in function OnPaint(), redraw display and button area even
if emulation is suspended, redraw only requested bitmap area and
redraw display without updating bitmap with display data
- bugfix in function OnFileNew(), overwrite title only on new
document
EMU48.H
- prepared for UNICODE support
EMU48.ICO
- deleted unused device images
EMU48.RC
- changed properties of IDC_BREAKEDIT_WND
- added Menuitem Debug "Run to Cursor" in debugger menu
- changed version and copyright
ENGINE.C
- prepared for UNICODE support
- added part for debugger function "Run to Cursor"
EXTERNAL.C
- added HP39/40G stuff to the SFLAG53_56 definition
FILES.C
- prepared for UNICODE support
- added new document type for HP39/40G in several functions
- bugfix in function MapPort2(), in the first program instance in
not shared mode a read only port2 file couldn't be loaded
- bugfix in function ResetDocument(), delete MMU mappings as well
- bugfix in function OpenDocument(), ask for new KML script when
emulator state file and KML script file use different 'Model'
settings
- changed function OpenDocument() and SaveDocument(), added debugger
breakpoint data handling
IO.H
- added LINECOUNT definition
KML.C
- prepared for UNICODE support
- added "Class" keyword in Global section
- deleted function IsDigit(), replaced by function _istdigit()
- bugfix in function AddToLog(), fixed a memory leak
- new function MapKMLFile(), map KML file into memory
- new functions iSqrt(), AdjustPixel() and TransparentCircle(),
subroutines for new button type
- changed function DrawButton(), changed button type 5 (was same
implementation as type 0) to draw transparent circles
- changed function RefreshButtons(), redraw only buttons in
requested area
KML.H
- prepared for UNICODE support
- added TOK_CLASS definition
MOPS.C
- new function UpdateDisplay(), handle display update
- changed function MapP2(), select internal or external port2 memory
by the Chipset.Port2Size variable now
- added HP39/40G stuff to function MapROM(), RomSwitch(), Nread(),
Nwrite() and ReadIO()
- bugfix in function Nwrite(), update display with address content
- changed function ReadIO(), set RX bit in the RCS (0x111) register
for no character receive
- bugfix in function ReadIO(), wrong implementation of TBR register
(0x116,0x117), read return last written byte
- bugfix in function WriteIO(), clearing the SON bit in the IOC
(0x110) register clears also the IOC (0x110), RCS (0x111), TCS
(0x112), RBR (0x114,0x115) and TBR (0x116,0x117) register
- bugfix in function WriteIO(), writing to the RCS (0x111), TCS
(0x111) and TBR (0x116,0x117) register only works when the SON bit
in the IOC (0x110) register is set
OPCODES.C
- prepared for UNICODE support
- removed InfoMessage in SREQ? opcode
PCH.H
- added include tchar.h
RESOURCE.H
- added some definitions
- removed IDC_DISASM_MNEMONICS
RPL.C
- bugfix in function Metakernel(), check for port1 memory before
reading
SERIAL.C
- prepared for UNICODE support
- bugfix in function UpdateUSRQ(), USRQ bit in SRQ1 (0x118) register
only set on serial interrupt condition when UART enabled
SETTINGS.C
- prepared for UNICODE support
- changed function ReadSettings(), use variable content as default
TIMER.C
- bugfix in function StartTimers(), check for timer interrupts at
timer start
Service Pack 20 for Emu48 Version 1.0
DEBUGGER.C
- changed function UpdateStackWnd(), index of topmost item is now
saved at content update
- changed function CheckBreakpoint(), allow breakpoints in an area
now (used by memory breakpoints to get all touched addresses on a
r=DATx fs access)
DEBUGGER.H
- changed prototype of function CheckBreakpoint()
EMU48.C
- use semaphores to avoid GDI trouble with NT in OnPaint()
- specify processor affinity for the cpu emulation thread to avoid
problems with the QueryPerformanceCounter() function
EMU48.H
- extern declaration of global variable
EMU48.RC
- fixed multiple use of accelerator key in debugger menu
- changed version and copyright
ENGINE.C
- bugfix in function Debugger(), check complete address range of
memory access area
- workaround for Win2k in function AdjustSpeed(), when command
sequence took over 50ms new synchronizing of the emulation slow
down part
- bugfix in function WorkerThread(), update NINT and NINT2 lines
after port status changing
KML.C
- use semaphores to avoid GDI trouble with NT in RefreshButtons()
MOPS.C
- bugfix in function UckBit() and F4096Hz(), depending on clock
value functions returned wrong results
OPCODES.C
- moved address field start and length array from OPS.H and made
them public
OPCODES.H
- extern declaration of global address field start and length
variables
OPS.H
- moved address field start and length array to OPCODES.C
- bugfix in function FASTPTR(), address area is only 5 nibbles long
RESOURCE.H
- deleted several unused definitions
RPL.C
- added function Metakernel() to detect MK2.30 and prior
- changed function RPL_Pick() and RPL_Push() to support
"Save/Load Object" with a stack incompatible Metakernel versions
SERIAL.C
- use own OVERLAPPED stucture for reading and writing
- bugfix in function CommClose(), added additional delay to fix
problems with some Kermit server
- bugfix in function CommTransmit(), wait until write completed
SETTINGS.C
- changed function ReadSettings(), use variable content as default
Service Pack 19 for Emu48 Version 1.0
DEBUGGER.C
- several modifications for memory breakpoint handling
- added step over interrupt code part setting
- bugfix in function NewValue(), at wrong input numbers ignore input
string at <CANCEL> and set focus to edit control
- bugfix in function EnterAddr(), at wrong input numbers set focus
to edit control
DEBUGGER.H
- added breakpoint type defines
- extern declaration of global variable
- changed prototype of function CheckBreakpoint()
DISPLAY.C
- added io.h in header definition
- bugfix in function CreateMainBitmap(), check error condition and
realize palette also in memory DC
- bugfix in CreateLcdBitmap(), must set color palette for LCD DC
- bugfix in function UpdateAnnunciators(), annunciators are off if
timer2 is stopped
EMU48.C
- added io.h in header definition
- changed function SettingsProc(), added HP/Class mnemonic setting
- bugfix in function SettingsProc(), new implementation of card
detection port 1
- moved initialize/remove of the Critical Section part from main
program to message handler
- changed function OnDropFiles(), OnStackCopy(), OnStackPaste(),
OnObjectLoad() and OnObjectSave(), don't wait for changed state
after function WaitForSleepState()
- bugfix in function OnObjectSave(), set info message when emulator
is busy
- changed function Disasm(), removed HP/Class mnemonic setting
- bugfix in function Disasm(), addresses > 0x1869F showed in wrong
format
- bugfix in function WinMain(), synchronized thread start
EMU48.H
- changed definition of PORT1_PRESENT, PORT1_WRITE, PORT2_PRESENT
and PORT2_WRITE
EMU48.RC
- added HP/Class mnemonics in "Settings" dialog
- added "Interrupts" part in debugger menu
- added "Enter breakpoint" dialog
- changed version and copyright
ENGINE.C
- moved debugger part from function WorkerThread() to own function
- added C=DAT0 A, D0=D0+ 5, PC=(C) code sequence detection for RPL
breakpoint in debugger
- added step over interrupt code part handler in debugger section
- bugfix in function SwitchToState(), when switch from Invalid into
Run state then don't enter opcode loop on interrupt request or in
SHUTDN mode
- changed function WorkerThread(), added memory breakpoint handler
- bugfix in function WorkerThread(), timer emulation in debugger
part must check the timer RUN bit
- bugfix in function WorkerThread(), must set wakeup flag on SHUTDN
on interrupt request condition
- changed function WorkerThread(), minor optimization
FILES.C
- added io.h in header definition
- bugfix in function OpenDocument(), check card detection only if
enabled and set NINT line to low on a MP interrupt
- changed function DibNumColors(), optimized by removing case switch
IO.H
- added ANNCTRL and CARDSTAT definitions
MOPS.C
- removed conditional compiling with WSMSET
- bugfix in function RomSwitch(), mirror smaller ROMs than 2MB
- bugfix in function Npeek(), wrong content of SRQ2 (0x119) register
- bugfix in function ReadIO(), wrong implementation of the SMP and
SWINT bit in the CARDCTL (0x10E) register
- bugfix in function ReadIO(), wrong implementation of the NINT2 and
NINT bit in the SRQ2 (0x119) register
- bugfix in function WriteIO(), wrong implementation of the SMP and
ECDT bit and removed some wrong stuff in the CARDCTL (0x10E)
register
- bugfix in function WriteIO(), the DA19 bit in the LINECOUNT
(0x129) register is also available in the Clarke hardware
- bugfix in function WriteIO(), the RUN bit in the TIMER2CTRL
(0x12F) register has an affection to the display annunciators
OPCODES.C
- added io.h in header definition
- bugfix in RTI command, low NINT2 or NINT line reenter interrupt
- bugfix in function o808C() and o808E(), opcodes PC=(A) and PC=(C)
modify the CRC register
OPCODES.H
- moved HST bit definition to TYPES.H
RESOURCE.H
- added several definitions
SETTINGS.C
- changed function ReadSettings() and WriteSettings(), added section
[Disassembler] in INI-File
TYPES.H
- added definition of HST bits
Service Pack 18 for Emu48 Version 1.0
EMU48.RC
- changed version and copyright
ENGINE.C
- bugfix in function WorkerThread(), ignore SHUTDN on interrupt
request
SERIAL.C
- bugfix in function CommOpen(), must wait for EV_RXCHAR event
thread directly after opening the serial port
Service Pack 17 for Emu48 Version 1.0
DEBUGGER.C
- bugfix in function StrToReg() and OnLButtonUp(), wrong string to
HEX conversation with lowercase letters
- bugfix in function Debugger(), used wrong background color in
WM_CTLCOLORSTATIC message handler
EMU48.C
- bugfix in function SettingsProc(), don't overwite Serial-Ir
setting in HP49 mode
EMU48.DSP
- added i28f160.c sources
EMU48.H
- extern declaration of global variable and functions
EMU48.RC
- changed version and copyright
FILES.C
- added new functions in the ROM patch part
- changed function PatchRom(), original content of patched address
is saved now
- changed function MapRom(), added ROM writing feature
- changed function UnmapRom(), restore original content before
closing
- bugfix in function MapPort2(), shared mode now works, when first
program instance opened the file with Read/Write access
- changed function NewDocument() and OpenDocument(), initialize
flash memory structure
I28F160.C
- new module with I28F160 flash memory implementation
I28F160.H
- header file for flash memory implementation
MOPS.C
- changed function MapROM(), added flash register mode
- changed function Npeek(), added flash access part
- changed function Nread(), completed flash access part
- changed function Nwrite(), completed flash access part
OPS.H
- bugfix in function FASTPTR(), handle NULL pointer pages now
- bugfix in function Ninc(), Ndec(), Nadd(), Nsub(), Nrsub(), Nnot()
and Nneg(), wrong results in dec mode with illegal decimal number
entry
SETTINGS.C
- changed function ReadSettings() and WriteSettings(), added section
[ROM] in INI-File
TIMER.C
- bugfix in function CalcT2(), workaround to minimize skipping
timer2 values
Service Pack 16 for Emu48 Version 1.0
DEBUGGER.C
- added "MMU" and "Miscellaneous" view in debugger dialog
- added RPL exit breakpoint on A=DAT0 A, D0=D0+ 5, PC=(A) sequence
- added last instruction viewer in debugger
- renamed function name ViewStackWnd() to UpdateStackWnd()
- bugfix in function UpdateRegisterWnd() and OnCtlColorStatic(),
fixed problems of register update in RUN mode
- bugfix in function OnKeyF11(), in sleep mode break hasn't worked
- bugfix in function OnLButtonUp(), register setting wasn't disabled
in running state
- changed function NotifyDebugger(), added argument to detect RPL
breakpoint
- bugfix in function Debugger(), code disassembler wasn't reset to
mapped mode at startup and fixed a resource leak
- bugfix in function EditBreakpoint(), added breakpoint buffer
overflow check at add breakpoint command
DEBUGGER.H
- extern declaration of global variables
DISASM.C
- bugfix in function disasm_1(), the C=ss, ss=C and CssEX opcodes
showed always as A=ss, ss=A and AssEX opcodes
- bugfix in function disasm_8(), the r register in the rSRB.F fs
opcodes and the opcode lenght was wrong
EMU48.C
- new function CopyItemsToClipboard(), copy selected items from
listbox to clipboard, extracted from function Disasm()
- added HP38G64K stuff to function UpdateWindowStatus() and
SettingsProc()
- changed function Disasm(), call function CopyItemsToClipboard()
now
EMU48.H
- extern declaration of global functions
EMU48.RC
- added "MMU" and "Miscellaneous" part in debugger dialog
- changed copyright date in IDD_ABOUT
- changed version and copyright
ENGINE.C
- added RPL breakpoint handling
- added last instruction buffer update handling
- changed function WorkerThread(), added timer emulation in debugger
mode
- bugfix infunction WorkerThread(), in debugger mode Chipset.pc may
have been changed, so the FASTPTR access must be updated as well
EXTERNAL.C
- some minor changes for the HP38G64K beeper emulation
FILES.C
- added new document type for HP38G64K
IO.H
- added CARDCTL and LCR definitions
KEYBOARD.C
- bugfix in function ScanKeyboard(), update keyboard status only on
timer running and keyboard interrupt only occur on the rising edge
of "logic or" of IR[8:0] and not on the rising edge of each line;
the IRX15 interrupt (ON key) is level sensitive
MOPS.C
- added function MapData() to detect the memory controller handle
the given address, needed for function Npeek(), Nread() and
Nwrite()
- bugfix in function MapROM(), no difference between Clarke and
Yorke chip in DA19 bit behavior, depends on ROM size
- bugfix in function Map(), on a HP49 NCE3 may mapped to ROM
- changed function CpuReset(), reset WSM state of flash memory
- bugfix in function Npeek(), update card status register in I/O
register area before reading and simulate an open data bus
- bugfix in function Nread(), loaded wrong bank switcher FF value
for a HP49
- bugfix in function Nwrite(), loaded wrong bank switcher FF value
when writing on slot2 enabled (GX only)
- changed function Nread() and Nwrite(), added Flash memory access
detection part
- bugfix in function ReadIO(), the CARDSTATUS (0x10F) register
return zero when card detection is disabled
- bugfix in function WriteIO(), on a HP49 force new memory mapping
on changing the LED bit in the LCR (0x11C) register
RESOURCE.H
- added several definitions
TYPES.H
- conditional compiling of cycle counter (32bit EXE/64bit DLL)
- use position of Port2_NBanks for flash memory WSM state variable
Service Pack 15 for Emu48 Version 1.0
DEBUGGER.C
- added emulation run flag
- added notify function for emulation stopped
- added color highlighting on changed registers
- added implementation of "Step Out" (exit function)
- bugfix in function ViewMemWnd(), use the Npeek() function for
reading memory data, so fixed some problems with reading invalid
data from the I/O register area
- changed function OnClearAll(), changed argument to dialog handle
- bugfix in function OnDblClick(), fixed swapped nibbles after enter
new data
- changed function OnKeyCodeWnd(), changed first argument to dialog
handle
- bugfix in function Debugger(), removed context menu resource leaks
and a call of GetDlgItem() with invalid arguments
DEBUGGER.H
- extern declaration of global functions
- moved WM_UPDATE definition to DEBUGGER.C
EMU48.C
- replaced __argc and __argv variables by process variables
- replaced INI file handling part
- changed address in GPL license string
- added HP38 stuff to function UpdateWindowStatus() and
SettingsProc()
- changed function SettingsProc(), replaced Port1_Writeable variable
- bugfix in function OnViewReset(), some registers wasn't reset,
call reset function now
- bugfix in function OnDestroy(), moved functions SwitchToState()
and WriteSettings() to main program, because emulation thread may
not run and settings aren't read so far when main window close
- removed function FlushMessages() and all references, because it's
useless and references made trouble at a WM_QUIT message
- removed several other resource leaks on error conditions
- made function MainWndProc() public
EMU48.DSP
- renamed serial.h into io.h in header definition
- added settings.c sources
EMU48.H
- extern declaration of global variable and functions
EMU48.RC
- changed language definition of dialog IDD_BREAKEDIT
- added Menuitem Debug "Step Out" in debugger menu
- changed version and copyright
ENGINE.C
- renamed header Serial.h into io.h
- renamed wShutdnWake to bShutdnWake in Chipset structure
- moved bRealSpeed variable and make it public
- solved bRealSpeed name conflict
- added DWORD casting from Chipset.cycles variable
- added part for debugger function "Step Out"
- changed notify function for update debugger window
EXTERNAL.C
- some minor changes for the HP38 beeper emulation
FILES.C
- added new document type for HP38G
- replaced __argc and __argv variables by process variables
- added function CrcRom() to get a fingerprint of the ROM
- changed function NewDocument(), deleted Port1_Writeable variable,
isn't used any more
- bugfix in function OpenDocument(), in restore situation add port2
only at HP48 emulation
- changed function OpenDocument(), check fingerprint of ROM
- changed function SaveDocument(), update fingerprint of ROM
- changed function SaveBackup(), save window position as well
- bugfix in function RestoreBackup(), lost port2 of a HP48
KEYBOARD.C
- renamed wShutdnWake to bShutdnWake in Chipset structure
- added DWORD casting from Chipset.cycles variable
KLM.C
- bugfix in function InitKML(), on a KML script syntax error only
continue with the Cancel button
IO.H
- old SERIAL.H, added I/O definitions
MOPS.C
- renamed header Serial.h into io.h
- renamed function CRC() to UpCRC()
- changed function UckBit(), removed unused variable
- changed function MapP1(), use cards_status instead of
Port1_Writeable variable
- bugfix in function RomSwitch(), lached address line A6 was always
zero -> no access to upper half of flash memory
- added function CpuReset() to set cpu registers after reset
- changed function Npeek(), return data from I/O register area as
well now (for debugger support)
- bugfix in function Nread(), reading from the timer2 MSB (0x13F)
register updates the CRC (0x104-0x107) register
- bugfix in function ReadIO(), update the USRQ bit in the SRQ1
(0x118) register after reading the RBR (0x114,0x115) register
- bugfix in function ReadIO(), update the NINT2 and NINT bits in the
SRQ2 (0x119) register
- bugfix in function WriteIO(), update the USRQ bit in the SRQ1
(0x118) register after writing the IOC (0x110) register or the
TBR (0x116,0x117) register
OPCODES.C
- added DWORD casting from w.cycles variable
- checked all undocumented cpu cycles and removed remarks
- bugfix in function o08(), o09(), o0A(), o0B(), o3X(), o8086n(),
o8087n(), o808An(), o808Bn() and o8Ed4(), changed number of cpu
cycles
RESOURCE.H
- added several definitions
SERIAL.C
- renamed header Serial.h into io.h
- renamed wShutdnWake to bShutdnWake in Chipset structure
- moved initialize/remove of Critical Section handler from the
function CommOpen() and CommClose() to main program
- added function UpdateUSRQ(), implements USRQ bit handling
- bugfix in function CommTransmit(), added LPB bit emulation in the
TCS (0x112) register and USRQ bit emulation in the SRQ1 (0x118)
register
- bugfix in function CommReceive(), only reject reading if com port
is closed and not whole operation and added USRQ bit emulation in
the SRQ1 (0x118) register
SERIAL.H
- renamed to IO.H
SETTINGS.C
- new module to handle the INI file
TIMER.C
- removed timer I/O definitions, replaced by include file IO.H
- replaced INT define with INTR (conflict with C variable type INT)
- renamed wShutdnWake variable to bShutdnWake
- bugfix in function CheckT1() and CheckT2(), added TSRQ bit
emulation in the SRQ1 (0x118) register
TYPES.H
- changed variable type of wPosX and wPosY, position data is signed
- use position of wShutdnWake for wRomCrc
- use position of dwKdnCycles for cycles variable
- use position of Port1_Writeable for MSB of cycles variable
- use position of Port2_Writeable for dwKdnCycles variable
- use old position of the cycles variable for bShutdnWake
Service Pack 14 for Emu48 Version 1.0
COLOR.H
- new header with color definitions
DDESERV.C
- added different files headers for HP48/49
DEBUGGER.C
- new module for debugger routines
DEBUGGER.H
- header file for debugger part
DISASM.C
- changed function append_r_addr() and append_pc_comment(), relative
jumps now can viewed with the target address instead of a relative
offset and target address in remark; implemented a local variable
- bugfix in function rn_port2(), calculated port2 mask was wrong
- added HP49 stuff to function rn_port2()
EMU48.DSP
- added debugger.c sources
EMU48.C
- added debugger menu entry
- added HP49 stuff to the disassembler
- added HP49 stuff to function SettingsProc()
- changed function OnViewSettings(), removed port2 open/close
handling, now done in the document handler
- deleted unused function OnSysClose()
- bugfix in function Disasm(), in entry IDC_DISASM_PORT2 the highest
useable address was always wrong
EMU48.RC
- added Menuitem Tools "Debugger..."
- changed version and copyright
EMU48.H
- extern declaration of global variable and functions
ENGINE.C
- moved inline function FASTPTR() to OPS.H
- added debug part in main emulation loop
EXTERNAL.C
- some minor changes for the HP49 beeper emulation
FILES.C
- added new document type for HP49
- change in function WriteStack(), accept HP49 binary files now
- the port2 open/close handling is now controlled by the document
- several changes in port2 handling, the HP49 use an internal 128KB
RAM card instead of the external RAM card of the HP48
- changed function UnmapPort2(), added return value for unmap
success
- changed function PatchRom(), longer addresses than 5 nibbles can
be used now
- changed function OpenDocument(), restore HP49 ROM bank selection
after document load
- changed function InitKML(), removed initialization of MMU
KEYBOARD.C
- changed function ScanKeyboard(), added a flag for wake up from
SHUTDN mode
KML.C
- bugfix in function PressButton(), if button already pressed, do
nothing -> fixed a draw problem with KML button type 3
- bugfix in function RefreshButtons(), KML type 3 buttons, must
complete redraw before refresh them
MOPS.C
- added HP49 MMU parts
- bugfix in function ReadIO(), update the UCK bit in the BAU (0x10D)
register
OPS.H
- moved inline function FASTPTR() from ENGINE.C to header file
RESOURCE.H
- added several definitions
RPL.C
- added HP49 memory pointers
- added HP49 flash pointer object (=DOFASHP)
- added HP49 precision integer object (=DOINT)
- added HP49 precision real object (=DOLNGREAL)
- added HP49 precision complex object (=DOLNGCMP)
- added HP49 symbolic matrix object (=DOMATRIX)
- added HP49 aplet object (=DOAPLET)
- added HP49 mini font object (=DOMINIFONT)
SERIAL.C
- changed function SerialThread(), added a flag for wake up from
SHUTDN mode
TIMER.C
- changed functions CheckT1() and CheckT2(), added a flag for wake
up from SHUTDN mode
TYPES.H
- use position of the wUnused1 variable for SHUTDN wake up flag
Service Pack 13 for Emu48 Version 1.0
DISASM.C
- bugfix in function disasm_8(), the HS=0 n opcode was showed wrong
EMU48.DSP
- added fetch.c and opcodes.c sources
EMU48.C
- bugfix in function Disasm() and About(), handled messages must
return TRUE
EMU48.H
- added function prototypes
ENGINE.C
- moved several definitions to OPCODE.H
- made function AdjKeySpeed() public
- replaced opcode handling include files by a function call, decoder
now works with tables instead of case switching
- deleted unused code parts in module
FETCH.C
- new module with opcode dispatcher
FETCH.H
- file deleted, replaced by FETCH.C
FILES.C
- bugfix in function PatchRom(), no correct handling of remarks,
interpreter failed on lower case hex digits in arguments
OPCODES.C
- new module with opcode implementation
OPCODES.H
- file content changed, replaced by OPCODES.C
Service Pack 12 for Emu48 Version 1.0
DISPLAY.C
- minor change in function UpdateMainDisplay()
- deleted remarked global variables and unused code parts in
function WriteToMainDisplay()
EMU48.C
- added auto event object for controlling the CPU thread
EMU48.H
- removed extern declaration of variable
- extern declaration of global variable and functions
ENGINE.C
- new function CheckDisp(), synchronize display update now with the
line update counter
- replaced all ResumeThread() with SetEvent() calls
- replaced all SuspendThread() with WaitForSingleObject() calls
KEYBOARD.C
- replaced all ResumeThread() with SetEvent() calls
- deleted unused code parts in function ScanKeyboard()
MOPS.C
- flag for updating display area is now global
- new function GetLineCounter() for getting the actual display
refresh line
- changed function WriteIO(), display isn't updated here any more
- use serial definitions from "serial.h" now
- deleted remarked functions Nread2(), Nwrite2(), Nread5() and
Nwrite5()
SERIAL.C
- replaced all ResumeThread() with SetEvent() calls
TIMER.C
- bugfix in function SetT1(), loading same timer value doesn't
restart timer period
- replaced all ResumeThread() with SetEvent() calls
Service Pack 11 for Emu48 Version 1.0
EMU48.C
- removed cards status definitions
- bugfix in function OnFileExit(), continuing the emulation failed
after pressing the "Cancel" button in save dialogbox
- removed function OnSysClose(), no difference to function
OnFileExit()
- changed message implementation WM_SYSCOMMAND/SC_CLOSE to function
OnFileExit()
EMU48.DSP
- added preprocessor definition "STRICT" to project
EMU48.H
- moved cards status definitions from EMU48.C to header file
- extern declaration of global function
EMU48.RC
- changed version and copyright
ENGINE.C
- bugfix in function WorkerThread(), after changing the port2 card
status the memory mapping must be updated
- update HP48 time now in function WorkerThread() and not in
function StartTimers()
FILES.C
- changed function MapPort2(), dwPort2Mask now shows the valid
address lines of the bank switcher FF
MOPS.C
- bugfix in function MapP1() and MapP2(), clear mapping area if port
is configured but not plugged
- bugfix in function MapP2(), odd bank switch values loaded the
wrong page of port2 and bank switcher must be disabled on S(X)
versions
- changed function Nread(), simulate an open data bus now (fix
value for even and odd address)
- bugfix in function Nread(), don't change bank switcher value if
RAM or CE2 is on the same address, because these modules have
higher access priority
- bugfix in function Nwrite(), bank switching now works with the
'datx=r fsd' command
TIMER.C
- renamed function SetAccesstime() to SetHP48Time() and made
function public
- removed update of HP48 time in function StartTimers()
Service Pack 10 for Emu48 Version 1.0
DISPLAY.C
- use only one pattern field for all display resolutions
- added new display contrast scheme
- bugfix in function WriteToMainDisplay(), calculated source memory
address was illegal memory pointer
EMU48.C
- bugfix in functions OnFileExit() and OnSysClose(), stop emulation
thread before saving emulation data
- changed function Disasm(), changed list box from single to multi
selectable items, added button to copy selected items to
clipboard
- moved function DragAcceptFiles() to WM_CREATE handler
- added function DragAcceptFiles() to WM_DESTROY handler
- allow second command line parameter as port2 filename
- added Critical Section initialization
EMU48.H
- removed extern declaration of global function
- extern declaration of global variable and functions
EMU48.RC
- added button in dialog IDD_DISASM
- reinsert button IDC_UPDATE in dialog IDD_CHOOSEKML
- changed version and copyright
ENGINE.C
- functions CheckSerial() and AdjustSpeed() are inline coded now
- new function UpdateKdnBit() for updating the KDN bit by the 1ms
keyboard interrupt handler
FILES.C
- added new function CrcPort2() to get a fingerprint of port2
- changed function OpenDocument(), check fingerprint of port2
- changed function SaveDocument(), update fingerprint of port2
KEYBOARD.C
- changed function Keyboard_GetIR() to static
- bugfix in function ScanKeyboard(), added fixes for the KDN bit
implementation and update keyboard interrupt pending flag when
1ms keyboard handler is disabled
KML.C
- bugfix in function ParseLine(), caused memory leaks when an error
occured
- bugfix in function ParseLines(), fixed a windows program abort on
some KML script or line include errors
- bugfix in function ParseBlock(), abort parsing on KML script
errors
- bugfix in function ParseBlocks(), fixed a windows program abort on
block include errors
- bugfix in function FreeLines(), caused memory leaks when different
argument types are used in a line
MOPS.C
- added new function IOBit()
- bugfix in function ReadIO(), update the KDN bit in the SRQ2
(0x119) register before reading
OPCODES.H
- bugfix in A=IN and C=IN command, update KDN bit in the SRQ
register
- bugfix in all r=r+CON fs,n and r=r-CON fs,n opcodes, they always
work in HEX mode
- changes in INTON, INTOFF and RTI for KDN bit implementation
- changed RTI command, execute pending key interrupt only if enabled
- changed RSI command, set key interrupt pending flag also when 1ms
keyboard handler is disabled
- bugfix in INTON command, execute interrupt if key interrupt is
pending
OPS.H
- added new inline functions Ninc16() and Ndec16()
RESOURCE.H
- added/changed definitions
- removed ID_HELP_REGISTER
TYPES.H
- use position of the uUnused1 variable for fingerprint of port2
- use position of the Port2_Size variable for cpu cycles at start of
1ms key interrupt handler
Service Pack 9 for Emu48 Version 1.0
DISASM.C
- changed output of HP Mnemonic P=n
DISPLAY.C
- bugfix in function UpdateMainDisplay(), with off display and Zoom
> 1 only a part of the display was cleared
- changed function UpdateMenuDisplay(), use a common pointer offset
calculation and display output part now
EMU48.C
- changed function OnViewCopy(), changed screen clipboard format
from CF_BITMAP to CF_DIB
- bugfix in function OnViewReset(), must unconfig MMU on reset too
- changed function OnAbout(), don't stop emulation while viewing
About box
- moved initialize/remove of the Critical Section part from message
handler to main program
EMU48.H
- removed extern declaration of global variables and functions
EMU48.RC
- changed design of IDD_ABOUT
- changed version and copyright
ENGINE.C
- bugfix in function FASTPTR(), code execution is possible in IO
register area as well
FETCH.H
- removed jump to extension opcode 81B0
FILES.C
- removed global variable
MOPS.C
- bugfix in function MapP0(), MapP1(), MapP2(), MapBS(), mapping
area may have holes
- bugfix in function MapBS(), no read from ROM at mapped bank
switch control area
- bugfix in function MapP2(), if G(X) ROM select port2 only if
DA19=0 and BEN=1, now the saved bank switch control information is
used
- bugfix in function MapROM(), if G(X) ROM and DA19=0 (ROM disabled)
then mirror lower ROM at #80000 (AR18=0)
- bugfix in function Nread(), bank switching now works with every
'r=datx fsd' command in the complete mapped bank switch control
area, an unconfigured bank switch area is now disabled and the
GX bank switch information (content of Flipflop) is saved now
- bugfix in function Nwrite(), at some conditions no update of the
display area and IO area couldn't be unconfigured
- removed functions Nread2(), Nwrite2(), Nread5() and Nwrite5()
- bugfix in function ReadIO(), several minor fixes in the LINECOUNT
(0x128,0x129) register emulation
- bugfix in function ReadIO(), the TIMER1CTRL and TIMER2CTRL
(0x12E,0x12F) register must be updated before reading
- bugfix in function WriteIO(), don't clear the XTRA bit in the
TIMER1CTRL (0x12E) register while setting
- bugfix in function WriteIO(), after setting new TIMER1CTRL and
TIMER2CTRL (0x12E,0x12F) register values the control bit
condition must be checked
- bugfix in function WriteIO(), handle start/stop of the LINECOUNT
register when the DON bit in the DISPIO (0x100) register has
changed
- bugfix in function WriteIO(), force new ROM mapping if DA19 in
the MSB LINECOUNT (0x129) register has changed on a G(X) ROM
OPCODES.H
- Nwrite2() replaced by Nwrite()
- Nwrite5() replaced by Nwrite()
- Nread2() replaced by Nread() for the BS 'r=datx fsd' bugfix
- Nread5() replaced by Nread() for the BS 'r=datx fsd' bugfix
- bugfix in RTI command, generate interrupt if ON key is pressed
- bugfix in RSI command, don't set key interrupt pending flag if
INTOFF command is active
- removed extension opcode 81B0
TIMER.C
- removed assertions in function CheckT1() and CheckT2() that the
timers must run
- moved initialize/remove of Critical Section handler from the
function StartTimers() and StopTimers() to main program for bugfix
the problems with the Critical Section area of the function
ReadT1() and ReadT2() when the timers are stopped
- bugfix in function ReadT2(), timer2 was always running
TYPES.H
- use Port2_Bank variable to save state of GX port2 Flip-Flop
Service Pack 8 for Emu48 Version 1.0
DISASM.C
- changed function read_nibble() to disassemble modules
- added new mapping functions for function read_nibble()
- bugfix in function append_imm_nibble(), HP Mnemonic hex number
was showed as decimal number
EMU48.C
- changed variable types of function WinMain()
- added "drag and drop" implementation for HP objects
- added some features to function Disasm()
- removed all parts handled with the global variables bAccurateTimer
and uT1Period
- bugfix in function Disasm(), button "Next Address" caused a
windows program abort if the given address was outside of the
cpu address area
- bugfix in function UpdateWindowStatus(), Menuitem Tools
"Disassembler..." must be disabled when document file is closed
- bugfix in function OnStackPaste(), fixed problem when HP is off
- bugfix in function OnObjectLoad(), solve problem when calculator
is off and bugfixed method to switch emulator into sleep state
- bugfix in function OnObjectSave(), bugfixed method to switch
emulator into sleep state
EMU48.DSP
- added library shell32.lib
EMU48.H
- bugfix of variable hApp, used wrong type
- extern declaration of global variables
- removed extern declaration of global variables
- added some disassembler defines
EMU48.RC
- added my name to dialog IDD_ABOUT
- added some radio buttons to dialog IDD_DISASM
- removed Timers part from dialog IDD_SETTINGS
- changed version and copyright
ENGINE.C
- added global variable
- removed global variable
- bugfix in function AdjKeySpeed(), slow down whole emulation now,
when a key is pressed
KEYBOARD.C
- changed key event signal in function KeyboardEvent()
MOPS.C
- bugfix in function Uncnfg(), I/O mapped address area begin and end
on a 64 nibble boundary, Chipset.IOBase must be saved for the C=ID
command
- bugfix in function C_Eq_Id(), don't shift Chipset.IOBase for ID
- changed function Nread(), Nwrite(), Nread2(), Nwrite2(), Nread5()
and Nwrite5(), test Chipset.IOCfig as well for mapping
OPCODES.H
- removed InfoMessage in BUSCB, BUSCC and BUSCD opcode, emulate as
NOP
- bugfix in RTI command, don't return from interrupt at timer1/2
interrupt condition
- bugfix in SHUTDN command, don't shut down at timer1/2 wake up
condition
- bugfix in RSI command, detection of interrupt is in service was
wrong
PCH.H
- added include shellapi.h
RESOURCE.H
- added several definitions
- removed IDC_BROWSEDIR, IDC_REFRESH, IDC_USEMMTIMER, IDC_T1PERIOD,
IDC_T1DEFAULT
TIMER.C
- removed global variables bAccurateTimer and uT1Period, replaced by
a static variable and a constant
- changed function CheckT1() and function CheckT2(), use function
parameter for the timer value now
- changed function ReadT1() and function ReadT2(), update timer
control bits after reading
- bugfix in function RescheduleT2(), execute timer2 event when MSB
of timer changed to update timer2 control register
- bugfix in function TimeProc(), waiting for timer2 overrun prevents
access to the timer2 value from the cpu emulation thread and reset
of variable uT2TimerId was outside synchronized area
- bugfix in function CheckT1() and function CheckT2(), fixed SRQ bit
handling
- bugfix in function SetT1() and function SetT2(), update timer
control bits and check for interrupts after setting
- bugfix in function StopTimers() and function SetT2(), killing
timer1 or timer2 in a Critical Section part may cause a dead lock
with the timer callback function (function timeKillEvent() waits
for the finish of the corresponding callback function, but the
callback function is locked by the Critical Section handler)
Service Pack 7 for Emu48 Version 1.0
DISASM.C
- new module with disassembler
DISPLAY.C
- bugfixes in function UpdateDisplayPointers(), next line offset was
sometimes wrong and the addresses of the main display area were
wrong when next line offset was negative
- new implementation of function WriteToMainDisplay(), fixed several
bugs (no output when next line offset was negative, sometimes
problems with left margin values > 4 and garbage on display)
- bugfix in function WriteToMenuDisplay(), menu wasn't updated
when next line offset was negative
EMU48.C
- added global variable
- added semaphore handling for key scan
- added disassembler dialog box and menu entry
- bugfix in function OnViewCopy(), the clipboard wasn't closed when
EmptyClipboard() failed
- bugfix in function OnKeyDown(), suppress autorepeat feature of
keyboard
EMU48.DSP
- added disasm.c source
EMU48.H
- extern declaration of global variables
- added function prototypes
EMU48.RC
- added Menuitem Tools "Disassembler..."
- changed version and copyright
ENGINE.C
- added global variable
- bugfix in function AdjKeySpeed(), exit delay loop when a key
event has occured and use Chipset.Keyboard_Row[] instead of
Chipset.in to detect a pressed key
FILES.C
- function LoadBitmapFile() save old hWindowDC palette now
- bugfix in function SaveDocumentAs(), previous opened file wasn't
closed
KEYBOARD.C
- bugfix in function ScanKeyboard(), code part must be synchronized
and an interrupt was only generated when all input lines has been
low (no keys pressed)
- added parameter to function ScanKeyboard(), parameter indicates if
the Chipset.in interrupt register should be reset
- added key event signal in function KeyboardEvent()
- workaround in function KeyboardEvent(), hold key state for a
definite time
KML.C
- bugfix in function ParseLines() and ParseBlocks(), allocated
memory for string parameter of include token wasn't freed
- bugfix in function KillKML(), palette resource couldn't freed,
when hWindowDC was open
MOPS.C
- bugfix in function WriteIO(), the Chipset.start1 variable only
was updated when five nibbles at the DISPADDR (0x120) register
has been written
- bugfix in function WriteIO(), the Chipset.loffset variable only
was updated when three nibbles at the LINEOFFS (0x125) register
has been written
- bugfix in function WriteIO(), the Chipset.lcounter variable only
was updated when the MSB of the LINECOUNT (0x129) register has
been written
- bugfix in function WriteIO(), the Chipset.start2 variable only
was updated when five nibbles at the MENUADDR (0x130) register
has been written
- bugfix in function ReadIO(), the LINECOUNT (0x128-0x129) register
is a down counter
OPCODES.H
- changed RSI command for thread synchronize
RESOURCE.H
- added several definitions
TIMER.C
- bugfix in function SetAccesstime(), sync time values must always
save in port0 and not at the mapped address
- bugfix in function RescheduleT2(), used wrong event time when
reference point for timer2 value wasn't saved
Service Pack 6 for Emu48 Version 1.0
DDESERV.C
- bugfix in XTYP_POKE part, fixed problem when HP is off
DISPLAY.C
- added X4 display size parts
EMU48.C
- changed function OnViewCopy() for X4 display size
- init lFreq variable for high performance counter here now
EMU48.H
- changed type and name of bLcdDoubled to nLcdDoubled
- extern declaration of global variables
EMU48.RC
- changed version and copyright
EXTERNAL.C
- changed high limit of frequency, use SX specification
- added high limit of beep duration, use SX specification
- estimate cpu cycles for beep time
- adjust some cpu flags and registers modified by the original code
KML.C
- changed TOK_ZOOM implementation in function InitLcd()
MOPS.C
- changed implementation of registers 0x128-0x12D in function
ReadIO()
OPCODES.H
- update field select table in "EXTENSION opcode o81B1"
TIMER.C
- moved static lFreq variable to module EMU48.C
Service Pack 5a for Emu48 Version 1.0
EMU48.C
- bugfix in OnPaint(), must redraw annunciators
Service Pack 5 for Emu48 Version 1.0
DDESERV.C
- return DDE error if emulator state couldn't change to sleep state
EMU48.C
- added Copy/Paste Clipboard data from/to stack (strings only)
EMU48.H
- extern declaration of global variables
- added function prototypes
EMU48.RC
- added Menuitem Edit "Copy String" and "Paste String"
- fixed multiple use of accelerator keys
- changed version and copyright
ENGINE.C
- added function WaitForSleepState(), wait for the SHUTDN command
-> stack isn't in use (when the clock is displayed, a time string
was sometimes on stack instead of the loaded item), then switch to
state 3 (Sleep state)
- added function AdjKeySpeed(), slow down key repetition
FILES.C
- save mapping size of port2 in global variable
- optimized calculation of bank switch mask in MapPort2()
MOPS.C
- bugfix in MapP0(), data offset was wrong
- bugfix in MapP1(), data offset was wrong
- bugfix in MapP2(), data offset was wrong and real size of module
was zero
- bugfix in MapBS(), wrong pointer in mirrored data page
- bugfix in MapROM(), wrong pointer in mirrored data page
- bugfix in MapP0(), MapP1(), MapP2(), MapBS(), Config(), Uncnfg(),
mapped address area begin and end on a mapping size boundary
- bugfix in Map(), the access priority of CE1 and CE2 was wrong
(SX: port1<->port2, GX: port1<->bank select)
- bugfix in Uncnfg(), the unconfig priority of CE1 and CE2 was wrong
(SX: port1<->port2, GX: port1<->bank select)
- Map(), size optimized implementation
- Config(), size optimized implementation
- Uncnfg(), size optimized implementation
- C_Eq_Id(), size optimized implementation
OPCODES.H
- insert key slow down in A=IN and C=IN
RESOURCE.H
- added ID_STACK_COPY and ID_STACK_PASTE
Service Pack 4 for Emu48 Version 1.0
EMU48.C
- added code for port1 disable
- changed the default box setting of "Accurate Timer" in checked
EMU48.RC
- added item "Port 1 is Plugged"
- changed version and copyright
KEYBOARD.C
- bugfixes in 1 ms keyboard interrupt handler, keyboard interrupts
are generated at one of the following conditions: pressing the ON
key (non maskable), pressing a key detected by the 1 ms keyboard
scan when enabled (maskable), detect a key after an OUT command
or after the RSI command when a bit in the IN register is set
MOPS.C
- bugfix in WriteIO(), TIMER1 was loaded with the current value
OPCODES.H
- bugfix in INTON and INTOFF command, they aren't able to generate a
keyboard interrupt
- bugfix in RSI command, call interrupt routine or set interrupt
pending flag if a bit of the IN register is high
- RTI command changed, doesn't handle ON key here
- added InfoMessage for BUSCB command
RESOURCE.H
- added IDC_PORT1EN
SERIAL.C
- bugfix, synchronize threads for receive char
TIMER.C
- changed function CheckT1(), quite similar to V1.0 with minor fixes
- changed function CheckT2(), minor fixes
- bugfix in function SetT1(), decrement value after full period,
don't check for interrupts after setting
- bugfix in function SetT2(), don't check for interrupts after
setting
Service Pack 3 for Emu48 Version 1.0
DDESERV.C
- new module for DDE communication
EMU48.C
- init DDE callback function and name service
- added section [Serial] in INI-File
- added combobox update in dialog box handler
EMU48.DSP
- new makefile for MSVC 5.0
EMU48.H
- extern declaration of global variables
- added function prototypes
EMU48.RC
- added block "Serial"
- changed version and copyright
ENGINE.C
- bugfix in SetSpeed(), may enable "realspeed" with illegal
reference counts
- bugfix in SwitchToState(), switching from "Invalid" or "Sleep"
state into another, ResumeThread() may called before
SuspendThread() (unsynchronized threads)
- added code for serial device
FILES.C
- separated stack writing code from LoadObject() to WriteStack()
MOPS.C
- added global variables
- changed code in ReadIO() for BAUD, IO CONTROL, RCS, TCS, RBR,
SREQ?, IR CONTROL for serial support
- changed code in WriteIO() for BAUD, IOC, TBR, IRC for serial
support
RESOURCE.H
- added IDC_WIRE and IDC_IR
SERIAL.C
- new module for serial support
SERIAL.H
- new header with serial definitions
Service Pack 2 for Emu48 Version 1.0
DISPLAY.C
- bugfix in UpdateMainDisplay(), update display even if it's off
EMU48.C
- added section [Emulator] in INI-File
- added checkbox update in dialog box handler
EMU48.H
- extern declaration of variables
EMU48.RC
- added item "Authentic Calculator Speed"
- changed version and copyright
ENGINE.C
- added code to slow down emulation
RESOURCE.H
- added IDC_REALSPEED
Service Pack 1 for Emu48 Version 1.0
DISPLAY.C
- red and blue has been changed in SetLcdColor()
- use display contrast value from chipset and not the default
value in CreateLcdBitmap()
- use semaphores to avoid GDI trouble with NT in
UpdateMainDisplay(), UpdateMenuDisplay(), WriteToMainDisplay()
and WriteToMenuDisplay()
- execute ResizeWindow() only if window exist
- bugfix in draw part of WriteToMainDisplay()
EMU48.C
- version changed
- added global variable
- added semaphore handling to avoid GDI trouble with NT that prevent
graphic update sometimes
- added message for right mouse key
- bugfix of a parameter of GetPrivateProfileString()
- removed SwitchToState() and KillKML() at end of program
- eliminated memory leak caused by SetWindowTitle()
- function OnPaint() may returned without calling EndPaint()
- execute UpdateWindowStatus() only if window exist
EMU48.H
- extern declaration of global variable
- added VOID as parameter in function prototypes
EMU48.RC
- added/changed version and copyright
EXTERNAL.C
- bugfix, check if beeper enabled
- changed beeper emulation, more realistic with Windows NT
FILES.C
- avoid an open handle and adjust file attributes in
LoadBitmapFile()
- the WORD to int conversion used in function SetWindowPos()
failed; windows with negative position data wouldn't pop up with
NT (NT GDI is 32 bit coded, Windows 95 mostly 16 bit -> the
failed conversion doesn't matter with Windows 95)
- bugfix in close file handling of function OpenDocument()
- InitKML() need chipset for contrast setting in RestoreBackup()
KML.C
- added global variables
- use semaphores to avoid GDI trouble with NT in DrawButton() and
DrawAnnunciator()
- added function ReleaseAllButtons()
- changed mouse handling for pressing more than one key
OPCODES.H
- added S(X) oscillator cycles for each command
- bugfix in A=IN and C=IN command to emulate a saturn bug, on real
machines the assembler commands only work on an even address
- bugfix in all r=r+CON fs,n and r=r-CON fs,n opcodes to emulate a
saturn bug, on real machines commands with a single field selector
cause an overrun to other fields of the register
- NFdbl() replaced by NFadd()
- Ndbl() replaced by Nadd()
OPS.H
- NFinc() definition changed
- NFdec() definition changed
- NFdbl() definition removed
- Ndbl() function removed
- changed implementation of Ninc(), added offset variable
- changed implementation of Ndec(), added offset variable
- optimized implementation of Nadd()
- optimized implementation of Nsub()
- optimized implementation of Nrsub()
- optimized implementation of Nnot()
- optimized implementation of Nneg()
TIMER.C
- added global variables, defines and constants
- added function SetAccesstime() for setting the correct time
- bugfix in AbortT2() which prevent updating the clock sometime
- changed implementation of CheckT1() to correct blink frequency
of input cursor
- changed implementation of ReadT2() using a high resolution
timer to minimize skipping timer2 values
- bugfix in SetT2(), always check timer2 control register
- solved a problem with timer2 counts greater than 16.67 min.
- bugfix of wrong timer1/2 values (unsynchronized threads)
TYPES.H
- use position of the t2_ticks variable for oscillator cycles
(c) by Christoph Gie<69>elink