<commit_before># gododo
6502 Simulator for Dodo

gododo is a simulator for (Dodo)[https://github.com/peternoyes/dodo] which is a 6502 based homebrew game system. The simulator is for the most part a port of http://rubbermallet.org/fake6502.c with some 65C02 opcodes. Decimal mode is also fixed. The simulator passes the Klaus set of 6502 tests found (here)[https://github.com/Klaus2m5]

The simulator is hardcoded to use the address space layout and devices used in Dodo but it could be repurposed for other systems I suppose. Currently the I/O is all terminal based and is a bit wonky. The code could use a lot of cleanup as well. Down the road I might try to set this up as a webservice and have a webpage that interacts with it.

Also, the 6522 Via is barely simulated at all. In the real system I use the timers for sound and a consistent framerate. I have not addressed sound at all in the simulator, and I manually trigger an interrupt based upon sleeping for 50ms rather than simulating the timer. The simulator is keeping track of accurate cycle counts for the operations. In the future I want to use this to provide warnings if the logic for each frame exceeds some limit.

When run, the simulator will open 'firmware' from the current directory and simulate it. To exit, hit 'x'. The arrow keys as well as 'a' map to Dodo's gamepad. A keypress toggles the state of the key, which is the wonkiness I described above.<commit_msg>Fixed hyperlinks<commit_after># gododo
6502 Simulator for Dodo

gododo is a simulator for [Dodo](https://github.com/peternoyes/dodo) which is a 6502 based homebrew game system. The simulator is for the most part a port of http://rubbermallet.org/fake6502.c with some 65C02 opcodes. Decimal mode is also fixed. The simulator passes the Klaus set of 6502 tests found [here](https://github.com/Klaus2m5)

The simulator is hardcoded to use the address space layout and devices used in Dodo but it could be repurposed for other systems I suppose. Currently the I/O is all terminal based and is a bit wonky. The code could use a lot of cleanup as well. Down the road I might try to set this up as a webservice and have a webpage that interacts with it.

Also, the 6522 Via is barely simulated at all. In the real system I use the timers for sound and a consistent framerate. I have not addressed sound at all in the simulator, and I manually trigger an interrupt based upon sleeping for 50ms rather than simulating the timer. The simulator is keeping track of accurate cycle counts for the operations. In the future I want to use this to provide warnings if the logic for each frame exceeds some limit.

When run, the simulator will open 'firmware' from the current directory and simulate it. To exit, hit 'x'. The arrow keys as well as 'a' map to Dodo's gamepad. A keypress toggles the state of the key, which is the wonkiness I described above.
{'fraction_non_alphanumeric': 0.04031977754605492, 'fraction_numerical': 0.019464720194647202, 'mean_word_length': 4.157706093189964, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4165741', 'n_tokens_mistral': 806, 'n_tokens_neox': 735, 'n_words': 488}