Changes

Jump to: navigation, search

6502 Emulator

995 bytes added, 11:00, 4 March 2020
no edit summary
[[Category:SPO600]][[Category:6502]][[Category:Assembly Language]][[Image:6502_Emulator_Screenshot.png|thumb|400px|right|A screen shot of the 6502 Emulator running [[6502_Emulator_Example_Code#Etch-a-Sketchtm_Style_Drawing|the drawing example code]].]]
A simple web-based [[6502]] emulator is available at [http://6502.cdot.systems http://6502.cdot.systems]. This emulator is used in the [[SPO600]] course to teach 8-bit [[Assembly Language|assembly language]] before transitioning to more complex 64-bit x86_64 and [[AArch64]] assembly language.
== Basic Controls ==
The emulator has a text area for data entryentering and editing code, a small bit-mapped graphics screen (32x32 pixels), a character screen (80x25 characters), a debug area, a memory monitor, and a message area.
These controls are available at the top of the screen:
The Speed slider lets you adjust the speed of the emulator from about 1% of native 6502 performance (left) to roughly full native speed (right). Setting the speed slider to a lower setting can be useful for debugging and for viewing the progress of operations on the displays.
 
There are also controls to Save and Load the text area to/from local storage on the computer on which it is running (as a download/upload); this works nicely with a local github repository.
== Using the Debugger ==
== Using the Monitor ==
Selecting the Monitor checkbox will display the specified region of memory as code is executed. For example, specifying a start of $00 and a length of $ff 100 will display the entire zero page.
== Turning the Text Screen On/Off ==
If C=0: X,Y registers set the cursor position
Y:X A is returned as a pointer to the current screen position (i.e., Y is the high byte and A is the low byte of a pointer to the memory address of the current cursor position)
If C=1: X,Y registers return the current cursor position
A contains the character at the current cursor location
 
Registers which are not used for input/output are not affected by the ROM routines. The ROM routines use $f0-fd in the zero page.
To use the ROM routines, these define directives may be pasted into your code:
jsr CHROUT
 
{{Admon/tip|ROM Routine Names|The ROM routine names and locations pay homage to a famous 6502-based family of computers. Discovering which one is left as an exercise for the reader!}}
== Example Code ==
See the [[6502 Emulator Example Code]] page.
 
== Source Code ==
The emulator's source code can be found at https://github.com/ctyler/6502js ... Pull Requests are welcome.

Navigation menu