Coder Social home page Coder Social logo

visual6502's People

Contributors

biged avatar gdevic avatar hoglet67 avatar ijor avatar lagomorph avatar mmfoerster avatar petermortensen avatar shersom avatar sigbjornf avatar trebonian avatar treed0803 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  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  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  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

visual6502's Issues

SVG missing clock phase 1

I am planning to plot this with my HP pen plotter, and I'd like to plot each layer of silicon separately. The svg branch appears to have the only SVG file with all the layers separated. Unfortunately, it is missing at least one trace, clock phase 1.

nosim mode writes 00 to 0000 in first cycle

if run in nosim mode, we skip chip reset, and do it at time of first running. But the first simulated phase writes a 00 to 0000 which in the case of our normal test program is wrong. In fact, tcstate is all zeroes, so the chip reset hasn't quite done what we need. Looks likely that the problem is in the run/stop buttons: an explicit reset avoids the problem.

_

/* nodenames.js */

var input_pins = [
'res',
'db0',
'db1',
'db3',
'db2',
'db5',
'db4',
'db7',
'db6',
'so',
'clk0',
'rdy',
'nmi',
'irq',
];

input_clock_pin = (nodenames['clk0']);
input_pins = (input_pins.map((function (e){return (nodenames[e]);})));

/* expertWires.js */

function isInputPin(nn)
{
    return ((input_pins != undefined)
        && (arrayContains(input_pins, nn)));
}
function handleClick(e)
{

/* line 519 */

    if ((e.altKey)
    &&  (isInputPin(w)))
    {
        if (w == input_clock_pin)
        {
            stepForward();
            return;
        }
        toggleNode(w);
        refresh();
        return;
    }
}

/* chipsim.js */

function toggleNode(nn)
{
    var node;
    node = nodes[nn];
    node.pullup = !(node.pullup);
    node.pulldown = !(node.pulldown);
    recalcNodeList([nn]);
}

Two signals missing from Datapath Control pseudo-bus

As noted by Trent in this thread
http://forum.6502.org/viewtopic.php?p=60140#p60140
the two control signals

 "ADL/ABL": 639,      // load ABL latches from ADL bus
 "ADH/ABH": 821,      // load ABH latches from ADH bus

are not seen when tracing the pseudo-bus DPControl.

We can fix this in a compatible way by adding aliases with indices of -1 and -2 which is consistent with the location of their drivers (just above the datapath.)

"dpc-1_ADL/ABL": 639,// alias for DPControl pseudo-bus
"dpc-2_ADH/ABH": 821,// alias for DPControl pseudo-bus

We also need a tweak to the regular expression which builds the DPControl pseudo-bus:

-               return listActiveSignals('^dpc[0-9]+_');
+               return listActiveSignals('^dpc[-]?[0-9]+_');

[Enh] single stepping and breakpoints

have a function to run until a 'sync' cycle, perhaps one to run until a 'write', or run until the address bus, databus or perhaps some registers have specific values

step one would be stepUntilSync()

What License is this under?

It uses 3rd party GPL Code so I assume GPL. But it is not actually officially stated.
The website didn't mention it either or it was confusing.

Thanks for your time.

~Chris

What is the final field in each entry of `transdefs`?

In transdefs.js, each row has six fields. To the best of my understanding (I'm not an expert), this is what they do.

  • The transistor id.
  • The id of the wire connected to the transistor's gate.
  • The id of the wire connected to either the transistor's source.
  • The id of the wire connected to either the transistor's drain. (Actually, I believe the source and drain are interchangeable, but it's easier to give them names.)
  • The bounding box of the transistor, in the format x1 x2 y1 y2.
  • A mysterious field, which appears to be unused in the code.

This field always contains five numbers. What are they?

This question is relevant. I'm basically asking the one thing that didn't get answered there.


Here are my best guesses:

  1. The width of the connection between the polysilicon and the source.
  2. The width of the connection between the polysilicon and the drain.
  3. I have no idea.
  4. The number of straight segments between bends in the polysilicon.
  5. The total amount (area) of polysilicon inside the transistor.

(Solution provided) Mouse is still pressed upon leaving the canvas

I discovered that while panning the simulation, the mouse can (and frequently) be unclicked-outside of the canvas which does not register. I fixed this in my AY-3-8500 varient with the following code in expertWires.js/wires.js

function mouseLeave(e)
{
	chipsurround.onmousemove = undefined;
	chipsurround.onmouseup = undefined;
}
//Add this
chipsurround.onmouseout = function(e){mouseLeave(e);};
//To the end of setupChipLayoutGraphics()

[UI] skip 6502 reset if not highlighting

if we can do it without spaghettifying the code, we should skip resetting the 6502 if we don't need to highlight the chip, for faster startup. Much faster, on a slow browser.

[Enh] [UI] submit test programs by URL

should accept some query strings such as
?A=0000&D=a9002010004c02000000000000000000e888e64038690260&R=0000
where A, D pairs will initialise memory, and R will set the reset vector

if no query strings found, load the usual program

this allows us to drive the simulator from other tools and sites such as 6502 emulators

[UI] request for keyboard scroll

should be possible to detect alphabetic keys anyway: perhaps venerable hjkl from vi. Or qa for up/down and sd for left right, since we already have zx for zoom in/out. We can have all of the above - they are disjoint. (Not sure how to detect cursor keys)

[UI] layout on screen is inflexible and makes assumptions

Presently the UI layout, especially in expert mode, expects the browser window height to be 1024 or thereabouts.

Also the code and css contains some fixed numbers to cause the elements

  • header
  • chip display
  • buttons
  • status display
  • memory table
  • logstream
  • footer
    to play together nicely. It should be possible to let the browser take care of that.

For extra flexibility, at the cost of moving above bare metal css, we could allow those panes to be resized and repositioned interactively. We'd need to pick a library and use it with care.

Alternatively, we could offer from 1 to 3 fixed layouts on different pages, at the cost of maintaining several html and css files.

Link to the assembler is broken.

One cannot write anymore custom test programs for the visual6502. I'm using this to teach children the processor architecture.

[Enh] [UI] improve highlighting control

can only highlight a single signal- should allow shift-click to add to the set, and ctrl-click to toggle membership of the highlighted set

should also update status display to show the names of all the highlighted signals

also status display should show the logic value

[Enh] [UI] add a transcript of machine activity

probably a table, like the memory table, initially just the same fields as the status line.

should be similar to the output optionally sent to console.log

will use other tickets for enhancements to that baseline

I wrote a beginner's introduction to interpreting circuits in Visual 6502

Wasn't sure how to contact you - I'm sorry if this is a poor choice of channel.

Anyway, I wrote an introduction to circuit interpretation (for the nesdev community) at http://wiki.nesdev.com/w/index.php/Visual_circuit_tutorial , aimed at people without much low-level electronics experience. Perhaps you'd be interested in linking it.

Corrections would be very much appreciated too (it has already been vetted a bit in http://forums.nesdev.com/viewtopic.php?f=9&t=10119).

Thanks!

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.