SonarCloud: Highbyte.DotNet6502 library |
|
Overall/CodeQL: |
A 6502 CPU emulator for .NET
-
A collection of .NET cross platform libraries and applications for executing 6502 CPU machine code in different contexts. Links below for details on each library/app.
-
A programming exercise, that may or may not turn into something more
-
A main library
Highbyte.DotNet6502
for executing 6502 machine code, not bound to any specific computer, and does not have any UI code. -
A machine code monitor library
Highbyte.DotNet6502.Monitor
used as a base for specific UI implementations. -
A library
Highbyte.DotNet6502.Systems
containing implementations of specific computers ("Systems") that runs on a 6502 CPU. -
Several libraries
Highbyte.DotNet6502.Impl.*
that implements rendering, input handling, and audio using different technologies (such as Skia, Blazor, SadConsole) per emulated System. -
Several UI applications
Highbyte.DotNet6502.Apps.*
that are the hosts for emulating the Systems above and their different rendering techniques.
Missing features (but not limited to):
- 6502 CPU
- Support for unofficial opcodes
- Systems
- C64: cycle-exact rendering, bitmap graphics mode renderer in Blazor WASM, etc.
- An emulation of all aspects of computers such as Apple II or Commodore 64.
- The fastest emulator.
For requirements and local development setup, see here
- http://www.obelisk.me.uk/6502/index.html
- https://www.atariarchives.org/alp/appendix_1.php
- http://www.6502.org/tutorials/compare_beyond.html
- https://www.c64-wiki.com/wiki/BRK
- http://www.emulator101.com/6502-addressing-modes.html
- https://www.pagetable.com/?p=410
- http://6502.org/tutorials/decimal_mode.html
- https://www.c64-wiki.com/wiki/Reset_(Process)
- https://www.c64-wiki.com/wiki/Bank_Switching
- https://www.pagetable.com/c64ref/c64mem/
- https://sta.c64.org/cbm64mem.html
- https://github.com/mist64/c64ref/blob/master/Source/c64io/c64io_mapc64.txt
- https://www.c64-wiki.com/wiki/PETSCII_Codes_in_Listings
- https://dustlayer.com/c64-architecture/2013/5/7/hardware-basics-part-1-tick-tock-know-your-clock
- https://dustlayer.com/vic-ii/2013/4/22/when-visibility-matters
- https://dustlayer.com/vic-ii/2013/4/25/vic-ii-for-beginners-beyond-the-screen-rasters-cycle
- https://www.zimmers.net/cbmpics/cbm/c64/vic-ii.txt
- https://www.c64-wiki.com/wiki/Raster_interrupt
- https://codebase64.org/doku.php?id=base:detect_pal_ntsc
- https://www.lemon64.com/forum/viewtopic.php?p=667448#p667448
- https://www.c64-wiki.com/wiki/ADSR
- https://www.atarimagazines.com/compute/issue49/424_1_Programming_64_Sound.php
- https://celso.io/retrocomputing/2019/12/23/c64-assembly
- https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API
- https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API/Advanced_techniques
- https://github.com/pendragon-andyh/WebAudio-PulseOscillator
- https://github.com/KristofferStrube/Blazor.WebAudio
- https://ui.dev/web-audio-api
- https://codepen.io/2kool2/pen/xrLeMq
- https://dev.opera.com/articles/drum-sounds-webaudio/
- http://visual6502.org/wiki/index.php?title=6502TestPrograms
- https://github.com/Klaus2m5/6502_65C02_functional_tests/blob/master/6502_functional_test.a65
- http://www.csharp4u.com/2017/01/getting-pretty-hex-dump-of-binary-file.html?m=1
Was used during development to compile actual 6502 source code to a binary, and then run it through the emulator.
- https://sourceforge.net/projects/acme-crossass/
- https://marketplace.visualstudio.com/items?itemName=rosc.vs64
- https://nurpax.github.io/c64jasm-browser/
- https://skilldrick.github.io/easy6502/#first-program
Was used during development to test how certain instructions worked when in doubt.
Monitor commands: https://vice-emu.sourceforge.io/vice_12.html
How to load and step through a program in the VICE monitor
l "C:\Source\Repos\dotnet-6502\samples\Assembler\Generic\Build\testprogram.prg" 0 1000
d 1000
r PC=1000
z
r
- Kristoffer Strube for the original Blazor WASM async interop code for WebAudio, DOM, and IDL that was the basis for a synchronous implementation in this repo. Copyright notice here.