Giter Club home page Giter Club logo

box80's People

Contributors

duncanamps avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

atkins126

box80's Issues

Finish interrupt emulation

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.

Group menu functions better

File stuff is in multiple places, it should all be under the file menu to cover:

  • Compact Flash activities
  • Virtual machine save/load

Issues with terminal input from file

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

Create test suite for all instructions

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.

Exec code bug FD CB 07 46

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

Allow loaded VM to run automatically

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

Implement breakpoint capability

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.

  • Introduce breakpoint array with permanent and temporary breakpoints
  • Amend execution module to test for, and handle the breakpoints

Later development will be to set up the step over command, this is dealt with on issue #5

Rewrite the processor core

Rewrite this before implementing any more instructions or hardware emulation. The key points which need to be addressed are:

  • Update the implementation to an Object Oriented design instead of the basic model in place now
  • Investigate common parts of instructions rather than each instruction having a separate procedure. For example, instead of LD B.A, LD B.B, LD B.C, etc. have Load8Bit(dst,src). This will reduce coding and introduce less errors.
  • Have the processor running in its own thread, but the ability to have non-threaded to help with debugging

Create concept of Projects in the UI

A project should contain things like:

  • Window layout
  • Processor speed
  • List of watches
  • List of loaded images

Need a MRU list for projects, and the ability to load the last project at startup

UI rearrangement

Rearrange the screen so that:

  • The register window is separated out from the main window
  • The disassembly / watch windows are separated out too
  • The terminal window becomes incorporated in the main window

Terminal end of line issue

When the end of line is reached, the terminal doesn't automatically go to a new line - the cursor starts going backwards.

Maximum speed time display issue

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.

Create a new blank CF image

Ability to create a new Compact Flash image, either 64MB or 128MB which will depend on the BIOS that's loaded up.

Add undocumented instructions

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.

VM load and save code clean up

Need XML document read and write routines in each object (Terminal, Processor, SIO) rather than making the internal registers public

Add parameter storage for the app

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.

Add terminal options

Need an options screen for the terminal to cover:

  • Screen width and height
  • Font selection (style, size)
  • Code pages
  • Initial colour selection
  • Terminal emulation - plain or ANSI
  • Bold colour increase
  • Amendments to VM load/save routines to take account of varying screen sizes

BASIC part working, but...

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

ANSI keystrokes

Add keyboard facilities for ANSI so that, for example, cursor up / home etc. do more meaningful things.

BASIC listing needs keypress to list each line

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

Add main menu and a few features as well:

  • Reset capability
  • Selection of processor speed

Implement CF hardware

Need to implement the CF (Compact Flash) hardware, however the items listed in issue #1 should be dealt with first.

Global options screen

Implement a global options screen. For starters, it could contain:

  • Option to auto-load last VM at startup. Tied in with #6
  • Run after VM load: 1. never, 2. if saved while running, 3. always
  • Default terminal width and height
  • Default terminal colours at startup
  • Terminal default font and size
  • Terminal auto-size font
  • Terminal allow BEL character (use system sound for this)
  • Allow undocumented instructions (will be greyed out as we don't have much undocumented instructions right now)

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.