Skip to content

Releases: suzukiplan/z80

Version 1.10.0

13 Dec 05:40
e392676
Compare
Choose a tag to compare
  • Abolish FP functions (NOTE: Destructive change)
    • Eliminate FP methods that register callback functions as explicit function pointers
    • In principle, std::function should be used
    • If you defined -DZ80_NO_FUNCTIONAL, std::function should not be used, and use function pointer explicity.
      • This is a remedy for the unavailability of std::function in the Baremetal environment of the RaspberryPi, etc.
      • Alternatively, it may be desirable to define this in an environment with severe performance constraints.
  • Added compile option -DZ80_NO_EXCEPTION to not throw exceptions
  • Add wtc.fetchM and clock test case for MSX
  • Add compile flags for performance:
    • Z80_CALLBACK_WITHOUT_CHECK ... Omit the check process when calling consumeClock callback
    • Z80_CALLBACK_PER_INSTRUCTION ... Calls consumeClock callback on an instruction-by-instruction basis (NOTE: two or more instructions when interrupting)
    • Z80_UNSUPPORT_16BIT_PORT ... Reduces extra branches by always assuming the port number to be 8 bits
  • optimize checkConditionFlag (do not use branch)
  • optimize rotate instructions
  • optimize flag set/reset

Version 1.9.3

12 Jul 01:00
f789c41
Compare
Choose a tag to compare
  • Add compile flags for performance:
    • -DZ80_DISABLE_DEBUG ... disable setDebugMessage method
    • -DZ80_DISABLE_BREAKPOINT ... disable addBreakPoint and addBreakOperand methods
    • -DZ80_DISABLE_NESTCHECK ... disable addCallHandler and addReturnHandler methods
  • The return value of consumeClock was returning the number of clocks consumed, but this was changed to void because it was redundant.
  • Add the constructor without arguments.
  • Add an execute method without expected clocks
  • optimize acqauire register-pointer and register procedure
  • optimize bit calculation
  • optimize checkConditionFlags

Version 1.9.2

20 Jan 02:05
32dc731
Compare
Choose a tag to compare

bugfix:

  • The value of the upper 8 bits of the port number of the immediate I/O operands (IN A, (n) and OUT (n), A) when executed in 16-bit port mode has been changed from register B to A. (issue: #54 )

Version 1.9.1

07 Jan 14:37
ebade12
Compare
Choose a tag to compare
  • Corrected a degrade in version 1.9.0 #52
    • INI, INIR, IND and INDR -> post decrement the B register (revert to 1.8.0)
    • OUTI, OTIR, OUTD and OTDR -> pre-decrement the B register (keep 1.9.0)

Version 1.9.0

07 Jan 12:33
253627b
Compare
Choose a tag to compare
  • Modify the timing of decrementing the B register with the repeat I/O operands (INI, INIR, IND, INDR, OUTI, OTIR, OUTD and OTDR). (NOTE: Destructive change)
    • before
      • execute IN/OUT
      • B = B - 1
    • after
      • B = B - 1
      • execute IN/OUT
    • Related Issue: #51

Version 1.8.0

23 Oct 08:21
4533434
Compare
Choose a tag to compare
  • Make strict the registers conditions at callback time (NOTE: Destructive change specification)
    • see the details: #49
  • When a runtime error occurs, such as executing an instruction that not exists, a crash used to occur, but now it throws a std::runtime_error exception.
  • add new FP methods:
    • addBreakPointFP
    • addBreakOperandFP
    • addReturnHandlerFP
    • addCallHandlerFP
  • add new setCallback methods:
    • setupMemoryCallback (split from setupCallback)
    • setupDeviceCallback (split from setupCallback)
    • setupMemoryCallbackFP (split from setupCallbackFP)
    • setupDeviceCallbackFP (split from setupCallbackFP)
  • Implicit call the callback setter methods (with FP), when a function pointer that is not template is explicitly specified when a callback setter methods (without FP) was called.

Version 1.7.1

18 Oct 12:27
4ea5859
Compare
Choose a tag to compare

A bug that prevented addBreakOperand from working as expected has been addressed.

Version 1.7.0

18 Oct 04:06
c83809a
Compare
Choose a tag to compare
  • Destructive change specification of in/out callback:
    • before: 2nd argument is unsigned char
      • std::function<unsigned char(void*, unsigned char)> in
      • std::function<void(void*, unsigned char, unsigned char)> out
    • after: 2nd argument is unsigned short
      • std::function<unsigned char(void*, unsigned short)> in
      • std::function<void(void*, unsigned short, unsigned char)> out
  • Add an argument returnPortAs16Bits to the constructor to specify whether the port should receive 16-bit
  • Add a constructor without set callbacks
  • Add the set callbacks method: setupCallback and setupCallbackFP
    • setupCallback ... using std::function
    • setupCallbackFP ... using function pointer
  • Add the set callback as function ponter methods:
    • setDebugMessageFP
    • setConsumeClockFP
  • Optimize performance: BreakOperands and BreakPoints
    • before: liner search the target address/opcode
    • after: binary search the target address/opcode

Version 1.6.0

16 Oct 12:27
f1e4def
Compare
Choose a tag to compare
  • Use std::function ... constructor, addBreakPoint, addBreakOperand, setDebugMessage, setConsumeClockCallback, addReturnHandler, addCallHandler
  • Support multibyte (with prefix) instructions at addBreakOperand
  • Change specification of addBreakOperand callback
    • befofe: z80.addBreakOperand(operandNumber, [](void* arg) { ... }
    • after: z80.addBreakOperand(operandNumber, [](void* arg, unsigned char* opcode, int opcodeLength) { ... }
  • Destructive change specification of removeBreakPoint:
    • before: specify function pointer for remove
    • after: specify address number for remove
  • Destructive change specification of removeBreakOperand:
    • before: specify function pointer for remove
    • after: specify operand number for remove
  • Destructive change specification of setDebugMessage for reset:
    • before: z80.setDebugMessage(NULL)
    • after: z80.resetDebugMessage()
  • Destructive change specification of setConsumeClockCallback for reset:
    • before: z80.setConsumeClockCallback(NULL)
    • after: z80.resetConsumeClockCallback()
  • Destructive change specification - removed following methods:
    • removeCallHandler
    • removeReturnHandler
  • remove warning: implicit conversion changes signedness: 'unsigned char' to 'signed char' [-Werror,-Wsign-conversion]

Version 1.5.0

11 Sep 04:13
86289f9
Compare
Choose a tag to compare
  • Implemented several undocumented instructions of ED instruction set.
  • bugfix: Corrected opcode ED70 behavior
    • IN F, (C) -> IN (C)
  • bugfix: Corrected opcode ED71 behavior
    • OUT (C), F -> OUT (C),0