puce65c02/README.md

48 lines
2.4 KiB
Markdown

# puce65c02
puce65c02, a WDC 65c02 cpu emulator focusing on accuracy and performance
runs at ~1Ghz on a modern computer
powers reinette IIe : https://github.com/ArthurFerreira2/reinetteIIe
### tests
I left the test and timing routines I used during developpement
you can use them to verify accuracy :
Theses tests require `6502_functional_test.bin` and `65C02_extended_opcodes_test.bin` which you can get from https://github.com/Klaus2m5/6502_65C02_functional_tests
and `timingtest-1.bin` I got from BigEd at http://forum.6502.org/viewtopic.php?f=8&t=3340
### compile and run :
```bash
g++ -Wall -O3 -D __TESTS__ puce65c02.cpp -o puce65c02 && ./puce65c02
```
or, much slower but with detailled info :
```bash
g++ -Wall -O3 -D __TESTS__ -D VERBOSE puce65c02.cpp -o puce65c02 && ./puce65c02
```
or, if you just want to check the cycle accuracy :
```bash
g++ -Wall -O3 -D __TESTS__ -D TIMING puce65c02.cpp -o puce65c02 && ./puce65c02
```
### sample run :
```
360F 08 PHP A=24 X=0E Y=FF S=FB *S=0E --UB---- Cycles: 3 Total: 3101022
3610 C5 0F CMP $0F A=24 X=0E Y=FF S=FB *S=0E --UB--ZC Cycles: 3 Total: 3101025
3612 D0 FE BNE $FE A=24 X=0E Y=FF S=FB *S=0E --UB--ZC Cycles: 2 Total: 3101027
3614 68 PLA A=30 X=0E Y=FF S=FC *S=30 --UB---C Cycles: 4 Total: 3101031
3615 29 C3 AND #$C3 A=00 X=0E Y=FF S=FC *S=30 --UB--ZC Cycles: 2 Total: 3101033
3617 C5 11 CMP $11 A=00 X=0E Y=FF S=FC *S=30 --UB--ZC Cycles: 3 Total: 3101036
3619 D0 FE BNE $FE A=00 X=0E Y=FF S=FC *S=30 --UB--ZC Cycles: 2 Total: 3101038
361B 28 PLP A=00 X=0E Y=FF S=FD *S=72 -VUB--Z- Cycles: 4 Total: 3101042
361C 08 PHP A=00 X=0E Y=FF S=FC *S=30 -VUB--Z- Cycles: 3 Total: 3101045
361D A5 12 LDA $12 A=F6 X=0E Y=FF S=FC *S=30 NVUB---- Cycles: 3 Total: 3101048
361F 8D 1502 STA $0215 A=F6 X=0E Y=FF S=FC *S=30 NVUB---- Cycles: 4 Total: 3101052
3622 A5 0D LDA $0D A=1B X=0E Y=FF S=FC *S=30 -VUB---- Cycles: 3 Total: 3101055
3624 20 1402 JSR $0214 A=1B X=0E Y=FF S=FA *S=00 -VUB---- Cycles: 6 Total: 3101061
0214 E9 F6 SBC #$F6 A=24 X=0E Y=FF S=FA *S=00 --UB---- Cycles: 2 Total: 3101063
0216 60 RTS A=24 X=0E Y=FF S=FC *S=36 --UB---- Cycles: 6 Total: 3101069
```
enjoy !