GithubHelp home page GithubHelp logo

kes's Introduction

mos6502

Coverage Status NPM Version Static Badge


Description

A simple emulator for the MOS6502 CPU, written entirely in TypeScript and designed for compatibility. This emulator can be used in any JavaScript environment making it perfect for retro game development, or just exploring the classic 6502 architecture.

Features

  • Fully written in TypeScript
  • Emulates the full range of MOS6502 instructions.
  • Implements the 6502's decimal mode.
  • Passes Klaus Dormann's functional test suite, ensuring reliability and correctness.

Installation


npm i mos6502 --save

or


yarn add mos6502

Example

Load a program from a file into memory and execute it

import mos6502 from '6502';

const cpu = new most6502();
const RAM = new Uint8Array(0xFFFF);

/* Load your program (in this case, from a file). */
RAM.set(readFileSync('path/to/your/program'), 0);

/* Set your reset vector ($8000 for this example). */
RAM[0xFFFC] = 0x00;
RAM[0xFFFD] = 0x80;

function read(address: number) {
    return RAM[address];
}

function write(address: number, value: number) {
    RAM[address] = value;
}

/* Simulate a clock cycle */
cpu.emulate();

What's Next

While the emulator currently meets my needs, I have several enhancements planned for the near future:

  • Codebase Review: Perform a thorough review of the codebase to ensure all naming conventions are clean and consistent.
  • Debugger Enhancements: Improve the debugger functionality and streamline the way information is passed.
  • Interactive Shell: Develop a mini shell for the debugger to allow user input and commands.
  • Breakpoint Commands:
    • Set Breakpoints: Implement commands like b $1710 to set breakpoints at specific addresses.
    • Continue Execution: Add the c command to continue execution until the next breakpoint.
  • Single-Step Execution: Introduce the s command to execute the next instruction step-by-step.
  • Memory Analysis: Add commands like mem $1710 to inspect and analyze memory contents at specified addresses.

CONTRIBUTING

If you want to contribute, feel free to open a pull request and I will review it.

License

This project is licensed under the MIT License - see the LICENSE.md file for details.

Author

Made with ❤️ by kgtrey1.

kes's People

Contributors

kgtrey1 avatar

Watchers

 avatar

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.