c62947dac5
Signed-off-by: Gwenhael Le Moine <gwenhael.le.moine@gmail.com>
5278 lines
183 KiB
Text
5278 lines
183 KiB
Text
Service Pack 66 for Emu48 Version 1.0
|
||
|
||
DISRPL.C
|
||
- changed function PutSn(), BINx(), DoSemiStream(),
|
||
RplDecodeObject() and RplCreateObjView(), added error handling for
|
||
memory allocation failed
|
||
|
||
EMU48.C
|
||
- changed function WinMain(), added disable of TIMER_RESOLUTION
|
||
throttling for Windows 11 and added a more flexible CPU binding
|
||
for the Saturn core emulation thread on Windows Vista and later
|
||
with function GetCurrentProcessorNumber()
|
||
|
||
EMU48.H
|
||
- added _KB definition
|
||
- changed function prototypes
|
||
- extern declaration of global variable and functions
|
||
- removed extern declaration of global function
|
||
- added inline function UpCRC(), new implementation as inline
|
||
function using a polynomial multiplication instead of the earlier
|
||
polynomial table solution which is faster on host CPUs with a
|
||
hardware integer multiplication unit
|
||
|
||
EMU48.DSP
|
||
- added romcrc.c and pngcrc.c sources
|
||
- added "LODEPNG_NO_COMPILE_CRC" to lodepng.c definitions
|
||
|
||
EMU48.RC
|
||
- changed version and copyright
|
||
|
||
FILES.C
|
||
- added global variable for ROM CRC correction
|
||
- changed pbySignatureA[], pbySignatureB[], pbySignatureE[],
|
||
pbySignatureW[] and pbySignatureV[] to the byte pointer array
|
||
bySignature[] and defined signatures as constant
|
||
- changed function PatchRom(), made function public and set flag to
|
||
correct the ROM CRC
|
||
- changed function MapRom() and UnmapRom(), speed optimization
|
||
unpacking/packing ROM image and added reset of ROM patch flag
|
||
- changed function CrcPort2(), made function public, optimized
|
||
memory access and replaced CRC formula by call of function UpCRC()
|
||
- changed function NewDocument(), SaveBackup(), RestoreBackup() and
|
||
CreateRgnFromBitmap(), added error handling for memory allocation
|
||
failed
|
||
- changed function OpenDocument(), simplified file signature check
|
||
- changed function SaveDocument(), adjusted to bySignatureE[]
|
||
|
||
KML.C
|
||
- changed function AddToLog(), optimized implementation
|
||
- changed function DestroyKmlList(), minor optimization
|
||
- changed function CreateKmlList(), added error handling for memory
|
||
allocation failed
|
||
- changed function ParseString(), optimized memory allocation and
|
||
added error handling for memory allocation failed
|
||
- changed function ParseLine(), ParseLines() and ParseBlock(),
|
||
added error handling for memory allocation failed
|
||
- changed function InitKML(), added rebuild of ROM CRC after ROM
|
||
patches
|
||
|
||
LODEPNG.C
|
||
- changed implementation file to LodePNG version 20230410 with
|
||
unmarked typecast patches for x64 compatibility, Copyright (c)
|
||
2005-2023 Lode Vandevenne
|
||
|
||
LODEPNG.H
|
||
- changed header file to LodePNG version 20230410
|
||
|
||
MOPS.C
|
||
- moved function UpCRC() with a new function prototype and
|
||
implementation to EMU48.H
|
||
- changed function Nread(), adjusted to he new prototype of function
|
||
UpCRC()
|
||
- changed function ReadIO(), added CPU slow down for the TBF bit in
|
||
the TCS (0x112) register as workaround for the HP48G-series
|
||
transmit buffer full timeout overflow in the XSEND command and the
|
||
software derivations base on this source code
|
||
|
||
PCH.H
|
||
- added definitions, emum and struct for calling function
|
||
SetProcessInformation()
|
||
|
||
PNGCRC.C
|
||
- new module for generating the PNG CRC32 replacing the CRC
|
||
generation in LODEPNG.C
|
||
|
||
ROMCRC.C
|
||
- new module correcting the ROM CRC after a ROM patch
|
||
|
||
SERIAL.C
|
||
- bugfix in function CommOpen(), global variable dwBytesRead wasn't
|
||
initialized with 0 in all cases
|
||
- bugfix in function CommReceive(), added workaround for ReadFile()
|
||
timeouts to get "Library 1275: XYMODEM v3.2 for S/G" working
|
||
|
||
UDP.C
|
||
- replaced static IN_ADDR by SOCKADDR_IN structure
|
||
- changed function ResetUdp(), invalidate IP address inside
|
||
SOCKADDR_IN structure
|
||
- changed function SendByteUdp(), replaced local SOCKADDR_IN
|
||
by the global static SOCKADDR_IN structure
|
||
|
||
|
||
Service Pack 65 for Emu48 Version 1.0
|
||
|
||
EMU48.C
|
||
- changed function SettingsPeripheralProc(), get the COM port state
|
||
over function CommIsOpen() now
|
||
- changed function SaveChanges(), added document name to MRU list
|
||
- changed function OnFileMruOpen(), modified implementation taking
|
||
care of the SaveChanges() modification adding a filename to the
|
||
MRU list after saving a document
|
||
|
||
EMU48.H
|
||
- changed function prototype
|
||
- extern declaration of global functions
|
||
- removed extern declaration of global variable
|
||
|
||
EMU48.RC
|
||
- changed version and copyright
|
||
|
||
ENGINE.C
|
||
- removed global variable bCommInit
|
||
- changed function CheckSerial(), get the COM port state over
|
||
function CommIsOpen() now
|
||
- changed function WorkerThread(), removed bCommInit setting
|
||
|
||
FILES.C
|
||
- changed function DibNumColors(), CreateBIPalette() and
|
||
DecodeBmp(), marked BITMAPINFOHEADER pointer as unaligned
|
||
- changed function CreateBIPalette() and DecodeBmp(), minor
|
||
optimization at input data check
|
||
- changed function DecodePng(), simplified destination row pointer
|
||
calculation in main loop and removed dead code in function
|
||
cleanup
|
||
|
||
LODEPNG.C
|
||
- changed implementation file to LodePNG version 20220717 with
|
||
unmarked typecast patches for x64 compatibility, Copyright (c)
|
||
2005-2022 Lode Vandevenne
|
||
|
||
LODEPNG.H
|
||
- changed header file to LodePNG version 20220717
|
||
|
||
MOPS.C
|
||
- bugfix in function ReadIO(), the RBF (Receive Buffer Full) bit was
|
||
cleared before the content of the RBR LSB (0x114) and RBR MSB
|
||
(0x115) register was read, so the serial port event thread
|
||
overwrote the RBR register with new data in some conditions
|
||
- bugfix in function WriteIO(), fixed implementation of the EIRU
|
||
bit in the IRC (0x11A) register
|
||
|
||
MRU.C
|
||
- added some remarks
|
||
- added function MruID(), return ID of the given entry
|
||
- changed function MruFilename(), changed function interface writing
|
||
found filename into a buffer instead of returning a pointer to the
|
||
filename
|
||
|
||
PCH.H
|
||
- added __unaligned definition for MSVC6.0 SDK and earlier
|
||
|
||
SERIAL.C
|
||
- added new function CommIsOpen(), return if COM port open
|
||
- bugfix in function CommReceive(), the ReadFile() buffer argument
|
||
was a BYTE** instead of a BYTE* (the wrong argument type was fixed
|
||
by the compiler)
|
||
|
||
|
||
Service Pack 64 for Emu48 Version 1.0
|
||
|
||
DEBUGGER.C
|
||
- bugfix in function EnterBreakpoint(), returned an uninitialized
|
||
address value on empty breakpoint edit control
|
||
- bugfix in function OnDrawBreakWnd(), fixed highlighted background
|
||
color
|
||
|
||
DISASM.C
|
||
- bugfix in function disasm_1() and disasm_8(), fixed decoding of
|
||
r=ss, ss=r and rssEX with ss = 5, 6, 7, D, E or F register select
|
||
|
||
EMU48.C
|
||
- changed function OnContextMenu(), when the context menu was
|
||
generated from the keyboard it opened at a fix position, now when
|
||
the mouse cursor position is inside the client window, at the
|
||
mouse cursor position
|
||
|
||
EMU48.RC
|
||
- changed version and copyright
|
||
|
||
ENGINE.C
|
||
- changed function InitAdjustSpeed(), added critical section for
|
||
writing reference CPU cycles and reference time
|
||
- bugfix in function AdjKeySpeed() and SetSpeed(), removed critical
|
||
section handling for initializing CPU slow down, because this
|
||
section is locked when the CPU emulation thread already slow down
|
||
the CPU speed
|
||
|
||
FETCH.C
|
||
- bugfix in table o81Af2_, o81Af1_ and o81Af0_, replaced o_invalid6
|
||
function pointers by their corresponding opcode function
|
||
- bugfix in table o12_, o11_ and o10_, replaced o_invalid3 function
|
||
pointers by their corresponding opcode function
|
||
|
||
LODEPNG.C
|
||
- changed implementation file to LodePNG version 20210627 with
|
||
unmarked typecast patches for x64 compatibility, Copyright (c)
|
||
2005-2021 Lode Vandevenne
|
||
|
||
LODEPNG.H
|
||
- changed header file to LodePNG version 20210627
|
||
|
||
MOPS.C
|
||
- bugfix in function ReadT2Acc(), moved critical section because
|
||
InitAdjustSpeed() part is already protected
|
||
|
||
SOUND.C
|
||
- bugfix in function SoundOut(), removed critical section handling
|
||
because InitAdjustSpeed() is already protected
|
||
|
||
|
||
Service Pack 63 for Emu48 Version 1.0
|
||
|
||
DISPLAY.C
|
||
- changed function UpdateAnnunciators(), changed function prototype
|
||
with an additional argument to get information which annunciators
|
||
have changed, so only the annunciators which have changed are
|
||
redrawn now
|
||
|
||
EMU48.C
|
||
- changed function OnPaint(), changed call of function
|
||
UpdateAnnunciators() updating all annunciators
|
||
|
||
EMU48.DSP
|
||
- removed external.c sources
|
||
|
||
EMU48.H
|
||
- removed DISP_ANNUN definition
|
||
- changed function prototype
|
||
- removed extern declaration of global functions
|
||
|
||
EMU48.RC
|
||
- changed version and copyright
|
||
|
||
ENGINE.C
|
||
- changed function CheckDisp(), removed assertion with DISP_ANNUN
|
||
definition
|
||
- changed function WorkerThread(), changed call of function
|
||
UpdateAnnunciators() updating all annunciators
|
||
|
||
EXTERNAL.C
|
||
- file deleted
|
||
|
||
FETCH.C
|
||
- changed table o81B_, replaced beep patch opcode o81B1 by
|
||
o_invalid4
|
||
|
||
FILES.C
|
||
- changed function OpenDocument(), when KML script file name is
|
||
longer than the file buffer, skip the name heading until the name
|
||
remainder fits into the buffer, this cause a KML script error with
|
||
the selection of a new KML script instead of a general document
|
||
file read error before
|
||
|
||
KML.C
|
||
- changed function InitKML(), changed warning to error at ROM beep
|
||
patch detection
|
||
|
||
LODEPNG.C
|
||
- changed implementation file to LodePNG version 20200306 with
|
||
unmarked typecast patches for x64 compatibility, Copyright (c)
|
||
2005-2020 Lode Vandevenne
|
||
|
||
LODEPNG.H
|
||
- changed header file to LodePNG version 20200306
|
||
|
||
MOPS.C
|
||
- changed function WriteIO(), the annunciator access variable now
|
||
contain bit coded the annunciators which have changed and is the
|
||
argument for the modified UpdateAnnunciators() function
|
||
|
||
OPCODES.C
|
||
- removed function o81B1() as part of the beep patch
|
||
|
||
OPCODES.H
|
||
- removed extern declaration of function o81B1()
|
||
|
||
|
||
Service Pack 62 for Emu48 Version 1.0
|
||
|
||
DEBUGGER.C
|
||
- added enum type, static variables and static function prototypes
|
||
for trace implementation
|
||
- removed all occurrences of UNREFERENCED_PARAMETER(wParam);
|
||
- changed function NotifyDebugger(), added flush trace buffer
|
||
- changed function Debugger(), added trace implementation in case
|
||
WM_INITDIALOG, WM_DESTROY and WM_COMMAND
|
||
- added functions StartTrace(), StopTrace(), FlushTrace(),
|
||
PrintTrace(), OutTrace(), OnBrowseTraceSettings(),
|
||
TraceSettings(), OnTraceSettings() and OnTraceEnable() for trace
|
||
implementation
|
||
|
||
DISPLAY.C
|
||
- changed function CreateMainBitmap(), changed LoadBitmapFile()
|
||
function call loading a bitmap with realizing a palette
|
||
- changed function CreateAnnunBitmap(), changed LoadBitmapFile()
|
||
function call loading a bitmap without realizing a palette
|
||
|
||
EMU48.C
|
||
- added variable bMouseButton saving if mouse button was pressed
|
||
when mouse cursor was inside a virtual button hit area
|
||
- removed function OnNcHitTest(), replaced by additional
|
||
OnLButtonDown() implementation
|
||
- changed function OnLButtonDown(), added part for windows movement
|
||
when having no title bar prior done over the WM_NCHITTEST message
|
||
handler which caused side effects
|
||
- changed function OnLButtonUp() and OnKeyDown(), added reset of
|
||
variable bMouseButton
|
||
- changed function MainWndProc(), added WM_ENDSESSION handler for
|
||
document saving, WM_CONTEXTMENU calls the context menu only when
|
||
the right mouse button was not pressed over a virtual button hit
|
||
area before, removed the WM_NCRBUTTONUP case and removed the
|
||
WM_NCHITTEST message handler
|
||
|
||
EMU48.DSP
|
||
- added "LODEPNG_NO_COMPILE_ANCILLARY_CHUNKS" to lodepng.c
|
||
definitions
|
||
|
||
EMU48.H
|
||
- changed function prototype
|
||
- extern declaration of global functions
|
||
|
||
EMU48.RC
|
||
- added dialog IDD_TRACE
|
||
- changed menu IDR_DEBUG, added ID_TRACE_SETTINGS and
|
||
ID_TRACE_ENABLE menu items
|
||
- changed version and copyright
|
||
|
||
ENGINE.C
|
||
- changed function Debugger(), added function fnOutTrace() call
|
||
|
||
FILES.C
|
||
- added function CheckForBeepPatch() looking for ROM beep patches at
|
||
known positions
|
||
- bugfix in function NewDocument(), initialize the ROM fingerprint
|
||
after loading the KML script
|
||
- changed function DecodeBmp(), DecodeGif(), DecodePng() and
|
||
LoadBitmapFile(), changed function prototype by adding an argument
|
||
if a palette should realized
|
||
|
||
KML.C
|
||
- bugfix in function ParseLines() and ParseBlocks(), if loading of
|
||
an include file failed the KML script line number at the error
|
||
message was wrong
|
||
- changed function InitKML(), added error check ROM beep patches
|
||
|
||
LODEPNG.C
|
||
- changed implementation file to LodePNG version 20190914 with
|
||
unmarked typecast patches for x64 compatibility, Copyright (c)
|
||
2005-2019 Lode Vandevenne
|
||
|
||
LODEPNG.H
|
||
- changed header file to LodePNG version 20190914
|
||
|
||
RESOURCE.H
|
||
- added definitions
|
||
|
||
|
||
Service Pack 61 for Emu48 Version 1.0
|
||
|
||
EMU48.DSP
|
||
- added lodepng.h and lodepng.c sources
|
||
|
||
EMU48.RC
|
||
- changed version
|
||
|
||
FILES.C
|
||
- added function DecodePng() as wrapper for decoding PNG image files
|
||
- changed function LoadBitmapFile(), added PNG image file support
|
||
- added function EncodeColorBits() returning bitfield position
|
||
encoded color bits
|
||
- bugfix in function CreateRgnFromBitmap(), removed GetObject() call
|
||
for getting the image properties, they are get over a GetDIBits()
|
||
query now, removed creating a memory DC because it's unused and
|
||
added bitfield decoding which is important for the 16 bit (5:6:5)
|
||
color setting
|
||
|
||
KML.C
|
||
- changed function AdjustPixel(), changed function prototype using
|
||
a buffer position instead of device context pixel coordinate to
|
||
locate the adjustable pixel
|
||
- changed function TransparentCircle(), complete new implementation
|
||
with changed function prototype; the prior implementation used the
|
||
GetPixel()/SetPixel() method to adjust the pixel color of a single
|
||
pixel, this method was extremely slow on some PC configurations,
|
||
the current method is creating a byte copy of the complete target
|
||
area, does the pixel adjustments on byte level and finally copy
|
||
the result back to the target device context
|
||
- changed function DrawButton(), adjusted implementation to new
|
||
prototype of function TransparentCircle()
|
||
|
||
LODEPNG.C
|
||
- new module for decoding PNG files LodePNG version 20180611 with
|
||
unmarked typecast patches for x64 compatibility, Copyright (c)
|
||
2005-2018 Lode Vandevenne
|
||
|
||
LODEPNG.H
|
||
- header file for decoding PNG files LodePNG version 20180611,
|
||
Copyright (c) 2005-2018 Lode Vandevenne
|
||
|
||
|
||
Service Pack 60 for Emu48 Version 1.0
|
||
|
||
DISRPL.C
|
||
- changed function DoHexStream() and DoHxs(), removed trailing space
|
||
if data length is zero
|
||
- bugfix in function DoIntStream(), =DOINT stream with zero data
|
||
length crashed decoder
|
||
|
||
EMU48.C
|
||
- bugfix in function OnViewCopy(), fixed unsynchronized GDI
|
||
operations, fixed wrong menu display view when left margin of main
|
||
display is unequal to zero and dependent on the LCD zoom factor
|
||
the bitmap in the clipboard was sometimes too small
|
||
|
||
EMU48.RC
|
||
- changed version and copyright
|
||
|
||
|
||
Service Pack 59 for Emu48 Version 1.0
|
||
|
||
DISPLAY.C
|
||
- splitted nGdiZoom in nGdiXZoom and nGdiYZoom to get the ability
|
||
for different zoom factors in x and y direction
|
||
- added function CreateAnnunBitmap() and DestroyAnnunBitmap(),
|
||
handle a separate annunciator bitmap
|
||
- changed function UpdateMainDisplay(), UpdateMenuDisplay(),
|
||
WriteToMainDisplay() and WriteToMenuDisplay(), modified to the
|
||
separated nGdiXZoom and nGdiYZoom zoom factors
|
||
- bugfix in function ResizeWindow(), added Critical Section for GDI
|
||
access
|
||
|
||
EMU48.C
|
||
- changed function OnPaint(), modified to the separated nGdiXZoom
|
||
and nGdiYZoom zoom factors
|
||
- added function OnTopics() to call help file
|
||
- changed function MainWndProc(), added ID_HELP_TOPICS message
|
||
handler
|
||
|
||
EMU48.H
|
||
- changed window style for disabled title bar, added system menu
|
||
with minimize in task bar
|
||
- extern declaration of global variables and functions
|
||
|
||
EMU48.RC
|
||
- changed IDD_CHOOSEKML, enlarged width of dialog to get an enlarged
|
||
"Current KML Script" combo box
|
||
- changed IDD_KMLLOG, enlarged width of "Title of the Script", "by"
|
||
and "The Author" text boxes
|
||
- added Menuitem Help "Help Topics" in main menu
|
||
- changed version and copyright
|
||
|
||
FILES.C
|
||
- changed function NewDocument(), removed SetWindowLocation() call
|
||
in restore case because on a valid document the window position
|
||
was already restored in function RestoreBackup()
|
||
- changed function GetSaveObjectFilename(), changed function
|
||
behavior with file extensions; the old implementation added the
|
||
default extension always when the file had no extension or the
|
||
given extension wasn't in the file filter list, the actual
|
||
implementation adds the default extension for the case of no
|
||
extension only
|
||
- added function LoadIconFromFile(), load icon file and activate the
|
||
icons
|
||
- added function LoadIconDefault(), activate the window class
|
||
default icons
|
||
|
||
KML.C
|
||
- added keyword "Zoomxy", "Scale" and "Icon" to pLexToken[] table
|
||
- changed function InitGlobal(), added implementation of keyword
|
||
"Scale" and "Icon"
|
||
- changed function InitLcd(), adjusted keyword "Zoom" to the
|
||
separated nGdiXZoom and nGdiYZoom zoom factors, added
|
||
implementation of keyword "Zoomxy" and "Bitmap"
|
||
- changed function KillKML(), added LoadIconDefault() to disable
|
||
custom icons, added DestroyAnnunBitmap() and preset of some global
|
||
variables
|
||
- changed function DrawAnnunciator(), added alternative annunciator
|
||
bitmap
|
||
- added function ResizeMainBitmap(), resize main bitmap and main
|
||
bitmap dependend variables like size, offset, ...
|
||
- changed function InitKML(), added scaling main bitmap
|
||
|
||
KML.H
|
||
- added TOK_ZOOMXY, TOK_SCALE and TOK_ICON definition
|
||
|
||
MOPS.C
|
||
- changed function Npeek() and Nread(), removed conditional jump for
|
||
speed optimization
|
||
|
||
RESOURCE.H
|
||
- added ID_HELP_TOPICS definition
|
||
|
||
|
||
Service Pack 58 for Emu48 Version 1.0
|
||
|
||
DDESERV.C
|
||
- bugfix in function DdeCallback(), improved input data checking and
|
||
avoided multiple DDE data fetch in XTYP_POKE case
|
||
|
||
DEBUGGER.C
|
||
- changed function UpdateStackWnd(), OnStackPush() and OnStackPop(),
|
||
fixed signed/unsigned mismatch
|
||
- bugfix in function OnLButtonUp(), fixed a buffer overflow when
|
||
converting a 3 byte hexadecimal string to variable Chipset.out
|
||
which overwrite the content of variable Chipset.in, fixed a buffer
|
||
overflow when converting a 4 byte hexadecimal string to variable
|
||
Chipset.in which overwrite the following two padding bytes and
|
||
changed method converting a 2 byte hexadecimal string to variable
|
||
Chipset.Bank_FF
|
||
- changed function UpdateProfileWnd(), fixed signed/unsigned
|
||
mismatch and optimized ENG unit search break
|
||
- changed function InfoWoRegister(), changed function prototype to
|
||
DLGPROC
|
||
|
||
DISPLAY.C
|
||
- added variable for additional GDI zoom
|
||
- changed function UpdateMainDisplay(), UpdateMenuDisplay(),
|
||
WriteToMainDisplay() and WriteToMenuDisplay(), replaced BitBlt by
|
||
StretchBlt operation to implement an additional GDI zoom factor
|
||
(there is no noticeable speed difference between BitBlt and
|
||
StretchBlt with a stretching factor of 1)
|
||
- bugfix in function ResizeWindow(), the WM_PAINT message wasn't
|
||
generated by the InvalidateRect() call when the title and menu bar
|
||
was disabled and the client area was empty, so we got a main
|
||
window with zero size which could not be activated any more ->
|
||
issue solved by forcing a menu bar when client area is empty
|
||
|
||
EMU48.C
|
||
- changed szLicence string, updated to the latest revision of the
|
||
GPLv2
|
||
- moved function SetSoundDeviceList() to SNDENUM.C
|
||
- bugfix in function SettingsGeneralProc(), SettingsMemoryProc() and
|
||
SettingsPeripheralProc(), changed function prototype to DLGPROC
|
||
for getting a 64 bit lParam pointer when compiling for x64
|
||
architecture
|
||
- changed function OnPaint(), replaced BitBlt by StretchBlt
|
||
operation at display handling to implement an additional GDI zoom
|
||
factor
|
||
- changed function OnViewSettings(), removed DLGPROC typecasts
|
||
|
||
EMU48.DSP
|
||
- added snddef.h and sndenum.c sources
|
||
|
||
EMU48.H
|
||
- extern declaration of global variable and function
|
||
|
||
EMU48.RC
|
||
- changed IDD_SET_PERIPHERAL, enlarged width of slider
|
||
IDC_SOUND_SLIDER and combo box IDC_SOUND_DEVICE
|
||
- changed version and copyright
|
||
|
||
KML.C
|
||
- changed function InitLcd(), removed Zoom factor 4 limitation
|
||
- changed function KillKML(), added reset of variable nGdiZoom
|
||
- changed function iSqrt(), changed implementation to Heron's method
|
||
for speed optimization
|
||
|
||
SNDDEF.H
|
||
- include files and interface definitions for SNDENUM.C for
|
||
compilers without installed DirectX SDK
|
||
|
||
SNDENUM.C
|
||
- new module with implementation of function SetSoundDeviceList()
|
||
prior located in EMU48.C for sound device enumeration showing the
|
||
full device name used since Windows Vista
|
||
|
||
STACK.C
|
||
- removed include resource.h
|
||
|
||
|
||
Service Pack 57 for Emu48 Version 1.0
|
||
|
||
DEBUGGER.C
|
||
- bugfix in function OnContextMenu(), when the context menu was
|
||
generated from the keyboard it was opened at the wrong position
|
||
- bugfix in function Debugger(), use critical section for secure
|
||
deletion of the last instruction buffer
|
||
|
||
DISMEM.C
|
||
- changed function SetMemRomType(), fixed signed/unsigned mismatch
|
||
|
||
DISPLAY.C
|
||
- changed function ResizeWindow(), optimized implementation now
|
||
works independent from window style and menu bar setting
|
||
|
||
DISRPL.C
|
||
- changed function PutSn(), minor optimization
|
||
- changed function DoHexStream(), DoIntStream(), DoBint(), DoReal(),
|
||
DoERel(), DoCmp(), DoECmp(), DoChar(), DoCStr(), DoHxs(),
|
||
DoIdnt(), DoLam(), DoRomp(), Semi() and DoFlashPtr(), added
|
||
UNREFERENCED_PARAMETER statement
|
||
- changed function DoERel(), made function static
|
||
- changed function Getfp(), fixed signed/unsigned mismatch
|
||
|
||
EMU48.C
|
||
- added global variable dwTColor and dwTColorTol for the background
|
||
transparency color matching
|
||
- added global variable hRgn to hold a region resource handle for
|
||
a transparent background bitmap
|
||
- added global variables bTitleBar, bShowTitle, bShowMenu and
|
||
bClientWinMove
|
||
- added Critical Section initialization
|
||
- added function UpdateWindowBars(), helper function to update state
|
||
of title and menu bar
|
||
- changed function SettingsGeneralProc(), added "Show Title" and
|
||
"Show Menu" checkbox handling
|
||
- changed function SettingsPeripheralProc(), added
|
||
UNREFERENCED_PARAMETER statement
|
||
- changed function OnPaint(), added UpdateWindowBars() call
|
||
- changed function OnInitMenu(), added MRU list update
|
||
- added function OnContextMenu(), context menu implementation
|
||
- added function OnNcHitTest(), when no title bar check if mouse
|
||
position is in client not over a button area
|
||
- changed function MainWndProc(), minor change in WM_PALETTECHANGED
|
||
implementation and added WM_CONTEXTMENU, WM_NCRBUTTONUP and
|
||
WM_NCHITTEST message handler
|
||
- changed function WinMain(), changed method of memory leak
|
||
detection by adding _CrtSetDbgFlag() at begin and removing
|
||
_CrtDumpMemoryLeaks() at end of program
|
||
|
||
EMU48.H
|
||
- added window styles definition
|
||
- changed function prototypes
|
||
- extern declaration of global variables and function
|
||
|
||
EMU48.RC
|
||
- changed IDD_SET_GENERAL, added "Show Title" and "Show Menu"
|
||
checkbox
|
||
- added menu IDM_MENU
|
||
- changed version and copyright
|
||
|
||
ENGINE.C
|
||
- bugfix in function SaveInstrAddr(), added critical section to be
|
||
sure that last instruction buffer is still available
|
||
|
||
FETCH.C
|
||
- added typecast to all pLnk entries for compatibility with C++
|
||
compiling on GCC 4.8.1
|
||
|
||
FILES.C
|
||
- defined abs() and labs() as intrinsic
|
||
- changed function DibNumColors(), fixed typecast
|
||
- changed function DecodeGif(), changed function prototype by adding
|
||
an argument overwritten by the transparent color if found
|
||
- changed function LoadBitmapFile(), adjusted to new prototype of
|
||
function DecodeGif()
|
||
- added function AbsColorCmp() and LabColorCmp(), compare colors
|
||
with tolerance
|
||
- added function CreateRgnFromBitmap(), create opaque bitmap region
|
||
|
||
KML.C
|
||
- added keyword "SysItem" to pLexToken[] table
|
||
- changed function InitGlobal(), added implementation of keyword
|
||
"Color"
|
||
- changed function RunLine(), added implementation of keyword
|
||
"SysItem"
|
||
- changed function KillKML(), added reset of variables hRgn,
|
||
dwTColor and dwTColorTol
|
||
- added function MouseIsButton() to check if mouse over button area
|
||
- changed function MouseMovesTo(), changed _ASSERT implementation to
|
||
make sure that class cursor is NULL and use function
|
||
MouseIsButton() to select cursor type now
|
||
|
||
KML.H
|
||
- added TOK_SYSITEM definition
|
||
- changed structure KmlToken, replaced TCHAR array szName[20] with
|
||
LPCTSTR szName pointer
|
||
- added MouseIsButton() function prototype
|
||
|
||
MRU.C
|
||
- changed all function argument types from INT to UINT
|
||
- removed global variables hMruMenu and nMruPos
|
||
- removed all update menu calls in this module and made functions
|
||
robust against non initialized MRU list and ID index out of range
|
||
- changed function GetMenuPosForId(), changed function prototype so
|
||
the resulting menu handle and menu position aren't global
|
||
variables any more
|
||
- changed function MruInit(), changed return value from FALSE to
|
||
TRUE for success and changed implementation like used in the PPC
|
||
emulator variants
|
||
- changed function MruUpdateMenu(), changed function prototype by
|
||
adding the HMENU argument for updating the selected menu and added
|
||
initialization prior done in function MruInit()
|
||
- changed function MruWriteList(), if there are no entries don't
|
||
write the "FileCount" setting any more
|
||
|
||
PCH.H
|
||
- added _WINSOCK_DEPRECATED_NO_WARNINGS definition
|
||
- added GCLP_HCURSOR, SetClassLongPtr, GetClassLongPtr and ULONG_PTR
|
||
definitions for MSVC6.0 SDK and earlier
|
||
|
||
REDEYE.C
|
||
- changed function CreateCorrectionBits(), fixed signed/unsigned
|
||
mismatch
|
||
|
||
RESOURCE.H
|
||
- added definitions
|
||
|
||
SERIAL.C
|
||
- changed function CommOpen(), fixed signed/unsigned mismatch
|
||
|
||
SETTINGS.C
|
||
- changed function ReadSettings() and WriteSettings(), added item
|
||
"ShowTitle", "ShowMenu" and "ClientWinMove" in section [Emulator]
|
||
in the INI-File
|
||
|
||
STACK.C
|
||
- changed function SetBcd(), fixed signed/unsigned mismatch
|
||
- bugfix in function RPL_GetComplex(), function arguments nMantLen
|
||
and nExpLen hadn't been used
|
||
|
||
SYMBFILE.C
|
||
- changed function RplLoadTable(), made optimizations and added
|
||
integrity checks
|
||
|
||
|
||
Service Pack 56 for Emu48 Version 1.0
|
||
|
||
DEBUGGER.C
|
||
- removed INSTRSIZE definition
|
||
- changed function GetAddr(), made function more general by adding
|
||
address range check and the ability of decoding a symbolic entry
|
||
into an address
|
||
- bugfix in function OnSetCursor(), on "Activation follows mouse"
|
||
enabled child dialogs lost focus when cursor moved over parent
|
||
debugger dialog
|
||
- changed function Debugger(), removed initialization of global
|
||
variable wInstrSize
|
||
- changed function EnterAddr(), changed parameter storage from
|
||
static variable to window user data and replaced address decoder
|
||
code by GetAddr() function call
|
||
- changed function EnterBreakpoint(), replaced address decoder code
|
||
by GetAddr() function call and so added decoding a symbolic entry
|
||
into an address
|
||
- bugfix in function LoadMemData(), forgot to check if file content
|
||
fit into Saturn address range, loading now stops also after last
|
||
Saturn address written
|
||
- changed function SaveMemData(), added assertion for Saturn address
|
||
verification
|
||
- bugfix in function DebugMemLoad() and DebugMemSave(), adjusted to
|
||
new prototype of function GetAddr() and so added checking if the
|
||
given addresses are in the Saturn address range because Saturn
|
||
read/write functions don't do the range check; this also cause a
|
||
change in behavior, on empty address fields the operation fails
|
||
and the dialog still remains open
|
||
|
||
EMU48.C
|
||
- changed function SetSoundDeviceList(), replaced "Standard Audio"
|
||
device ID from constant to definition
|
||
- bugfix in function SettingsGeneralProc(), on "Activation follows
|
||
mouse" enabled debugger dialog maybe got focus even if it's not
|
||
the last active one
|
||
- bugfix in function SettingsPeripheralProc(), restart the sound
|
||
engine by calling the clean up and initialization functions now
|
||
- changed function OnFileNew(), removed call of function
|
||
SaveBackup() which is already a part of function NewDocument()
|
||
- changed function OnFileNew(), OnFileOpen(), OnFileMruOpen(),
|
||
OnFileSave(), OnFileSaveAs() and OnFileClose(), switched detection
|
||
of document is available from variable pbyRom (ROM image loaded)
|
||
to variable bDocumentAvail
|
||
- changed function OnViewCopy(), removed MONOCHROME source code part
|
||
- changed function WinMain(), added sound engine initialization and
|
||
clean up
|
||
|
||
EMU48.RC
|
||
- changed version and copyright
|
||
|
||
ENGINE.C
|
||
- initialized variable wInstrSize with size of last instruction
|
||
array (the circular buffer can hold (wInstrSize-1) instructions)
|
||
- bugfix in function WorkerThread(), moved sound engine
|
||
initialization and clean up from SM_RUN state to main function,
|
||
this prevents a non responding Saturn CPU emulation when changing
|
||
from SM_SLEEP to SM_RUN state during sound engine initialization
|
||
|
||
FETCH.C
|
||
- made typedef of jump table struct constant, so the const keyword
|
||
was removed from all references of JMPTAB
|
||
- changed function EvalOpcode(), minor code optimization
|
||
|
||
FILES.C
|
||
- bugfix in function PatchRom(), removed limitation that patch file
|
||
must have 6 characters minimum, fixed a buffer overflow when end
|
||
of patch file consists of white space characters, recalculate
|
||
CRC's only on address patch written and return failture on syntax
|
||
errors now
|
||
|
||
PCH.H
|
||
- added GWLP_USERDATA, SetWindowLongPtr, GetWindowLongPtr and
|
||
LONG_PTR definitions for MSVC6.0 SDK and earlier
|
||
|
||
SETTINGS.C
|
||
- changed function ReadSettings() and WriteSettings(), added item
|
||
"LastInstrBufSize" in section [Debugger] in the INI-File
|
||
|
||
SOUND.C
|
||
- bugfix in function DestroyWaveThread(), the WM_QUIT message may
|
||
failed and so the sound message thread wasn't shut down
|
||
- changed function SoundOpen(), added additional check if the sound
|
||
device support the necessary audio format
|
||
|
||
STACK.C
|
||
- added function Trim(), create a trimmed copy of the input string
|
||
- added function SetZInt(), contain implementation of prior function
|
||
RPL_SetZInt()
|
||
- changed function RPL_SetZInt(), wrapper for function SetZInt() to
|
||
trim data before decoding
|
||
- added function SetBcd(), contain implementation of prior function
|
||
RPL_SetBcd()
|
||
- changed function RPL_SetBcd(), wrapper for function SetBcd() to
|
||
trim data before decoding
|
||
- changed function RPL_SetComplex(), create a trimmed working copy
|
||
before decoding the outline brackets and because of the changed
|
||
function RPL_SetBcd() the real number arguments are accepted with
|
||
white spaces around now
|
||
- removed disabled function IsRealNumber(), it was more or less
|
||
functional compatible with actual modified function RPL_SetBcd()
|
||
|
||
TIMER.C
|
||
- removed UNIX_0_TIME definition
|
||
|
||
UDP.C
|
||
- changed function SendByteUdp(), replaced malloc() by _alloca()
|
||
call for UNICODE wchar to char string translation to get rid of
|
||
freeing the allocated memory manually
|
||
|
||
|
||
Service Pack 55 for Emu48 Version 1.0
|
||
|
||
DISMEM.C
|
||
- prepared for C++ compiling
|
||
|
||
EMU48.C
|
||
- replaced global variable lThreadId with local variable dwThreadId
|
||
- added global variable with the identifier for the waveform-audio
|
||
output device
|
||
- added function SetSoundDeviceList(), helper function for filling
|
||
sound device combo box with waveform-audio output devices
|
||
- changed function SettingsPeripheralProc(), removed sound radio
|
||
button handlers and added implementation of sound device combo box
|
||
- bugfix in function OnViewScript(), ROM image change wasn't handled
|
||
|
||
EMU48.DSP
|
||
- added sound.c sources
|
||
|
||
EMU48.H
|
||
- extern declaration of global variables and functions
|
||
- removed extern declaration of global variable
|
||
|
||
EMU48.RC
|
||
- changed IDD_SET_PERIPHERAL dialog, removed "Speaker" and "Wave"
|
||
radio buttons and added "Device" combo box in the sound section
|
||
- changed version
|
||
|
||
ENGINE.C
|
||
- added global variable bEnableSlow for global disabling slowing
|
||
down the CPU
|
||
- added global variable bSoundSlow slowing down the CPU core at
|
||
sound output
|
||
- changed function AdjustSpeed() and InitAdjustSpeed, added sound
|
||
slow down implementation
|
||
- changed function WorkerThread(), added sound engine control
|
||
|
||
EXTERNAL.C
|
||
- removed global variable bWaveBeep
|
||
- moved global variable dwWaveVol to module sound.c
|
||
- removed functions BeepWave(), BeepWin9x() and Beeper()
|
||
- changed function External() and RCKBp(), removed PC speaker
|
||
support and used function SoundBeep() instead of Beeper() for beep
|
||
output over sound card
|
||
|
||
FILES.C
|
||
- bugfix in function MapRom(), modified minimum file size detection
|
||
and fixed memory deallocation bug in memory allocation error case
|
||
- changed function MapPort2(), improved file size validation and
|
||
freeing of file mapping in error case
|
||
- changed function UnmapPort2(), added ability to free incomplete
|
||
file mapping
|
||
|
||
KML.C
|
||
- bugfix in function KillKML(), key mapping state table wasn't
|
||
cleared at the end
|
||
|
||
MOPS.C
|
||
- changed function ReadIO(), make only DEBUG_SERIAL output if
|
||
bUpdate is true to distinguish between peek-access from debugger
|
||
(no output) and read-access from opcode evaluation (with output)
|
||
|
||
OPCODES.C
|
||
- changed function o801(), call beeper handler function on beeper
|
||
port change
|
||
|
||
RESOURCE.H
|
||
- added definition
|
||
- removed IDC_SOUND_SPEAKER and IDC_SOUND_WAVE
|
||
|
||
SETTINGS.C
|
||
- bugfix in function GetRegistryString(), ignored target buffer size
|
||
when copying the default to the target string buffer
|
||
- changed function ReadSettings() and WriteSettings(), added item
|
||
"WaveDeviceId" and "WaveTime" and deleted item "WaveBeep" in
|
||
section [Emulator] in the INI-File
|
||
|
||
SOUND.C
|
||
- new module for native beeper emulation over wave output device
|
||
|
||
|
||
Service Pack 54 for Emu48 Version 1.0
|
||
|
||
DDESERV.C
|
||
- prepared for C++ compiling
|
||
|
||
DEBUGGER.C
|
||
- prepared for C++ compiling
|
||
- added new function OnCodeFindPCO(), search for a PCO object in the
|
||
code window
|
||
- changed function Debugger(), added context menu commands handler
|
||
in the WM_COMMAND section
|
||
- changed function OnFindOK(), added downwards search direction
|
||
- changed function Find(), added and changed message handler for the
|
||
"Previous" and "Next" buttons
|
||
|
||
DISPLAY.C
|
||
- prepared for C++ compiling
|
||
|
||
EMU48.C
|
||
- prepared for C++ compiling
|
||
- added function OnCopyData() as WM_COPYDATA message handler
|
||
implementation for changing the state file to the given state file
|
||
name
|
||
- changed function MainWndProc(), added WM_COPYDATA message handler
|
||
- changed function WinMain(), expanded single instance case by
|
||
transmitting the given state file name to the already opened
|
||
program instance
|
||
|
||
EMU48.H
|
||
- prepared for C++ compiling
|
||
- added WM_COPYDATA identifier definition
|
||
|
||
EMU48.RC
|
||
- changed IDD_FIND, added a "Previous" button for previous search,
|
||
shorten the text of the "Find Next" button to "Next" and changed
|
||
the ID of the next search button
|
||
- added "Previous PCO" and "Next PCO" menu entries in debugger
|
||
"Code" context menu
|
||
- changed version and copyright
|
||
|
||
EXTERNAL.C
|
||
- prepared for C++ compiling
|
||
|
||
FETCH.C
|
||
- prepared for C++ compiling
|
||
|
||
FILES.C
|
||
- prepared for C++ compiling
|
||
- changed function MapRom() and UnmapRom(), replaced VirtualAlloc()
|
||
with malloc() memory request
|
||
- changed function SaveBackup() and RestoreBackup(), improved
|
||
document available detection and added check at port data copy if
|
||
port source buffer is allocated
|
||
|
||
I28F160.C
|
||
- prepared for C++ compiling
|
||
|
||
KML.C
|
||
- prepared for C++ compiling
|
||
- added global variable wKeybLocId to hold the keyboard layout input
|
||
locale at begin of KML loading
|
||
- added global variable bLocaleInc for checking if locale block
|
||
content already included
|
||
- added keyword "Locale" to pLexToken[] and token TOK_LOCALE to
|
||
eIsGlobalBlock[] table
|
||
- changed function ParseLine() and ParseBlock(), preset szLexString
|
||
variable with NULL after freeing
|
||
- changed function IncludeLines() and IncludeBlocks(), changed
|
||
function prototype by adding a boolean argument for selecting the
|
||
text message "Including" or "Parsing" in the log file
|
||
- bugfix in function ParseLines(), return a TOK_NONE line for an
|
||
empty block instead of a NULL pointer which regular stands for a
|
||
syntax error
|
||
- bugfix in function ParseLines() and ParseBlocks(), changed
|
||
function prototype by adding a boolean argument for selecting the
|
||
mode "include" or "parse" for the next lines or blocks and
|
||
verifying the "Include" argument was incomplete and may caused
|
||
memory leaks at error condition
|
||
- bugfix in function ParseBlock(), verifying the block commmand
|
||
argument was incomplete and may caused a memory leak at error
|
||
condition
|
||
- changed function ParseBlocks(), changed function prototype by
|
||
adding a boolean argument if an "End" token is also valid and
|
||
added implementation of block "Locale"
|
||
- changed function KillKML(), added reset of variables wKeybLocId
|
||
and bLocaleInc
|
||
- changed function ReleaseButton(), for speed optimization skip
|
||
function if button is already released
|
||
- bugfix in function LoadKMLGlobal(), fixed a memory leak caused by
|
||
the error condition that expected block command is a string
|
||
- changed function InitKML(), read and added current keyboard layout
|
||
input locale setting to log file text
|
||
|
||
KML.H
|
||
- added TOK_LOCALE definition
|
||
|
||
MRU.C
|
||
- prepared for C++ compiling
|
||
|
||
PCH.H
|
||
- added include malloc.h
|
||
|
||
RESOURCE.H
|
||
- added definitions
|
||
- removed IDC_FIND_CASE
|
||
|
||
RPL.C
|
||
- prepared for C++ compiling
|
||
|
||
STACK.C
|
||
- prepared for C++ compiling
|
||
|
||
SYMBFILE.C
|
||
- prepared for C++ compiling
|
||
|
||
|
||
Service Pack 53 for Emu48 Version 1.0
|
||
|
||
DEBUGGER.C
|
||
- removed structure MODEL_MAP_T, variables pbyNoMEM, MemMap[],
|
||
pbyMapData, dwMapDataSize and pMapping, the implementation behind
|
||
moved to module DISMEM.C
|
||
- changed function SetMappingMenu(), changed to DISMEM.C
|
||
implementation and added control of memory data menu items
|
||
- changed function GetMemCurAddr(), OnMemGoAdr(), OnKeyUpDown() and
|
||
OnKeyPlusMinus(), variable dwMapDataSize isn't global any more,
|
||
use function GetMemDataMask() instead
|
||
- changed function InitMemMap(), ViewMemWnd() and OnFindOK(),
|
||
changed to DISMEM.C implementation
|
||
- changed function ViewCodeWnd(), set disassembler to memory mapped
|
||
mode
|
||
- bugfix in function OnDblClick(), fixed buffer overflow when
|
||
converting a 2 byte hexadecimal string to a byte and added an
|
||
update of code window
|
||
- changed function Debugger(), changed disassembler mode setting and
|
||
added initialization of RPL object viewer get nibble function in
|
||
WM_INITDIALOG message and added calls of "Load Memory Data..." and
|
||
"Save Memory Data..." handling functions
|
||
- bugfix in function UpdateRplObjViewWnd(), show entry point names
|
||
only in mapped mode and end address for RPL object viewer depend
|
||
on the actual memory mapping mode and with the design change to
|
||
the DISMEM.C implementation in all debugger and disassembler
|
||
related parts, the RPL object viewer also works in all memory
|
||
mapping modes properly now
|
||
- added functions OnBrowseLoadMem(), OnBrowseSaveMem(),
|
||
LoadMemData(), SaveMemData(), GetAddr(), DebugMemLoad(),
|
||
OnMemLoadData(), DebugMemSave() and OnMemSaveData() to handle the
|
||
Load/Save Memory Data feature
|
||
|
||
DISASM.C
|
||
- removed global variable disassembler_map
|
||
- removed functions rn_map(), rn_rom(), rn_ram(), rn_port1() and
|
||
rn_port2()
|
||
- changed function read_nibble(), call function GetMemNib() from the
|
||
new module DISMEM.C for mapping mode memory access and made
|
||
function static again
|
||
|
||
DISMEM.C
|
||
- new module for accessing memory data for debug view purpose
|
||
|
||
DISPLAY.C
|
||
- changed function GetLineCounterGray() to static
|
||
|
||
DISRPL.C
|
||
- the get nibble function is not hard referenced as read_nibble()
|
||
call any more, it's now called over RplReadNibble() function
|
||
pointer
|
||
- changed function PrintTail(), expanded to handle 6 digit addresses
|
||
|
||
DISRPL.H
|
||
- added extern declaration of RplReadNibble() function pointer
|
||
|
||
EMU48.C
|
||
- changed function Disasm(), replaced the radio button
|
||
implementation for the memory mapping mode by a combo box
|
||
solution; the combo box solution don't work with the HP48 module
|
||
names any more, it now use the memory controller names used in the
|
||
debugger memory viewer for a more general approach for the non
|
||
HP48 calculator models
|
||
- changed function WinMain(), added more flexible CPU binding for
|
||
the Saturn core emulation thread on Windows NT4.0 and later
|
||
|
||
EMU48.DSP
|
||
- added dismem.c sources
|
||
|
||
EMU48.H
|
||
- replaced old "memory module definitions" by the enum MEM_MAPPING
|
||
- extern declaration of global functions
|
||
- removed extern declaration of global variables
|
||
|
||
EMU48.RC
|
||
- changed IDD_DISASM dialog, replaced the radio buttons for the
|
||
memory mapping mode by a more general combo box
|
||
- added dialogs IDD_DEBUG_MEMSAVE and IDD_DEBUG_MEMLOAD
|
||
- added "Load Memory Data..." and "Save Memory Data..." menu entries
|
||
in debugger "Memory" context menu
|
||
- changed version
|
||
|
||
KML.C
|
||
- bugfix in function ReloadButtons(), ON key button wasn't handled
|
||
|
||
RESOURCE.H
|
||
- added several definitions
|
||
- deleted some radio button definitions from the IDD_DISASM dialog
|
||
|
||
TIMER.C
|
||
- changed function SetHP48Time(), time calculation now work properly
|
||
for host system dates before 1970/01/01 and after 2106/02/07
|
||
|
||
|
||
Service Pack 52 for Emu48 Version 1.0
|
||
|
||
DEBUGGER.C
|
||
- changed function ViewMemWnd(), removed initialized but unused
|
||
variable
|
||
|
||
DISPLAY.C
|
||
- changed DIBPIXEL4() and DIBPIXEL3() define, generates the same
|
||
code on MSVC6.0 but made it GCC4 compiler compatible
|
||
|
||
DISRPL.C
|
||
- changed function RplCreateObjView(), defined end pointer also as
|
||
constant
|
||
|
||
EMU48.C
|
||
- added property sheet page handlers SettingsGeneralProc(),
|
||
SettingsMemoryProc() and SettingsPeripheralProc()
|
||
- removed function SettingsProc(), replaced by the property sheet
|
||
page handler functions
|
||
- bugfix in function OnDropFiles(), changed function prototype to
|
||
the correct structure type of dropped file names and initialized
|
||
the bSuccess variable for the case the wNumFiles variable is 0
|
||
- added function PropSheetProc(), callback function for setup the
|
||
property sheet
|
||
- changed function OnViewSettings(), now creating a propery sheet
|
||
instead of a settings dialog
|
||
- changed function MainWndProc(), made correct type cast to argument
|
||
of function OnDropFiles()
|
||
- changed function WinMain(), replaced multiple class name usage
|
||
with atom variable, moved read settings before window creation,
|
||
and added check for setting "SingleInstance" to switch to an
|
||
already running program instance instead of creating a new one
|
||
|
||
EMU48.H
|
||
- extern declaration of global variable and function
|
||
|
||
EMU48.RC
|
||
- split IDD_SETTINGS dialog into the property pages IDD_SET_GENERAL,
|
||
IDD_SET_MEMORY and IDD_SET_PERIPHERAL and added item
|
||
"Single Instance" in the "General" property page
|
||
- removed IDD_SETTINGS dialog
|
||
- changed version and copyright
|
||
|
||
FILES.C
|
||
- bugfix in function DecodeBmp() and DecodeGif(), a 2nd bitmap load
|
||
allocated and bound a 2nd palette to the main window, now only the
|
||
1st bitmap (mostly the KML background bitmap) bound his palette to
|
||
the main window
|
||
|
||
KML.C
|
||
- changed table pLexToken[], defined table as constant and changed
|
||
last token id table preset from constant number to member of token
|
||
id enumerator
|
||
- bugfix in function ParseString(), decoding the \" sequence as
|
||
quotation mark inside a string was incomplete, so every single '\'
|
||
character was also removed
|
||
|
||
MRU.C
|
||
- changed function MruUpdateMenu(), changed variable type of
|
||
variable hMenu
|
||
- changed function MruReadList(), removed initialized but unused
|
||
variable
|
||
|
||
RESOURCE.H
|
||
- removed IDD_SETTINGS definition
|
||
- added some definitions
|
||
|
||
SETTINGS.C
|
||
- changed function ReadSettings(), moved CPU speed setting to
|
||
MainWndProc()
|
||
- changed function ReadSettings() and WriteSettings(), added item
|
||
"SingleInstance" in section [Emulator] in the INI-File
|
||
|
||
UDP.C
|
||
- added function ResetUdp(), reset UDP address
|
||
- bugfix in function SendByteUdp(), fixed memory leak at error
|
||
condition and optimized IP address decoding
|
||
|
||
|
||
Service Pack 51 for Emu48 Version 1.0
|
||
|
||
DDESERV.C
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
|
||
DEBUGGER.C
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
- changed function ToggleBreakpoint() and EditBreakpoint(), minor
|
||
code optimization purging breakpoint
|
||
- changed function Debugger(), removed all UpdateWindowStatus()
|
||
function calls
|
||
- bugfix in function LoadBreakpointList(), added check of breakpoint
|
||
entries against breakpoint table size
|
||
|
||
DISRPL.C
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
- bugfix in function BCDx(), fixed possible uninitialized bExpflag
|
||
variable
|
||
- bugfix in function DoRrp(), fixed possible uninitialized bErr
|
||
variable
|
||
|
||
EMU48.C
|
||
- removed global variable hHeap
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
- changed function SettingsProc(), added infrared printer settings
|
||
- changed function SaveChanges(), detect if document is available
|
||
now over the variable bDocumentAvail and not over the variable
|
||
pbyRom any more; in the case of an illegal KML script there maybe
|
||
a document loaded, but no ROM image, so pbyRom will be NULL in
|
||
this case
|
||
- renamed function UpdateWindowStatus() to OnInitMenu() and modified
|
||
it to a WM_INITMENU message handler
|
||
- changed function OnFileNew() and WinMain(), removed all
|
||
UpdateWindowStatus() function calls
|
||
- bugfix function OnViewScript(), when quitted the dialog "Choose
|
||
Your KML Script" with the Cancel button when chosen an invalid
|
||
script the function returned without the possibility of saving the
|
||
current document; now the function try to reload the primarily KML
|
||
script and if this also fails then the current document is saved
|
||
- changed function MainWndProc(), added WM_INITMENU message handler
|
||
and call of _CrtDumpMemoryLeaks() at end of program to detect
|
||
malloc() memory leaks
|
||
|
||
EMU48.DSP
|
||
- changed the resource natural language to English
|
||
- added redeye.c and udp.c sources
|
||
- added library Ws2_32.lib
|
||
|
||
EMU48.H
|
||
- removed extern declaration of hHeap
|
||
- extern declaration of global variables and functions
|
||
- removed declaration of global function UpdateWindowStatus()
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
|
||
EMU48.RC
|
||
- changed version and copyright
|
||
|
||
ENGINE.C
|
||
- added global variable nOpcSlow to hold the number of CPU opcodes
|
||
slowing down the CPU core
|
||
- changed function AdjustSpeed(), added CPU opcode slow down
|
||
implementation
|
||
- added function InitAdjustSpeed(), initialize CPU slow down part
|
||
if necessary
|
||
- changed function AdjKeySpeed() and SetSpeed(), use function
|
||
InitAdjustSpeed() to initialize the CPU slow down variables
|
||
- changed function SwitchToState(), removed all UpdateWindowStatus()
|
||
function calls
|
||
|
||
EXTERNAL.C
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
|
||
FILES.C
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
- changed TREENODE structure, added prev element for a double linked
|
||
list
|
||
- changed function PatchNibble(), added prev element handling
|
||
- bugfix in function UpdatePatches(), in the case an address was
|
||
patched more than one time, the ROM was patched in wrong order and
|
||
moreover the original content of the double patched ROM address
|
||
was destroyed
|
||
- changed function CrcRom(), if no ROM available return without
|
||
modifying the checksum
|
||
- changed function MapRom(), removed using of memory mapped files
|
||
which has the major advantage that packed ROM files are also valid
|
||
now
|
||
- changed function UnmapRom(), adjusted to changed MapRom() function
|
||
- changed function ResetDocument(), OpenDocument(),
|
||
SaveDocumentAs(), SaveBackup(), RestoreBackup() and ResetBackup(),
|
||
removed all UpdateWindowStatus() function calls
|
||
- changed function ResetDocument(), NewDocument(), OpenDocument()
|
||
and RestoreBackup(), added state variable if document is available
|
||
- bugfix in function OpenDocument(), added check of KML script name
|
||
length against target buffer size
|
||
- changed function DibNumColors(), changed function prototype from
|
||
UINT to WORD return
|
||
- changed function CreateBIPalette(), changed variable
|
||
UINT nNumColors to WORD wNumColors to avoid variable overflow
|
||
loading palNumEntries of LOGPALETTE structure
|
||
|
||
I28F160.C
|
||
- added functions WrDirtyPage(), EraseBlock(), WriteByte() and
|
||
ReadByte() for access to the ROM buffer
|
||
- changed function WrStateE8C(), WrState40D(), WrState20C(),
|
||
WrState30C() and RdStateData(), changed implementation using the
|
||
new ROM buffer access functions
|
||
|
||
IO.H
|
||
- added LBR and LBO bit definitions
|
||
|
||
KEYMACRO.C
|
||
- changed function OnToolMacroNew(), OnToolMacroPlay() and
|
||
OnToolMacroStop(), removed all UpdateWindowStatus() function calls
|
||
- changed function EventThread(), added minimum key hold time for
|
||
keyboard macro playing and subtract minimum key hold time from
|
||
saved waiting time, this is more accurate when the user has
|
||
selected a different minimum key hold time than the default one
|
||
- changed function KeyMacroRecord(), now saving the complete waiting
|
||
time including the key state holding time, the key state holding
|
||
time is now subtract in the player function thread EventThread()
|
||
- changed function OnToolMacroNew(), removed adding the key state
|
||
holding time to the reference time, this is not necessary any more
|
||
|
||
KML.C
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
- changed function ParseLines(), BOOL expression was missing in main
|
||
while() loop, worked because TOK_NONE is 0
|
||
- bugfix in function ParseBlock(), string argument wasn't freed in
|
||
error case
|
||
- changed function KillKML(), removed UpdateWindowStatus() function
|
||
call
|
||
- changed function LoadKMLGlobal(), used wrong variable type for
|
||
variable eToken
|
||
|
||
MOPS.C
|
||
- added function ReadT2Acc(), reading timer2 value with checking for
|
||
CPU speed measurement behaviour
|
||
- bugfix in function ReadIO(), added implementation of the LED and
|
||
ELBE bit in the LCR (0x11C) register and of the LBO bit in the LBR
|
||
(0x11D) register
|
||
- changed function ReadIO(), the timer2 register content is now read
|
||
by function ReadT2Acc() to analyze the read access scheme
|
||
- bugfix in function WriteIO(), added implementation of the ELBE bit
|
||
in the LCR (0x11C) register and of the LBO bit in the LBR (0x11D)
|
||
register
|
||
|
||
MRU.C
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
|
||
OPS.H
|
||
- bugfix in function FASTPTR(), longest opcode calculation from
|
||
buffer size was wrong, so MMU boundary fixup wasn't working
|
||
properly
|
||
|
||
PCH.H
|
||
- added include winsock2.h
|
||
|
||
REDEYE.C
|
||
- new module for decoding the redeye data stream for a HP82240B
|
||
printer
|
||
|
||
RESOURCE.H
|
||
- added some definitions
|
||
|
||
RPL.C
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
|
||
SETTINGS.C
|
||
- changed function ReadSettings() and WriteSettings(), added item
|
||
"KeyMinDelay" in section [Macro] and the items "Address" and
|
||
"Port" in section [IrPrinter] in the INI-File
|
||
|
||
STACK.C
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
- bugfix in function RPL_GetBcd(), fixed possible uninitialized
|
||
bExpflag variable
|
||
- bugfix in function OnStackCopy(), fixed possible uninitialized
|
||
uClipboardFormat variable in DOCSTR case
|
||
|
||
SYMBFILE.C
|
||
- replaced all HeapAlloc() with malloc() memory requests
|
||
|
||
UDP.C
|
||
- new module for sending a byte over UDP
|
||
|
||
|
||
Service Pack 50 for Emu48 Version 1.0
|
||
|
||
DEBUGGER.C
|
||
- changed table MemMap[], replaced Chipset_t memory pointer Port0,
|
||
Port1 and Port2 by new variables
|
||
|
||
DISASM.C
|
||
- changed function rn_ram(), rn_port1() and rn_port2(), replaced
|
||
Chipset_t memory pointers Port0, Port1 and Port2 by new variables
|
||
|
||
DISRPL.C
|
||
- cosmetic changes
|
||
|
||
EMU48.C
|
||
- changed function Disasm(), added if opcode should be interpreted
|
||
as PCO
|
||
|
||
EMU48.H
|
||
- extern declaration of global variables
|
||
- added RplGetName(a) definition for DLL version linking
|
||
|
||
EMU48.RC
|
||
- changed IDD_DEBUG_SETTINGS, replaced "Ok" with "OK" and removed
|
||
accelerator keys from "OK" and "Cancel"
|
||
- changed IDR_DEBUG_MEM, added several accelerator keys
|
||
- changed version and copyright
|
||
|
||
ENGINE.C
|
||
- changed function WorkerThread(), replaced structure Chipset_t
|
||
element Port2 by new variable
|
||
|
||
FILES.C
|
||
- added global variables to hold the memory module pointer prior
|
||
located in the Chipset_t structure
|
||
- bugfix in function PatchRom(), if first patch address in a line
|
||
was outside the ROM area, the emulator crashed with an access
|
||
violation, removed the patch address wrap around
|
||
- changed function ResetDocument(), NewDocument(), OpenDocument(),
|
||
SaveDocument(), SaveBackup(), RestoreBackup() and ResetBackup(),
|
||
replaced Chipset_t memory pointer Port0, Port1 and Port2 by new
|
||
variables
|
||
|
||
KML.C
|
||
- changed function RunLine(), removed warning when compiling for x64
|
||
architecture
|
||
- changed function InitKML(), pointed out that a packed ROM image is
|
||
an error
|
||
|
||
MOPS.C
|
||
- changed function MapP0(), MapP1() and MapP2(), replaced Chipset_t
|
||
memory pointer Port0, Port1 and Port2 by new variables
|
||
|
||
OPCODES.C
|
||
- bugfix in function o807(), a pressed ON key prevented the CPU
|
||
going into shutdown mode
|
||
|
||
OPS.H
|
||
- bugfix in function FASTPTR(), longest opcode is 21 nibbles long
|
||
and fixed problem executing an opcode over a MMU boundary
|
||
- changed function Nunpack(), new coding for speed optimization,
|
||
this solved also a bug in the code optimizer of VS2010 (the
|
||
optimizer generated wrong code, another possible workaround for
|
||
this problem was declaring the function argument "BYTE *a" as
|
||
"volatile BYTE *a")
|
||
|
||
PCH.H
|
||
- added INVALID_FILE_ATTRIBUTES definition
|
||
- enabled WinXP style under VS2005, VS2008 and VS2010
|
||
|
||
RPL.C
|
||
- changed function Metakernel(), replaced structure Chipset_t
|
||
element Port1 by new variable
|
||
|
||
SETTINGS.C
|
||
- changed function WriteReg() and DelReg(), changed function
|
||
protoytypes to make them compatible with the functions
|
||
WritePrivateProfileString() and WritePrivateProfileInt()
|
||
- changed function GetRegistryInt(), changed function protoytype to
|
||
make it compatible with function GetPrivateProfileInt()
|
||
|
||
TIMER.C
|
||
- changed function SetHP48Time(), replaced structure Chipset_t
|
||
element Port0 by new variable
|
||
|
||
TYPES.H
|
||
- changed structure Chipset_t, replaced Port0, Port1 and Port2 with
|
||
a DWORD placeholder each, because when compiling for x64
|
||
architecture these 3 byte pointers grow up to 8 bytes and destroy
|
||
the state file structure
|
||
|
||
|
||
Service Pack 49 for Emu48 Version 1.0
|
||
|
||
DISRPL.C
|
||
- bugfix in function BCDx(), detection for exponent writing was
|
||
wrong -> on negative exponents sometimes the result format was
|
||
wrong, on positive exponents sometimes the result itself was wrong
|
||
|
||
EMU48.C
|
||
- changed function OnFileMruOpen(), on success move selected entry
|
||
to top of MRU table
|
||
|
||
EMU48.DSP
|
||
- changed to REGISTRY (HKCU/Software/Emu48) saving
|
||
|
||
EMU48.H
|
||
- extern declaration of global variable and function
|
||
|
||
EMU48.RC
|
||
- changed version
|
||
|
||
MRU.C
|
||
- changed function MruAdd(), added entry moving to top when the
|
||
entry is already in the table
|
||
- added function MruMoveTop(), move MRU entry to top of table
|
||
|
||
STACK.C
|
||
- bugfix in function RPL_GetBcd(), detection for exponent writing
|
||
was wrong -> on negative exponents sometimes the result format was
|
||
wrong, on positive exponents from E12 until E14 with 12 digit
|
||
mantissa setting the result itself was wrong
|
||
- added helper functions RPL_GetComplex() and RPL_SetComplex() to
|
||
handle complex number objects
|
||
- added function DoComplex() to handle a complex number object
|
||
- changed function OnStackCopy(), added complex number support
|
||
- changed function OnStackPaste(), added flag to disable automatic
|
||
clipboard object detection and added complex number support
|
||
|
||
|
||
Service Pack 48 for Emu48 Version 1.0
|
||
|
||
DDESERV.C
|
||
- bugfix in function DdeCallback(), readded delay at XTYP_POKE after
|
||
ON key state change switching calculator on, bug introduced in
|
||
SP37 and made ON key hold time variable
|
||
|
||
DEBUGGER.C
|
||
- added backup breakpoint list
|
||
- added function LoadSymbTable(), loading symbol table defined in
|
||
INI-File
|
||
- added function GetMemCurAddr(), get address of cursor in memory
|
||
window
|
||
- changed function ViewCodeWnd(), function now returns the line
|
||
number with the pc, adjusted address to Saturn address area, added
|
||
label line if address is a known entry and added a check if the 5
|
||
nibble sequence on an address should be interpreted as PCO
|
||
- changed function ViewCodeWnd() and InfoIntr(), adjusted to new
|
||
prototype of function disassemble()
|
||
- changed function UpdateCodeWnd(), if pc should shown at first line
|
||
but the pc is the begin of a PCO, show PCO address as first line
|
||
instead, added handling for label line
|
||
- changed function OnKeyF5(), for label line support changed
|
||
detection of PC line
|
||
- changed function OnCodeGoAdr(), removed limitation to Saturn
|
||
address area, limitation now done in function ViewCodeWnd()
|
||
- added function OnKeyPlusMinus(), +/- key handler for memory window
|
||
- changed function OnKeyCodeWnd(), added handling for label line and
|
||
removed limitation going back before address 0
|
||
- changed function OnDrawCodeWnd(), added draw style for label line
|
||
- changed function Debugger(), added initialization and
|
||
uninitialization of symbol table and bold font, added +/- key
|
||
handling for memory window, added Debugger Settings to the system
|
||
menu and added call of "RPL Object Viewer" handling function
|
||
- changed function OnFindOK(), in the case of a search match update
|
||
also the RPL object viewer window
|
||
- added functions for "RPL Object Viewer" dialog box
|
||
- added functions for Debugger Settings handling
|
||
- changed function EnterAddr(), added decoding a symbolic entry into
|
||
an address and expanded hex address range from 6 to 8 digits
|
||
- changed function InfoIntr(), added label line if instruction
|
||
address is a known entry
|
||
- bugfix in function InfoWoRegister(), changed WM_COMMAND message
|
||
handler from IDOK to IDCANCEL to make the close button working
|
||
properly
|
||
- added functions SaveBreakpointList() and
|
||
CreateBackupBreakpointList() to handle the backup breakpoint list
|
||
|
||
DEBUGGER.H
|
||
- extern declaration of global functions
|
||
|
||
DISASM.C
|
||
- added variable disassembler_symb to enable symbolic address
|
||
disassembly
|
||
- changed function read_nibble(), made function public
|
||
- changed function append_imm_nibble(), if the immediate data is 5
|
||
nibbles long and the decoded data is a known symbolic entry, show
|
||
the symbolic name instead of the data
|
||
- added new function append_numaddr(), numeric output of an address
|
||
- changed function append_addr(), if the address is a known symbolic
|
||
entry, show the symbolic name instead of the address
|
||
- bugfix in function append_r_addr(), in some rare conditions the
|
||
program counter value got larger than 0xFFFFF, if the calculated
|
||
absolute address is a known symbolic entry show the symbolic name
|
||
instead of the relative address, in the case of showing the
|
||
relative address the corresponding absolute address is now printed
|
||
by this function and not by the function append_pc_comment(), so
|
||
there's no difference between VIEW_SHORT and VIEW_LONG any more
|
||
- removed function append_pc_comment(), implementation is obsolete
|
||
now because absolute address printing is now done in function
|
||
append_r_addr()
|
||
- changed function disasm_8() and disassemble(), changed function
|
||
prototypes by removing the view argument
|
||
|
||
DISPLAY.C
|
||
- made global variable public static
|
||
- changed DIBPIXEL4() define, generates the same code on MSVC6.0 but
|
||
made it GCC compiler compatible
|
||
|
||
DISRPL.C
|
||
- new module for RPL object decoding
|
||
|
||
DISRPL.H
|
||
- header file for RPL object decoding part
|
||
|
||
EMU48.C
|
||
- bugfix in function OnDropFiles() and OnObjectLoad(), readded
|
||
delay after ON key state change switching calculator on, bug
|
||
introduced in SP37 and made ON key hold time variable
|
||
- changed function OnObjectLoad(), changed load object warning
|
||
message
|
||
- changed function Disasm(), adjusted to new prototype of function
|
||
disassemble()
|
||
- changed function WinMain(), added non modal "RPL Object Viewer"
|
||
dialog box in main message handler
|
||
- bugfix in function WinMain(), getting the full path name of the
|
||
current state file failed in the case of an empty name buffer
|
||
|
||
EMU48.DSP
|
||
- added disrpl.c and symbfile.c sources
|
||
|
||
EMU48.H
|
||
- removed extern declaration of pbyLcd
|
||
- removed VIEW_SHORT and VIEW_LONG definition
|
||
- changed function prototypes
|
||
- extern declaration of global variables and functions
|
||
|
||
EMU48.RC
|
||
- changed IDD_WRITEONLYREG, changed ID of OK control from IDOK to
|
||
IDCANCEL
|
||
- changed IDD_SETTINGS, replaced "Ok" with "OK" and removed
|
||
accelerator keys from "OK" and "Cancel"
|
||
- added dialogs IDD_DEBUG_SETTINGS and IDD_RPLVIEW
|
||
- added "Rpl Object Viewer..." menu entry in debugger "Memory"
|
||
context menu
|
||
- changed version and copyright
|
||
|
||
FILES.C
|
||
- changed function GetCutPathName(), removed warning when compiling
|
||
for x64 architecture
|
||
- changed function IsDataPacked(), made a DWORD pointer copy of the
|
||
VOID pointer argument to avoid type casting, this generates the
|
||
same code on MSVC6.0 but made it GCC compiler compatible
|
||
- bugfix in function OpenDocument(), if document reload was refused
|
||
the function returned no success -> this caused trouble in
|
||
function OnFileMruOpen() removing the MRU entry of this document
|
||
- bugfix in function SaveBackup(), a backup of the debugger
|
||
breakpoint list wasn't created
|
||
- bugfix in function RestoreBackup(), the debugger breakpoint list
|
||
wasn't restored so the breakpoints got lost when saving the state
|
||
file and added preserving debugger open state, this feature was
|
||
lost as a result of a bugfix in an earlier version
|
||
- changed function GetOpenFilename(), added file filter for all
|
||
Emu48 specific filenames which is default, changed filter names
|
||
and removed model specific file extension selection
|
||
- changed function GetSaveAsFilename(), changed filter names and use
|
||
small size characters for file extensions
|
||
- added function DecodeBmp(), contain the BMP image file decoder
|
||
prior located in function LoadBitmapFile() and added check of
|
||
bitmap file size
|
||
- added functions ReadGifByte(), ReadGifWord() and DecodeGif() for
|
||
decoding GIF image files
|
||
- bugfix in function LoadBitmapFile(), check for a valid file handle
|
||
was missing, moved BMP image file decoder to function DecodeBmp()
|
||
and added GIF image file support
|
||
|
||
KEYBOARD.C
|
||
- changed function KeyboardEvent(), made key switch time variable
|
||
|
||
KML.C
|
||
- changed szText variable qualifier from LPTSTR to LPCTSTR
|
||
- added keyword "IfMem" to pLexToken[] table
|
||
- added token TOK_IFMEM to eIsBlock[] table
|
||
- changed function CreateKmlList(), adjusted to new prototype of
|
||
function GetStringParam()
|
||
- added function UpdateScriptList(), filling the KML script combo
|
||
box with all found script titles and select the current used one
|
||
- changed function ChooseKMLProc(), call function UpdateScriptList()
|
||
to update the KML script combo box now
|
||
- removed function FatalError()
|
||
- bugfix in function ParseToken(), modifying the
|
||
script buffer content isn't allowed
|
||
- changed function InitLex(), adjusted to constant pointer of
|
||
variable szText
|
||
- bugfix in function ParseString(), replaced error text
|
||
- bugfix in function IncludeLines(), removed fatal error message
|
||
text and adjusted to constant pointer of variable szText
|
||
- bugfix in function ParseLines(), in some cases parsing hadn't
|
||
stopped with an error inside a block with an unreferenced include
|
||
file and removed a fatal error message text
|
||
- bugfix in function ParseBlock(), block argument checking generated
|
||
wrong error messages in the case of syntax errors
|
||
- bugfix in function IncludeBlocks(), removed fatal error message
|
||
text and adjusted to constant pointer of variable szText
|
||
- changed function ParseBlocks(), removed "Invalid block." message
|
||
text and made some code optimizations calling the function
|
||
FatalError()
|
||
- changed function InitGlobal(), changed some punctuation and
|
||
capital letters
|
||
- changed function InitButton(), source code improvement checking
|
||
the size of button array
|
||
- changed function RunLine(), added implementation of "IfMem"
|
||
command
|
||
- changed function GetStringParam(), changed return variable
|
||
qualifier from LPTSTR to LPCTSTR
|
||
- bugfix in function ReloadButtons(), global variable bKeyPressed
|
||
wasn't updated
|
||
|
||
KML.H
|
||
- added TOK_IFMEM definition
|
||
|
||
PCH.H
|
||
- added INVALID_SET_FILE_POINTER definition
|
||
|
||
RESOURCE.H
|
||
- added definitions for Debugger Settings and RPL object viewer
|
||
handling
|
||
|
||
RPL.C
|
||
- renamed definition DOEREAL to DOEREL and adjusted usage in
|
||
function RPL_SkipOb() and RPL_ObjectSize()
|
||
- bugfix in function RPL_SkipOb() and RPL_ObjectSize(), the object
|
||
at address 0x02BAA was always interpreted as =DOACPTR, a
|
||
constant-length object consisting of two 5-nibble addresses, on
|
||
the HP48S series the object is interpreted as =DOEXT1, an object
|
||
with 5-nibble length information followed by data
|
||
|
||
SETTINGS.C
|
||
- changed function ReadSettings() and WriteSettings(), added item
|
||
"Symbolic" in section [Disassembler] and added items "WakeupDelay"
|
||
and "KeyMinDelay" in section [Emulator] in the INI-File
|
||
|
||
STACK.C
|
||
- bugfix in function OnStackPaste(), readded delay after ON key
|
||
state change switching calculator on and made ON key hold time
|
||
variable
|
||
|
||
SYMBFILE.C
|
||
- new module for loading external symbols from a Saturn3 linker file
|
||
|
||
|
||
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 delimiter
|
||
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 dependent 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
|