Coder Social home page Coder Social logo

zero-emulator's People

Contributors

arjunnair avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zero-emulator's Issues

Does not start on Win8

Error in event log:
Application: Zero.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack:
at ZeroWin.Form1..ctor()
at ZeroWin.Program.Main()

(directx was installed from ms site, but issue still persists)

Bug - Bumpy.tap crashes Zero

LOAD "", using "Bumpy.tap" (get from WOS), will make Zero crash hard, and exit to windows.

NOTES:
Auto Load: OFF
Auto Play/Stop: ON
Fast Load: OFF
Edge Load: ON

Support SNA saving

SNA is used by hardware devices, like DIVMMC, and it would be helpful to support this format, specially when one wants to quickly test something on real hardware.

Crash after sleep or hibernation

After windows 10 sleeps or hibernates, graphical interface no longer works and the program aborts.

NOTE:
I have reported this before and apparently it was fixed, but now it's back again.

Load Symbols ... Should parse the symbol value in any of the formats supported by the Emulator

The emulator supports decimal and hex ($FFFF format).
Hopefully in the near future it will also suport HEX (#FFFF format).

However, CSV value column parsing is only accepting a decimal value.
This value parsing should be coherent across all features of the Emulator.

I would also like to ask for a new feature: to also support parsing regular assembly language value listings, like the ones generated by Pasmo, that uses the EQU keyword, instead of a comma. (should be an easy thing to implement)

Pasmo sample:

BLACK EQU 00000H
BLUE EQU 00001H
CYAN EQU 00005H
GREEN EQU 00004H
MAGENTA EQU 00003H
RED EQU 00002H
WHITE EQU 00007H
YELLOW EQU 00006H
BRIGHT EQU 00040H
FLASH EQU 00080H

NOTE: Pasmo uses yet another format for HEX number, with a trailing H.
If that could also be supported accross the Emulator it would be great.

Saving preferences does not keep display size

If we go to: Tools -> Preferences -> Display

There is a drop-down for "Window Size:" and no matter what we set it to, and making sure we "Save", it won't keep the setting for the next run/launch.

Watch Memory tool, should support size or type

The most obvious problems is looking at a byte or word value, due to the byte ordering.

The bare minimum, I would say are 3 types:

  • Char
    Value representation, should be shown in decimal, Hex and as Character, all simultaneously.
    Alternatively run time selection of visual format, during creation and/or directly in the watch table.
    ( this allows to have a single value column for all watched variables.

  • Byte (signed or unsigned)
    Value representation, should be shown in decimal or Hex, simultaneously.
    Alternatively run time selection of visual format, during creation and/or directly in the watch table.

WARNING: you may need to provide a different type for signed versus unsigned

  • Word
    Value representation, should be shown in decimal or Hex, simultaneously.
    Alternatively run time selection of visual format, during creation and/or directly in the watch table.

WARNING: you may need to provide a different type for signed versus unsigned

However, it would be ideal, if we could watch an ARRAY (of any of these types), by allowing to select a size (different from 1, the default)
This would allow to watch Arrays and also as rudimentary data Struct visualization.

TIP: An Array, could be visualized as sub list of rows, of N elements/lines of that selected type, i.e. one element per row.

Support loading of symbols for debug

It would be very useful to be able to define a text file with a list of symbols, so that debugger memory locations for CALL, JP, JR, ... and memory (variables) could be replaced to aid debugging.

Sample listing of symbols
image

Then if symbols are loaded, we would get:

CALL BALLB
JR NZ, KBEND
JP EXIT

instead of:

CALL 25011
JR NZ, 24827
JP 24834

It would also be very nice to show labels in monitor window, column "address", next to it's value, using existing symbol definitions. It could be used to document ROM entry points too.

Byte Count for Data Blocks in File Browser is Incorrect

The number of bytes displayed for a data block in the file browser is always two bytes more than the actual size of the data block. This can be recreated easily by loading a .tap or .tzx with a loading screen. The size will be displayed as 6914 bytes instead of 6912.

Support ZX Printer

Support at least printer functionality when it relates to LPRINT, i.e. simple text and user defined chars.

[Feature Request] Add options to control creation of log file

Whenever I start Zero by double-clicking an associated file like a .tzx or .z80, it creates a ZeroLog.txt file in the directory where the TZX or Z80 snapshot file is located.
Can you please provide an option to turn off the creation of this file and / or place them in a single location e.g. in a Zero folder in my APPDATA folder or C:\ProgramData\Zero or similar?

Joystick settings are forgotten on quit

Zero.exe 0.7.1
Even if I set as Input Devices>Joystick
joy1: SPEED-LINK Competition Pro
emulates: Kempston
and Save, on next Zero.exe restart these info will be lost and I have to reconfigure the input device every time.

Incorrect full screen aspect ratio

Even with option to keep aspect ratio in fullscreen... it appears incorrect here (Windows 10 x64 14393.576, 1080p 75Hz). Looks a little bit squashed vertically...

Is is possible to properly reference resources int the project/solution ?

i.e. making the references relative to the project -
VS can't find them ;/ :

Error CS1719 Error opening Win32 resource file 'C:\Users\arjun\Documents\Zero-Emulator\ZiggyWin\ZiggyWin\zeroIconResource.res' -- 'Could not find a part of the path 'C:\Users\arjun\Documents\Zero-Emulator\ZiggyWin\ZiggyWin\zeroIconResource.res'.' ZeroWin C:\Users\user01\Downloads\zxsp\Zero-Emulator-master\ZiggyWin\ZiggyWin\CSC 1 Active

image

Support screen recording into animated GIF image format

Zero already allows us to save a spectrum session using a RZX format.

But without an emulator running this is not very useful for web use.

Being able to either convert an RZX into an Animated GIF, with palette minimized to spectrum 15 colors (to save space), would be very useful to generate Animated GIFs to show Spectrum "video" content online, with little effort.

Better yet, would be to be able to select between RZX or GIF format, and use the same GUI features used to save an RZX, to actually save an Animated GIF, for web use,

Feature: Support Hex better in memory viewer

If the debugger is in Hex Number mode, the memory viewer, should default to show 16 bytes per line.

Ideally, memory viewer should allow to resize the "bytes" column into any width, and adjust the number of bytes we would see per line, hence also adjust the "Address" column stride factor, and the width of the "Characters " column too.

NOTE: Changing either "bytes" or "characters" column widths, should have the same side-effects, as defined above.

WARNING: while adjusting these widths, the top most visible line, should be reasonably maintained (we we are no in the beginning of the memory view), so that it starts in a multiple of the current width, without straying way from what the user is currently looking at (besides the multiple or reminder of the width).

Unable to run emulator from Visual Studio 2017

I am able to run zero.exe when built from VS2017 by double-clicking on the exe from file explorer. However, I am unable to run from visual studio as it crashes (an exception) when instantiating Form1. I've installed the DirectX SDK. Is there something I am doing wrong?

Crash loading some TZX and Z80

Here are the files: https://1drv.ms/u/s!ApMUGr0cuN39-kpb5rRoosOT-eSF

They make Zero 0.7.1 crash instantly with error:

Le informazioni su come richiamare il debug JIT (Just-In-Time) anziché questa finestra
sono riportate in fondo al messaggio.

************** Testo dell'eccezione **************
System.IndexOutOfRangeException: Indice oltre i limiti della matrice.
   in Peripherals.Z80Loader.LoadZ80(Stream fs)
   in Peripherals.Z80Loader.LoadZ80(String filename)
   in ZeroWin.Form1.LoadZXFile(String filename)
   in ZeroWin.Form1.openFileMenuItem1_Click(Object sender, EventArgs e)
   in System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   in System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
   in System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   in System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   in System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
   in System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
   in System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   in System.Windows.Forms.Control.WndProc(Message& m)
   in System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   in System.Windows.Forms.ToolStrip.WndProc(Message& m)
   in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Assembly caricati **************
mscorlib
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Zero
    Versione assembly: 1.0.0.0
    Versione Win32: 1.0.0.0
    Base di codice: file:///C:/Users/Luca/Zero/Zero.exe
----------------------------------------
System.Windows.Forms
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8750 (QFE.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Speccy
    Versione assembly: 1.0.0.0
    Versione Win32: 1.0.0.0
    Base di codice: file:///C:/Users/Luca/Zero/Speccy.DLL
----------------------------------------
Microsoft.DirectX.DirectInput
    Versione assembly: 1.0.2902.0
    Versione Win32: 5.04.00.2904
    Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.DirectInput/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectInput.dll
----------------------------------------
System.Windows.Forms.resources
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_it_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
Peripherals
    Versione assembly: 1.0.0.0
    Versione Win32: 1.0.0.0
    Base di codice: file:///C:/Users/Luca/Zero/Peripherals.DLL
----------------------------------------
System.Core
    Versione assembly: 3.5.0.0
    Versione Win32: 3.5.30729.8763 built by: WinRel
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
Microsoft.DirectX
    Versione assembly: 1.0.2902.0
    Versione Win32: 5.04.00.2904
    Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.dll
----------------------------------------
System.Configuration
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
mscorlib.resources
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
ZeroSound
    Versione assembly: 1.0.0.0
    Versione Win32: 1.0.0.0
    Base di codice: file:///C:/Users/Luca/Zero/ZeroSound.DLL
----------------------------------------
Microsoft.DirectX.DirectSound
    Versione assembly: 1.0.2902.0
    Versione Win32: 5.04.00.2904
    Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.DirectSound/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectSound.dll
----------------------------------------
Microsoft.VisualC
    Versione assembly: 8.0.0.0
    Versione Win32: 8.00.50727.9268
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualC/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualC.dll
----------------------------------------
Microsoft.DirectX.Direct3D
    Versione assembly: 1.0.2902.0
    Versione Win32: 9.05.132.0000
    Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.Direct3D/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.Direct3D.dll
----------------------------------------
Microsoft.DirectX.Direct3DX
    Versione assembly: 1.0.2911.0
    Versione Win32: 9.12.589.0000
    Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2911.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
----------------------------------------

************** Debug JIT **************
Per attivare il debug JIT, è necessario impostare il valore
jitDebugging nella sezione system.windows.forms del file di configurazione
dell'applicazione o del computer (machine.config).
L'applicazione inoltre deve essere compilata con il debug
attivato.

Ad esempio:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Quando il debug JIT è attivato, tutte le eccezioni non gestite
vengono inviate al debugger JIT registrato nel computer,
anziché essere gestite da questa finestra di dialogo.


Le informazioni su come richiamare il debug JIT (Just-In-Time) anziché questa finestra
sono riportate in fondo al messaggio.

************** Testo dell'eccezione **************
System.IndexOutOfRangeException: Indice oltre i limiti della matrice.
   in Peripherals.Z80Loader.LoadZ80(Stream fs)
   in Peripherals.Z80Loader.LoadZ80(String filename)
   in ZeroWin.Form1.LoadZXFile(String filename)
   in ZeroWin.Form1.openFileMenuItem1_Click(Object sender, EventArgs e)
   in System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
   in System.Windows.Forms.ToolStripButton.OnClick(EventArgs e)
   in System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
   in System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
   in System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
   in System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
   in System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
   in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   in System.Windows.Forms.Control.WndProc(Message& m)
   in System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   in System.Windows.Forms.ToolStrip.WndProc(Message& m)
   in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Assembly caricati **************
mscorlib
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Zero
    Versione assembly: 1.0.0.0
    Versione Win32: 1.0.0.0
    Base di codice: file:///C:/Users/Luca/Zero/Zero.exe
----------------------------------------
System.Windows.Forms
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8750 (QFE.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Speccy
    Versione assembly: 1.0.0.0
    Versione Win32: 1.0.0.0
    Base di codice: file:///C:/Users/Luca/Zero/Speccy.DLL
----------------------------------------
Microsoft.DirectX.DirectInput
    Versione assembly: 1.0.2902.0
    Versione Win32: 5.04.00.2904
    Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.DirectInput/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectInput.dll
----------------------------------------
System.Windows.Forms.resources
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_it_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
Peripherals
    Versione assembly: 1.0.0.0
    Versione Win32: 1.0.0.0
    Base di codice: file:///C:/Users/Luca/Zero/Peripherals.DLL
----------------------------------------
System.Core
    Versione assembly: 3.5.0.0
    Versione Win32: 3.5.30729.8763 built by: WinRel
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
Microsoft.DirectX
    Versione assembly: 1.0.2902.0
    Versione Win32: 5.04.00.2904
    Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.dll
----------------------------------------
System.Configuration
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
mscorlib.resources
    Versione assembly: 2.0.0.0
    Versione Win32: 2.0.50727.8745 (WinRel.050727-8700)
    Base di codice: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
ZeroSound
    Versione assembly: 1.0.0.0
    Versione Win32: 1.0.0.0
    Base di codice: file:///C:/Users/Luca/Zero/ZeroSound.DLL
----------------------------------------
Microsoft.DirectX.DirectSound
    Versione assembly: 1.0.2902.0
    Versione Win32: 5.04.00.2904
    Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.DirectSound/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.DirectSound.dll
----------------------------------------
Microsoft.VisualC
    Versione assembly: 8.0.0.0
    Versione Win32: 8.00.50727.9268
    Base di codice: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualC/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualC.dll
----------------------------------------
Microsoft.DirectX.Direct3D
    Versione assembly: 1.0.2902.0
    Versione Win32: 9.05.132.0000
    Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.Direct3D/1.0.2902.0__31bf3856ad364e35/Microsoft.DirectX.Direct3D.dll
----------------------------------------
Microsoft.DirectX.Direct3DX
    Versione assembly: 1.0.2911.0
    Versione Win32: 9.12.589.0000
    Base di codice: file:///C:/WINDOWS/assembly/GAC/Microsoft.DirectX.Direct3DX/1.0.2911.0__31bf3856ad364e35/Microsoft.DirectX.Direct3DX.dll
----------------------------------------

************** Debug JIT **************
Per attivare il debug JIT, è necessario impostare il valore
jitDebugging nella sezione system.windows.forms del file di configurazione
dell'applicazione o del computer (machine.config).
L'applicazione inoltre deve essere compilata con il debug
attivato.

Ad esempio:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

Quando il debug JIT è attivato, tutte le eccezioni non gestite
vengono inviate al debugger JIT registrato nel computer,
anziché essere gestite da questa finestra di dialogo.


Feature: Provide a Stack data view

Spec for a new feature:

Either in Register window (preferred), or as a separate window, provide a vertical list that grows down like a stack.

  • This window should show WORD values, since Stack works in byte pairs.

  • The stack must have a column showing the addr of each line (which will jump 2 by 2 for obvious reasons)
    Since Word values have the high part higher in memory and since SP always points to the Lower part of the last Word psuhed into Stack, the stack Value Column should be on the Left side and the "Addr Column" to be on the Right side of the view table.

  • The Stack should show higher addresses on top, and lower on bottom, hence stack PUSH goes DOWN in memory and on screen, and stack POPs goes UP in memory and on screen.

  • The stack, should have a pointer/arrow/cursor showing the current location of SP
    This pointer should be located between the Value Column and "Addr Column", so that it points to the correct byte defined by SP.

  • Stack usually starts high, since it grows down, hence when showing the stack it should maximize the visible contents of the stack.
    When PUSHing into the stack, the stack pointer/arrow/cursor should force a scroll up (contents move up in view), if it tries to pass the bottom, hence ensuring that the SP location is still visible.
    When POPing the stack, the stack pointer/arrow/cursor should force a scroll down (contents move down in view), if it tries to pass above the middle vertical of the available view height, unless this is not possible, when the top of the view is already showing the top of memory (#FFFE and #FFFF)

  • Be mindful that stack can wrap.
    The most common wrap is from #0000 to #FFFE, after the first PUSH, when using the TOP of memory as Stack space.

  • It should be possible to scroll the stack view using a scrollbar, and hence having the side effect of making the SP pointer/arrow/cursor invisible.
    SP should return to normal visibility as soon as Write (PUSH) or read (POP) is done, i.e. every time SP is changed by the running program.

  • Stack view, should always show a minimum of 8 entries (16 bytes)

  • If the window resizes vertically, show more of the stack.
    If resize is a reduction of vertical height, there is no need to adjust the view so that stack pointer/arrow/cursor is visible, since any change in SP will do that, and not adjusting the view avoids making the view jump around when interactively resizing the window.

  • The Addr Column data, should be greyed out, to not be the focus of the viewer, but function just as a visual aid.

Example Output, using ASCII ART:

Value| Addr
-----|------
A000 | FFFE
BF32 | FFFC
0025 | FFFA
CDFE | FFF8
1783 | FFF4
9378 | FFF2
0001 | FFF0
0100 |< FFEE

Alternatively, we could have a visualization that showed 2 Addr columns one on each side of the "Value Column", which would allow to clrealy show the High and Low Addr

AddrH | Value | AddrL
------|-------|-------
FFFF | A000 | FFFE
FFFD | BF32 | FFFC
FFFB | 0025 | FFFA
FFF9 | CDFE | FFF8
FFF5 | 1783 | FFF4
FFF3 | 9378 | FFF2
FFF1 | 0001 | FFF0
FFFD |0100 |< FFEE

Experimentaly, I would suggest for the addr columns to be in inverse video, i.e. PAPER would be dark gray, INK should be white, in order to allow a high contrast between the actual stack data and the addr data.

Warning: Nothing prevents the SP to point to be an Odd or Even addr, so don't hardcode the Addr column(s) to be specifically even or odd.

Computer sleep breaks emulator

If computer is left for a while and sleeps/hibernates, when it wakes up, emulator window has a big white background with a red cross and border on it, and emulation no longer works.

Probably related with system timers, that don't get fired after waked up, screen resources or something similar.

Support hex addresses in monitor window

when option "View" » "Hex Numbers" is selected, monitor window shows "Address" column in Hex but CALL, JR, JP , etc .. instructions still show input address in decimal.

Se last instruction in following screenshot
image

NOTE: Address are easily readable in hex from "bytes" column, if one knows how instructions are coded (just need to swap the correct bytes), but it would be more consistent to have address in "instruction" column also represented in hex, when hex is selected.

Add memory map

A simple map which can identify parts of memory that are code and data.

Feature: Registers window click on value should be smarter

Every single register value, if clicked makes the Monitor disassembly window to jump to that address.

For some registers this makes sense, like PC for example.
For others not so much (SP).
For general purpose registers (BC, DE, HL) or Index registers (IX, IY) depends on what the value means currently on the code.

So I would suggest the following, by default on LEFT CLICK:

  • PC or IR or MP (A.K.A. WZ) -> jump Monitor dissassembly to that addr
  • SP -> open and/or jump Memory Viewer to that addr
  • All other registers, open and/or jump Memory Viewer to that addr

If user SHIFT + LEFT CLICK, to the opposite of the default ( Monitor dissassembly or Memory Viewer)

If user RIGHT CLICKs, present a popup providing a choice (to jump to Monitor dissassembly or Memory Viewer )

Reloading a TZX shifts breakpoints display

First Load a TZX, then define a few breakpoints in monitor window.

Reload the TZX.
Some breakpoint marks (red) may not be on the correct lines.

The issue is not 100% repeatable, every time.
Maybe some other step is required, that I haven't noticed yet.

I sometimes also mark breakpoints using the "tools" » "Breakpoints Editor", and maybe it's related with this issue.

After changing ROM file to something unsupported, Zero will fail to re-start.

I was trying to test a Cartridge ROM (QBERT), and using Zero GUI, browsed to a "QBert.bin" file (not a .ROM file).

It failed to load, asked to select a folder for ROMs, which I tried to give the original Zero "roms" folder, but it failed again, and quit.

On restart of Zero, it has no ROM, so it complains and enters the same process to define a correct ROM, but fails again and again. IT doesn't seem to recognize it's own "roms" folder.

I had a look at "Zero.exe.config" file, but it's not being used, since it's modified date is older than it's create date.

It's probably using Windows Registry to keep it's settings, but I haven't found it's registry folder or key yet.

Resuming, I can't run ZERO now, unless I re-install.

Fix or workaround please, since I plan to test a lot of ROMs.

Memory Variable View

Currently there is a "Memory viewer" window, that allows to check memory contents.

However, it would be really helpful to be able to define:

  • a memory address
  • optionally a name

and the have a list of these pairs, and corresponding memory contents, listed in a new "watch" window.

These items could be loaded, base on symbols (address, that have a name), to defined these view variables.

Every time we hit a breakpoint or step debug, this window contents (memory values) are updated.

Doesn't compile with the SlimDX library

The DirectSound library and SDK is deprecated, and I didn't want to install it, so I tried to compile with the SOUND_SLIMDX preprocessor directive.

I had to install the SlimDX Nuget package.

However the code fails to compile with:

Error CS1061	'SoundManager' does not contain a definition for 'LockBuffer' and no accessible extension method 'LockBuffer' accepting a first argument of type 'SoundManager' could be found (are you missing a using directive or an assembly reference?)	Speccy	C:\source\Zero-Emulator\Ziggy\Speccy\zxSpectrum.cs	7924	Active

The LockBuffer and UnlockBuffer methods are only available with the DirectX mode, but are called from common code.

Monitor Window fails to show proper instruction

When doing a step into, on a call or similar, when it jumps, the window sometimes, incorrectly fails to show the proper code disassembly.

The symptons seem to be that the windows is starting to decode a byte sooner then it should.
But once we step once, again ti reverts to normal behaviour.

Example code in Assembly

lineSignX DB 1

RenderLine:
LD A, D
SUB B
LD H, A
...

When jumping to the routine Render line, it shows
LD BC, 907A

Because it's decoding the bytes: 01 7a 90
Hence why I mentioned that it seems to be starting one byte too early.

Auto read Symbols file, when starting debug session

It would be very useful to load the symbols file automatically once a debugger session has been started.
And by automatically, I mean check if there is a symbol file (with the correct extension), with the same name as the loaded file (TAP z80 or other).

Alternatively, a confirmation prompt could be popped up, if the symbol file exists.

Font size changed, and several windows are affected

Not sure exactly when this happened or why, but the font size, changed after I saved the settings.
And now most windows text (example: Registers Windows) is being clipped vertically, because it is too large to fit the expected area.

Watch Memory tool does not support address input in an App coherent form

The only possible address input is decimal.

This input should be using a standardized function to work like the other address inputs, that also support HEX input, in the format: $FFFF

By the way this function should also accept HEX in the format #FFFF, since many assembler of the 80's also did.
And Pasmo also does support this #FFFF format.

Ubuntu PPA needed

Is there any Ubuntu PPA for this emulator? And where can we find a .deb package of it?

Support extra breakpoint debug conditions

Provide support for further breakpoint conditions, besides "equal" ("larger then", "smaller then"), and support also "different", so that we can break when memory or register changes value.

Providing a count condition, would also be very useful.
i.e. the breakpoint will only work (AKA STOP execution), after a pre-defined amount of previous triggers.

Also the breakpoint dialog, could be made more intuitive, since currently it's confusing to use, due to the @address field sometimes used as value for condition testing.
Just declare the proper fields, and enable/disabled them, when selecting the breakpoint condition.

Arcade joystick detected but not saved

image

Whenever I try to save it gets reset to None so I can't use my arcade USB joystick 'Hori Fighting Stick Mini' (seen as DPAD for stick directions).
Zero 0.8, Windows 10

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.