Commit Graph

100 Commits

Author SHA1 Message Date
Jason Turner afcbe05bff Some reorg and start to move to ctre 2021-05-06 21:43:03 -06:00
Jason Turner 3f9fd79586 Start to cleanup layout and code 2021-05-06 17:50:36 -06:00
Jason Turner 7a5926b5fd Move start address and make c64 auto-startable 2021-05-06 16:49:33 -06:00
Jason Turner f0caf81299 Remove i386 which was lagging very far behind now 2021-05-06 14:12:16 -06:00
Jason Turner 4ffae19177 change name to 6502-c++ and merge in files from cpp_starter_project 2021-05-06 14:04:59 -06:00
Jason Turner 21d23dfcb9 Add a new compile script 2021-05-06 11:39:33 -06:00
Jason Turner f95290b68c Apply a few more optimization rounds 2021-05-05 20:21:06 -06:00
Jason Turner d39ad32438 convert sec/sbc with cmp, increase perf 2021-05-05 17:02:38 -06:00
Jason Turner ab9dd4e1b7 Updated 16bit counter example with higher level functions 2021-05-05 16:44:30 -06:00
Jason Turner 77c25389aa 16 bit counter example working 2021-05-05 15:56:08 -06:00
Jason Turner 1547abccab Apply some clang-format action 2021-05-04 23:31:39 -06:00
Jason Turner 14b3f4192e Fix several CPU bugs and add several more instructions 2021-05-04 23:29:48 -06:00
Jason Turner b0980ac10a More multi-byte operations working 2021-05-03 09:57:49 -06:00
Jason Turner 51c5767f0e Ability to copy from .data section resources to RAM 2021-05-02 18:10:12 -06:00
Jason Turner ad75dcdfef Fix which bit is tested with the sbrs instruction 2021-04-22 20:44:44 -06:00
Jason Turner 24012c1ff7 Fix use of address 1 to literal 1 for skip instructions
Thank you to the viewers who pointed out the issue at the
end of the stream.

At this point, simple code works, but the conditional
from the joystick input does not seem to work yet.

 * also add location header for linker
 * also filter errors and directives better
2021-04-22 18:54:00 -06:00
Jason Turner 5591249f2a Almost working programs with AVR conversion
* need to add a decent header address
 * probably need to fix sbrc and sbrs
2021-04-22 15:52:35 -06:00
Jason Turner 13af1e8cca Get AVR code starting to work, make debuggable 2021-04-22 10:42:21 -06:00
Jason Turner 2a2ce54d32 add jst 2021-04-18 16:50:56 -06:00
Jason Turner ba5fa6c978 Merge pull request #7 from aeon-dev/fix_osx_build
Fix build on OSX by telling CMake we require C++14
2017-07-29 16:05:25 -06:00
Robin Degen 9c9e6bf7ed Fix build on OSX by telling CMake we require C++14, which is not enabled by default. 2017-07-04 17:02:43 +02:00
Jason Turner da8dcfe213 Merge branch 'master' of github.com:lefticus/x86-to-6502 2016-10-26 15:35:08 -06:00
Jason Turner 717b79f32f Merge pull request #2 from dr-m/master
Initialize the Pong sprite data at compilation time, and adjust the translation.
2016-10-26 15:34:30 -06:00
Jason Turner 36ad50fa32 Make copy of original pong template based version 2016-10-26 15:33:57 -06:00
Marko Mäkelä 617e11244e Move the sprite declarations to the main() function.
This change does not affect the generated code, other than the
assembler labels for the data. The data will still be initialized
at compilation time.
2016-10-09 21:05:01 +03:00
Marko Mäkelä ee36c4c08f Define a constexpr VIC_II::Sprite constructor.
write_multi_color_line(), write_line(): Remove.

VIC_II::SpriteLine<bool multicolor>: A line of sprite bitmap data.
The constructor converts one line of data at a time.

VIC_II::Sprite<bool multicolor>: An array of SpriteLine.

This change does not affect the generated binary code.
In the assembler code generated by clang++-4.0, the binary data
will be formatted in groups of 3 bytes instead of 3*21 bytes.
2016-10-09 21:03:28 +03:00
Marko Mäkelä 24df091a6f Introduce VIC_II::HighResSprite and VIC_II::MultiColorSprite.
write_multi_color_line(): Replaces write_multi_color_pixel().

