1
0
mirror of https://github.com/rkujawa/rk65c02.git synced 2024-12-13 01:29:57 +00:00
Commit Graph

215 Commits

Author SHA1 Message Date
Radosław Kujawa
371856f6c7 Make emul_bbr/bbs/smb/rmb functions static.
Since they are only called by wrappers within the same file.
2017-01-31 23:30:49 +01:00
Radosław Kujawa
faa824e306 Implement emulation of ADC, plug the overflow test.
While here fix numerous test cases, lol.
2017-01-31 23:08:23 +01:00
Radosław Kujawa
afadfd8b13 Fix pointer usage. 2017-01-31 14:11:21 +01:00
Radosław Kujawa
44f723b016 Attempt to emulate the BRK instruction. 2017-01-31 00:31:28 +01:00
Radosław Kujawa
b21d884f8b Clear the decimal flag on initialisation. 2017-01-31 00:31:04 +01:00
Radosław Kujawa
bc137b9390 Add emulation of BBR0-7 and BBS0-7 instructions. 2017-01-30 21:25:45 +01:00
Radosław Kujawa
1c72bd23a8 More meaningful comments. 2017-01-30 21:24:45 +01:00
Radosław Kujawa
5554de9411 Add TSB and TRB emulation. 2017-01-29 22:54:06 +01:00
Radosław Kujawa
923a9db649 Add emulation of SMB0-SMB7 instructions. 2017-01-29 21:34:58 +01:00
Radosław Kujawa
3c5162b0b9 Add emulation of branch instructions. 2017-01-29 13:57:51 +01:00
Radosław Kujawa
79b5a01d10 Add forgotten prototype of program_counter_branch(). 2017-01-29 13:57:20 +01:00
Radosław Kujawa
e0fa334e3e Fix relative address pritning in disassembly. 2017-01-29 13:55:53 +01:00
Radosław Kujawa
f5a4f45127 Add function setting the PC for branches. 2017-01-29 13:29:17 +01:00
Radosław Kujawa
762f140efd Better operand formatting in disassembly. 2017-01-29 13:08:32 +01:00
Radosław Kujawa
bb3f77ec7f Add JSR and RTS emulation and tests. 2017-01-29 11:47:34 +01:00
Radosław Kujawa
4a8fbfbaeb Add CPX and CPY emulation and test cases. 2017-01-28 14:04:20 +01:00
Radosław Kujawa
3640a162a3 Add CMP emulation and test cases. 2017-01-28 13:26:51 +01:00
Radosław Kujawa
f3205e7272 Add CLI and SEI emulation and test case. 2017-01-28 11:19:34 +01:00
Radosław Kujawa
ee66f9c78c Add emulation and test for CLV instruction. 2017-01-28 11:12:25 +01:00
Radosław Kujawa
735c3677ce Correct address calculation for absolute indirect and absolute indirect X modes. 2017-01-28 00:10:22 +01:00
Radosław Kujawa
8d2d694158 Implement (partial) JMP emulation and basic test for it. 2017-01-27 22:28:33 +01:00
Radosław Kujawa
05cedfb1f5 Also print program counter when dumping regs. 2017-01-27 22:28:09 +01:00
Radosław Kujawa
9da9f61f5a There's one more field in that generated header. Adjust. 2017-01-27 22:27:30 +01:00
Radosław Kujawa
2430cfd722 Branch and jump instrucitons need special PC treatment. 2017-01-27 20:43:08 +01:00
Radosław Kujawa
9294891a23 Remove unused variable. 2017-01-27 20:43:02 +01:00
Radosław Kujawa
28a5d54510 Add ASL and LSR emulation. 2017-01-27 17:14:56 +01:00
Radosław Kujawa
f63c00b192 Add RMB emulation. 2017-01-27 13:18:02 +01:00
Radosław Kujawa
1f581d3fd3 Add function to dump registers state onto stdout. 2017-01-27 11:27:14 +01:00
Radosław Kujawa
646c7d1905 Some opcodes also write data to accumulator. 2017-01-27 11:03:50 +01:00
Radosław Kujawa
8d5482ad09 Remove x bit from the awk program, it is never started directly. 2017-01-27 10:14:32 +01:00
Radosław Kujawa
0c63342ad7 Add comments explaing what these functions do. 2017-01-27 10:13:32 +01:00
Radosław Kujawa
b7f1b8095b Add emulation of INC and DEC. 2017-01-27 00:04:47 +01:00
Radosław Kujawa
1da576c821 Merge branch 'master' of github.com:rkujawa/rk65c02 2017-01-26 17:27:22 +01:00
Radosław Kujawa
80b6848108 Preliminary support for stepping. 2017-01-26 13:11:00 +01:00
Radosław Kujawa
941e89173a Add struct with info about reason for stopping emulation. 2017-01-26 12:52:40 +01:00
Radosław Kujawa
285d2ee828 Initial state of the CPU has IRQ disable bit set. 2017-01-25 21:17:18 +01:00
Radosław Kujawa
13ef3e2d08 Add PHX, PLX, PHY, PLY emulation and test cases. 2017-01-25 13:14:00 +01:00
Radosław Kujawa
acc0fad32e Add emulation of BIT instruction and test cases for it. 2017-01-25 10:10:00 +01:00
Radosław Kujawa
7915657355 Add bit testing macro. 2017-01-25 10:09:50 +01:00
Radosław Kujawa
95db0b7dd2 Add commented out debug message. 2017-01-25 10:09:38 +01:00
Radosław Kujawa
47028b0e26 Add commented out debug message. 2017-01-24 22:18:21 +01:00
Radosław Kujawa
90b6c06e32 Fix missing breaks in indirect zero page handling switch. 2017-01-24 22:18:02 +01:00
Radosław Kujawa
39aaca5034 Correct indirect zero page Y behaviour. 2017-01-24 16:37:10 +01:00
Radosław Kujawa
20a39a8d6c Correct wrong ORA indirect zero page X size. 2017-01-24 16:36:39 +01:00
Radosław Kujawa
342a188314 Fix wrong mnemonic for absolute ORA. 2017-01-23 15:39:10 +01:00
Radosław Kujawa
6c3a203cdc Support all AND addressing modes. 2017-01-23 15:28:14 +01:00
Radosław Kujawa
0dd63f2bf0 Add ROL and ROR emulation. Too old to ror and to rol! 2017-01-23 15:25:32 +01:00
Radosław Kujawa
f9708ca049 Add STA, STY, STX emulation. 2017-01-23 15:02:21 +01:00
Radosław Kujawa
ee8a16a5ba Add ORA and EOR emulation. 2017-01-23 14:53:05 +01:00
Radosław Kujawa
6b7298cf8d Avoid intermediate variable in AND emulation. 2017-01-23 14:45:46 +01:00
Radosław Kujawa
aee947ad1f Don't forget to add LDY to CSV... 2017-01-23 14:44:55 +01:00
Radosław Kujawa
552fad8a7e LDY emulation. 2017-01-23 14:43:54 +01:00
Radosław Kujawa
5c38e5f05a Add emulation of LDX, TXA, TYA, TXS, TAX, TAY, TSX. 2017-01-23 14:38:50 +01:00
Radosław Kujawa
ce492e6cd3 Support all addressing variants of STZ. 2017-01-23 13:46:17 +01:00
Radosław Kujawa
05f6599681 BSD/OS X awk does not like hexadecimal constants. 2017-01-23 13:41:31 +01:00
Radosław Kujawa
9c88afae2a BBRx and BBSx instructions have zero page relative addressing.
Add zero page relative as a separate addressing type and adjust
opcode definitions for these two type of opcodes.
2017-01-23 12:17:06 +01:00
Radosław Kujawa
ee16c64310 Implement absolute X, absolute Y addressing. 2017-01-23 10:48:37 +01:00
Radosław Kujawa
452e4b3806 Implement indirect zero page with X and indirect zero page with Y addressing. 2017-01-23 10:29:19 +01:00
Radosław Kujawa
9e32c3e493 Try to emulate all variants of LDA.
But some addressing modes are still unimplemented...
2017-01-23 10:27:51 +01:00
Radosław Kujawa
87c424557e Implement aboslute addressing mode. 2017-01-23 00:00:45 +01:00
Radosław Kujawa
5eede9333b Add emulation of PHP, PLP instructions and test cases for them. 2017-01-22 23:01:24 +01:00
Radosław Kujawa
074ecdccc3 No-operand INC has accumulator addressing mode, not implied. 2017-01-22 22:44:08 +01:00
Radosław Kujawa
1460817230 Correct mnemonic for LDX with Zero Page,Y addressing. 2017-01-22 22:40:32 +01:00
Radosław Kujawa
fb7d4b28e7 Add DEX, DEY emulation and test cases for them. 2017-01-22 22:35:50 +01:00
Radosław Kujawa
52247f0ce4 Implement CLC, SEC and test for them. 2017-01-22 13:50:04 +01:00
Radosław Kujawa
473e0e2636 Add INX, INY emulation and test cases.
Some comments while here.
2017-01-22 13:07:21 +01:00
Radosław Kujawa
e763ca0d3a Avoid getting instruction definition again when emulating.
While here try to make program counter incrementation more universal
and flexible.
2017-01-22 11:07:19 +01:00
Radosław Kujawa
c7633feb87 Add STZ emulation. 2017-01-21 21:46:35 +01:00
Radosław Kujawa
86c9c6414c Add function to write data onto bus according to choosen addressing mode. 2017-01-21 21:43:31 +01:00
Radosław Kujawa
8abbb88d0d Fix dependencies for static lib building. 2017-01-21 21:41:19 +01:00
Radosław Kujawa
b6ed8892bb Add generation of emulation.h to Makefile. 2017-01-21 14:58:00 +01:00
Radosław Kujawa
1802bfbd1d Add missing includes, fix typo. 2017-01-21 14:57:49 +01:00
Radosław Kujawa
e3abea91ef Add awk script to automatically generate emulation.h from CSV. 2017-01-21 14:52:38 +01:00
Radosław Kujawa
0d5916eb7d Gotta generate header for emulation functions from CSV. 2017-01-21 12:08:00 +01:00
Radosław Kujawa
5ca671aecb Print value of PC register when unimplemented opcode encountered. 2017-01-21 09:13:43 +01:00
Radosław Kujawa
1820418c62 Adjust C header generation to take CSV header into account. 2017-01-20 23:23:25 +01:00
Radosław Kujawa
d2dc51cbd3 Add a header. Now looks nicer on GitHub! 2017-01-20 23:23:04 +01:00
Radosław Kujawa
51de051e19 Stop on unimplemented instruction. 2017-01-20 23:18:00 +01:00
Radosław Kujawa
2adf864f4f Debugging symbols by default. 2017-01-20 23:17:35 +01:00
Radosław Kujawa
c083114c12 Increment stack pointer before poping. 2017-01-20 23:16:02 +01:00
Radosław Kujawa
86e00e651d Make this actually compile. 2017-01-20 22:38:46 +01:00
Radosław Kujawa
0dc7dac6a3 Add PLA, PHA emulation. 2017-01-20 22:26:13 +01:00
Radosław Kujawa
7862703c88 Add functions to pop/push emulated CPU stack. 2017-01-20 22:03:03 +01:00
Radosław Kujawa
a50da41388 Implement AND emulation and test. 2017-01-20 10:41:56 +01:00
Radosław Kujawa
3bcc7bb096 Introduce instruction-independent status adjustment functions.
For now only for negative and zero. Also use them in LDA emulation.
2017-01-20 10:25:19 +01:00
Radosław Kujawa
5201cfdc87 Print operand hex vals during disassembly. 2017-01-20 09:46:33 +01:00
Radosław Kujawa
14233cf3ca Implement status flags for LDA emulation. 2017-01-20 09:11:34 +01:00
Radosław Kujawa
bcedb50e48 Clean up. 2017-01-20 09:11:22 +01:00
Radosław Kujawa
b498da3ac8 Add CLI skeleton. 2017-01-19 23:49:27 +01:00
Radosław Kujawa
f42f88c148 Add status register bits. 2017-01-19 14:06:19 +01:00
Radosław Kujawa
6b7ddbf865 LDA zero page emulation and test for it. 2017-01-19 11:49:05 +01:00
Radosław Kujawa
49b70f0e1f Make instruction data read more flexible and split from emulation of particular instruction. 2017-01-19 10:59:35 +01:00
Radosław Kujawa
87cafb607f Support loading ROMs from files, adjust nop test case. 2017-01-19 00:57:09 +01:00
Radosław Kujawa
e7380477a9 Remove debug printfs. 2017-01-19 00:20:53 +01:00
Radosław Kujawa
92914d4aa0 Experiment with emulating opcode requring operands.
Immediate lda now works.
2017-01-18 22:37:00 +01:00
Radosław Kujawa
e7e30292d5 Fix incorrect instruction sizes. 2017-01-18 22:11:13 +01:00
Radosław Kujawa
380b524a51 Assign a separate identifier for all invalid nops. 2017-01-18 22:05:50 +01:00
Radosław Kujawa
52ce9bff8c Preliminary support for emulation of instructions.
Some refactoring while here.
2017-01-18 17:18:19 +01:00
Radosław Kujawa
f106e227cd Prepare structures for adding emulation of instructions. 2017-01-18 15:45:28 +01:00
Radosław Kujawa
d6876b38a1 Write down all 65C02 instructions. 2017-01-18 14:37:44 +01:00
Radosław Kujawa
3032baeac4 Temporarily disable assert checking if instr was implemented. 2017-01-18 14:37:24 +01:00
Radosław Kujawa
bd0eeea144 Adjust build process and instruction-related funcs.
Due to new dynamically build 65c02isa.h header.
2017-01-18 12:09:14 +01:00
Radosław Kujawa
611f51201f Generate instruction set from CSV file and awk script. 2017-01-18 12:08:55 +01:00
Radosław Kujawa
372dca2db8 Remove instruction set. 2017-01-18 12:08:07 +01:00
Radosław Kujawa
e36a9c34fb Add accumulator addressing mode handling. 2017-01-18 11:12:37 +01:00
Radosław Kujawa
23802b176f Instruction set definition is now private to 65c02isa.c, has API.
Minor refactoring while here, splitting stuff.
2017-01-17 14:29:20 +01:00
Radosław Kujawa
aa362b81fd Add structs representing current emulator state. 2017-01-17 11:28:42 +01:00
Radosław Kujawa
d515954f44 Move reg_state struct to header, rename op to opcode. 2017-01-17 11:18:48 +01:00
Radosław Kujawa
0da3d6dc5f Instruction addressing modes now handled with enum.
While here imlpement instruciton printing for all addressing modes.
2017-01-17 00:42:31 +01:00
Radosław Kujawa
a0821195c7 Also build static library and use it for tests. 2017-01-16 23:54:46 +01:00
Radosław Kujawa
64e71a081f Since this is a library, off with the main function now. 2017-01-16 23:54:24 +01:00
Radosław Kujawa
f298eaade0 rk65c02 is now a shared library. 2017-01-16 22:56:07 +01:00
Radosław Kujawa
b446b08271 Add missing argument to bus_finish() prototype. 2017-01-16 22:55:42 +01:00
Radosław Kujawa
26384ce27d Add asserts to freeing the bus. 2017-01-16 21:34:56 +01:00
Radosław Kujawa
e7c81c0fbc Initial import, skeleton... 2017-01-16 19:35:28 +01:00