8fe52143cf
Signed-off-by: Gwenhael Le Moine <gwenhael.le.moine@gmail.com>
3536 lines
119 KiB
Text
3536 lines
119 KiB
Text
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
|