duncanamps / box80 Goto Github PK
View Code? Open in Web Editor NEWZ80 Virtual Machine
License: GNU General Public License v3.0
Z80 Virtual Machine
License: GNU General Public License v3.0
Currently only emulates IM2, IM0/1 required. Not desperate for this right now as the only interrupt device is the SIO which is programmed for IM2, but could be used in other modes later on.
File stuff is in multiple places, it should all be under the file menu to cover:
Have set up a simple "load to terminal" routine. It seems to be overrunning, locking, etc. etc.
Probably needs a complete overhaul of how the flagging and interaction works in the SIO
Add a shortcut cut, preferably one of the F
keys rather than Ctrl+S
which may interfere with terminal use.
Every feature and flag has to be tested, likely to be a large piece of work.
See if anything available on the web, someone must have done this before.
Have a save command already, now need a Save | As
command
A sample of other speeds looked ok but check/fix all of them
While trying to start the editor in Turbo PASCAL, Box80 fails with an illegal instruction error at $4216
FD CB 07 46
This is the instruction for
BIT 0,(IY+7)
Which should be a valid (documented) instruction
Add the GPL V3 header to each source file and place a link on the Help menu to the GNU website.
If a VM was saved in a running state, it should start running on being loaded.
If, however, it was paused then it will start in a paused state after being loaded
Add the following speeds to the options:
Basic at this stage. Need the concept of a permanent breakpoint which has been set by the user, and a temporary breakpoint which is set by the system. Temporary would be used, for example, with step over command by setting a temporary breakpoint after the current instruction.
Later development will be to set up the step over command, this is dealt with on issue #5
Rewrite this before implementing any more instructions or hardware emulation. The key points which need to be addressed are:
Code works but has no error checking, so is susceptible to garbage in corrupted files
A project should contain things like:
Need a MRU list for projects, and the ability to load the last project at startup
Rearrange the screen so that:
When the end of line is reached, the terminal doesn't automatically go to a new line - the cursor starts going backwards.
When changing speed from a to b, the uS display gets multiplied by a/b.
Believe this problem might have existed before and has come back as a result of a major code reversion on #41.
When CPU speed is set to "maximum" the software sets it to 9,999MHz as this exceeds the capability of my laptop by an order of magnitude.
However, the uS display is not correct as it's based on T States and a theoretical speed of 9,999MHz so it doesn't increment at the correct rate. Need to use the calculated MHz (which is correct) to figure out the uS.
The Linux terminal cursor moves too far to the right when a key is pressed. Also the font doesn't look great
Ability to create a new Compact Flash image, either 64MB or 128MB which will depend on the BIOS that's loaded up.
There are a total of 489 undocumented Z80 instructions which need to be added. There should be an option to allow them or to raise a fault if they are run.
Need XML document read and write routines in each object (Terminal, Processor, SIO) rather than making the internal registers public
Need to store defaults, settings, etc.
As this is multi-platform, avoid the windows registry and store in a file (XML?) in the user area.
Implement ANSI terminal functions, with colour
Need an options screen for the terminal to cover:
Test criteria:
Operation | Result |
---|---|
Start, speed=32768, close | OK |
Start, speed=32768, run, close | Access violation |
Start, pause, speed=32768, close | OK |
Start, pause, speed=32768, run, close | Unfreed blocks |
Ability to specify the image file (monitor) to be loaded on startup.
Add the single step commands to step into or step over.
Need to find out what is causing the issue.
When printing an integer value, such as memory available or a BASIC line number, it prints garbage. For example:
Z80 BASIC Ver 4.7b
Copyright (C) 1978 by Microsoft
0>???q~?8?c Bytes free
Ok
Add keyboard facilities for ANSI so that, for example, cursor up / home etc. do more meaningful things.
Add an Integrated Development Environment (IDE) which will bring together:
30/06/2023 20:00 82.4% std complete, 40.4% total (279/690)
30/06/2023 22:35 96.5% std complete, 46.2% total (319/690)
Should leave it at whatever speed it was before.
Type the following:
10 for i = 1 to 10
20 print i
30 next i
list
Just the first program line is listed, then you need to press Enter for each line thereafter. Might be linked to an incorrectly coded processor instruction.
Add main menu and a few features as well:
Need to alter the update speed depending on CPU speed
Need to implement the CF (Compact Flash) hardware, however the items listed in issue #1 should be dealt with first.
Reset is stepping to address 0005 and providing a fault.
Save the memory as a 64K block and all register states including interrupt mode and interrupt enabled.
Implement a global options screen. For starters, it could contain:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.