Emu71 v1.10 is released. Emu71 is an emulator for the HP71B calculator. It base on the sources of the famous HP calculator emulator Emu48 and is published under the GPL. The emulator is running on all Win32 platforms.

Emu71 v1.10 Changelog:


DEBUGGER.C
- bugfix in function AddPortChip(), showed wrong HPIL mailbox size,
bug introduced in v1.09 when saving the internal HPIL CPU state

DISPLAY.C
- added function SetAnnunBitmap(), setting a created annunciator
bitmap

EMU71.C
- bugfix in function OnViewCopy(), fixed unsynchronized GDI
operation

EMU71.DSP
- added lodepng.h and lodepng.c sources

EMU71.H
- extern declaration of global function

EMU71.RC
- changed version and copyright

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

HPIL.H
- added wTalkerFrame variable saving the last talker frame
- added bySrqEn variable saving the SRQ acknowledge flag

HPILBUF.C
- bugfix in OutSetFrame(), fixed deadlock by adding a timeout for
the case not being active talker

HPILCMD.C
- changed function TransmitFrame(), added Remote implementation
for HP-IL Interface Status Byte as controller and parallel poll
memory implementation addressing myself
- changed function enter_bytes(), optimized ETO/ETE detection and
added ETE handling after single data byte and NRD frame
- changed function end_listen(), optimized ETO/ETE detection and
added ETE return to EOT received status message
- bugfix in function execmd15(), at case 3 "set SOT response" added
status SRQ acknowledge flag handling and parallel poll SRQ
handling
- bugfix in function execmd(), at case 1 "frame class" added frame
type checking when operating as device

HPILDEV.C
- changed function DeviceInit(), changed initialization of device
ID and added initialization of parallel poll, local mode, last
talker frame and SRQ acknowledge flag
- bugfix in function class_doe(), as active talker a set SRQ bit in
the DOE frames wasn't preserved, added talker ETE implementation
and last received data frame variable must be set as listener
only, otherwise frames to other listener overwrite this variable
- bugfix in function class_cmd(), added PPE, PPD, PPU and GTL frame
implementation, changed the REN frame implementation: REN switch
from 'local mode' to the newly created 'remote enabled mode' and a
following LAD frame switch from the 'remote enabled' to the
'remote mode', expanded NRE frame implementation with cleaning up
the internal state register
- changed function class_rdy(), added last talker frame saving,
status of SRQ acknowledge flag and expanded SST implementation
with parallel poll SRQ handling
- bugfix in function DeviceFrame(), added SRQ bit in frame only if
SRQ is not acknowledged by reading the HP-IL status and added IDY
implementation for parallel poll

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()
- bugfix in function DrawAnnunciator(), used wrong device context on
external annunciator bitmap for getting background pixel color
(buggy implementation only worked with external bitmaps having a
white background color)
- changed function ResizeMainBitmap(), added annunciator resize
handling for annunciator definitions inside main bitmap

LODEPNG.C
- new module for decoding PNG files LodePNG version 20180910 with
unmarked typecast patches for x64 compatibility, Copyright (c)
2005-2018 Lode Vandevenne

LODEPNG.H
- header file for decoding PNG files LodePNG version 20180910,
Copyright (c) 2005-2018 Lode Vandevenne


http://hp.giesselink.com/emu71.htm

http://www.emucr.com/2018/12/emu71-v110.html