write_line(): Replaces write_pixel().

The generated code is not affected by this change.
2016-10-09 18:35:40 +03:00
Marko Mäkelä 504d13a527 Initialize the sprite data at compilation time, not at runtime.
VIC_II::SPRITE_ALIGNMENT: The MOS 6566/6567/6569 VIC-II expects
sprite data to be aligned at 64 bytes.

VIC_II::SPRITE_STARTING_BANK: Remove.

VIC_II::write_multi_color_pixel(), VIC_II::write_pixel(): Make static.
Write to the specified memory address.

VIC_II::Sprite::Sprite(): Refactored from VIC_II::make_sprite().

VIC_II::enable_sprite(): Take a Sprite reference.

sBall, sBat: Sprite images, declared at global scope.

FIXME: How to ensure that the VIC_II::Sprite addresses do not end up in
the range 0x1000..0x1fff or 0x9000..0x9fff (where the character generator
ROM is overriding RAM)? Any portable alternative to using GCC-style
__attribute__((section("sprites"))) and a linker script?

Note: Declaring the sprite images as static const objects in main()
would cause clang++4.0-svn279916-1 to generate code for initializing them.
So, we will declare the objects in the global scope.

This has been tested on a Commodore 64 with the following steps:

clang++-4.0 -m32 -O3 -std=c++1z -S pong.cpp
x86-to-6502 < pong.s > pong.asm
edit pong.asm to define code start at 0x900 and to adapt the output
invoke some 6502 assembler
SYS2304 to run the output on a Commodore 64
2016-10-06 18:00:58 +03:00
Marko Mäkelä 4ed4e6a94c Implement some more instructions, and fix typos.
Implement 16-bit shrl (new instruction).

Implement movl with a 16-bit literal value. Add the 6502 ROR instruction.
2016-10-06 17:41:33 +03:00
Jason Turner 88d197e0d7 Docs and cleanups of pong example 2016-09-20 15:14:10 -06:00
Jason Turner 9b204a4af0 Pong rework-working 2016-09-08 19:16:52 -06:00
Jason Turner aa9657f0b8 Handle retl to some extent 2016-09-08 18:57:10 -06:00
Jason Turner 03d360ac56 Cleanups for Conf 2016-08-24 16:56:07 -06:00
Jason Turner e3ebc954fa Reorganize file structure 2016-08-24 16:55:08 -06:00
Jason Turner 74b2f129bf Pong fully working 2016-08-13 08:13:27 -06:00
Jason Turner 70aa76dce9 Basic two player pong working 2016-08-09 14:02:56 -06:00
Jason Turner 68d93b0a1e Several CPU translator fixes 2016-08-08 17:05:16 -06:00
Jason Turner 6dcb39e300 Automatically reroute long branch instructions 2016-08-06 21:01:01 -06:00
Jason Turner d59fbdaf4c Reorg of register handling 2016-08-06 19:58:24 -06:00
Jason Turner 622354e6b2 Updates to work better with compiler explorer
yy
2016-08-06 13:08:24 -06:00
Jason Turner 974c907a3b Support much more translation
* many opcodes added
 * more registers
 * bug fixes
 * parsing of clang output enabled
2016-07-15 22:24:59 -06:00
Jason Turner 6439a13113 Fix hex/dec handling 2016-07-10 13:10:52 -06:00
Jason Turner 87f1962f2b Add some docs and test and cmake support 2016-07-07 15:48:27 -06:00
Jason Turner 8a0b8a107d Put readme.md in correct place 2016-07-07 15:26:12 -06:00
Jason Turner b5dd153cd4 Add readme.md with basic usage 2016-07-07 15:21:40 -06:00
Jason Turner 76bb4371a7 Add xor AX,AX trick, rts support 2016-07-07 14:58:39 -06:00
Jason Turner 04e0a8dbc9 Use Y over A when possible 2016-07-07 11:20:41 -06:00
Jason Turner d2e2f311c5 Warning fixes 2016-07-07 11:08:28 -06:00
Jason Turner f69150b386 Add support for D register, more opcodes 2016-07-07 10:51:54 -06:00
Jason Turner efcb6fa7ac Initial commit 2016-07-06 18:35:40 -06:00