Commit Graph

68 Commits

Author SHA1 Message Date
Michael Martin 99f074da27 Fix the listing/map output to be Python 3 compatible 2019-04-12 20:47:01 -07:00
Michael Martin 41bf01d035 Convert Ophis to Python 3.
Most of the work is handled by 2to3, but there's a few extra tricks
needed to finish the job, mostly about picking the right bits to be
Unicode and the right bits to be bytes.
2019-01-09 20:45:01 -08:00
Michael Martin 971fafd918 Fix the 4502 opcode table generator 2019-01-09 20:23:58 -08:00
Michael Martin 778fbf7e2c Improved Atari 2600 example programs
Add the color test program as a sample program. Also update
the hi_stella example so that it runs properly when run in a Harmony
cartridge.
2015-01-07 00:35:21 -08:00
Michael Martin c3d48da59d Fix issue with branches in listfiles.
Due to whitespace vagaries, etc., a sample correct output has been
added to the test case files, but isn't directly checked as part
of verification.
2014-05-24 19:52:33 -07:00
Michael Martin 3b41dde751 Update Windows installer for 2.1 2014-05-24 07:21:49 -07:00
Michael C. Martin f656a69a90 Merge pull request #25 from catseye/usr-bin-env-python
For scripts, use the Python interpreter that's found on the path.
2014-05-24 07:19:40 -07:00
Michael Martin d3772587da Include a .cbmfloat pragma to make creating data simpler
Due to the usual vagaries of floating point, these are not completely
perfect, but for "human-scale" numbers it will be OK.
2014-05-18 23:19:22 -07:00
Cat's Eye Technologies 8f53f2d213 For scripts, use the Python interpreter that's found on the path. 2014-05-17 07:19:35 +01:00
Michael C. Martin f48071add9 Merge pull request #22 from catseye/printable-chars-in-listing
Good catch. Merging that in 2.1.
2014-05-14 09:10:10 -07:00
Michael Martin 5b64c9701e Refactor the label mapper to be more like the lister. 2014-05-14 05:56:59 -07:00
Michael Martin bac908bff5 Much prettier label map files 2014-05-09 23:55:56 -07:00
Michael Martin 70f93b22eb Rework label map collection
This uses a pass to interrogate the system for locations, then dumps
those out instead. It handles includes, anonymous labels, and basic
macros, but it does so in a somewhat ugly way. This data can be
readily abbreviated and should also be re-sorted.
2014-05-09 23:11:09 -07:00
Cat's Eye Technologies 1ab61cd3be The ASCII characters DEL (127) and US (31) are not printable. 2014-04-26 13:16:15 +01:00
Cat's Eye Technologies c0bf2e98b7 A very, *very* poor-man's version of label<->address dump. Ugh! 2014-03-24 12:32:17 +00:00
gardners d407791aa9 Merge github.com:michaelcmartin/Ophis into temp 2014-03-23 16:53:39 +10:30
gardners a7994f9e85 4502 instructions INW and DEW are Zero Page, not Absolute 2014-03-23 16:51:01 +10:30
Michael Martin 42f01f7cd6 Bump minor version number and copyright dates 2014-03-22 22:09:11 -07:00
Michael Martin 3f13609932 Post-merge adjustments to 4502 patch. 2014-03-22 22:03:06 -07:00
gardners adf965fc9d fix SBX (ZeroPage), Z for 4502 2014-02-08 02:56:41 +10:30
gardners bcfd08c750 Fix 16-bit immediate mode. 2014-02-08 02:55:26 +10:30
gardners dcc37f5751 Implement test for 4502 extensions.
Fix numerous bugs revealed through tests, some more remain.
2014-02-08 02:51:42 +10:30
gardners 591fc2fe35 make addressing mode cooercion work with varying addressing mode
lists.
2014-02-08 02:19:14 +10:30
gardners 5c162d2407 restore branch expansion for non-4502 targets 2014-02-08 01:59:42 +10:30
gardners 6856da1bbf fix various bugs with 4502 assembly. 2014-02-07 20:52:11 +10:30
gardners 5c4b23cbee fix 16-bit branch out-by-one error 2014-02-07 20:23:56 +10:30
gardners dec3106744 implement new 4510 addressing modes.
promote relative branches to 16-bit when required.
2014-02-07 20:22:06 +10:30
gardners c4be540f49 add 4502 option to Ophis command line. 2014-02-06 22:23:28 +10:30
gardners ccef1b663f update Opcodes.py to include 4502 opcodes 2014-02-06 22:20:24 +10:30
gardners 7686b21396 update addressing modes. Add 4502 to chipsets.txt 2014-02-06 22:19:38 +10:30
gardners 45e79d5583 add 4502 opcode table. 2014-02-06 22:06:40 +10:30
Michael Martin 364b39edfb First draft of listfile support.
The .listfile pragma and the -l command line option will select the
output file for the listing.
2013-04-13 19:57:24 -07:00
Michael Martin e5ac21f0f9 Second attempt at implementation of the BBXn instructions for Rockwell 65c02 chips.
Reliable technical documentation for how these instructions are decoded is a
little thin on the ground online, so some of this implementation is still
speculative.
2013-01-27 20:18:08 -08:00
Michael C. Martin 1c7174e696 Merge pull request #14 from catseye/fix-templabelcount
Declare templabelcount as a global in atom().
2013-01-10 22:25:03 -08:00
Cat's Eye Technologies 5fc504c6c1 Exit with exit code 1 if there were errors, 0 otherwise. 2012-10-25 10:51:39 +01:00
Cat's Eye Technologies 0b020a827b Add missing 'sys.' and remove unused module import. 2012-08-03 20:13:00 -05:00
Cat's Eye Technologies 45784e9b95 Declare templabelcount as a global in atom(). 2012-07-28 13:34:51 -05:00
Michael Martin 4ad16be245 Put tools under src 2012-06-16 02:07:02 -07:00
Michael Martin 5362a635c8 Fix up some typos in meta text. 2012-06-16 01:37:55 -07:00
Michael Martin 9ef2b91e9e packaging for 2.0 release 2012-06-13 00:24:21 -07:00
Michael Martin 7f650e787d Fix the bugs the test suite found
- .require now tracks absolute paths of loaded files
 - stricter checking of .incbin arguments
 - fix charmap reset directive
 - Allow register names (a, x, y) as labels, with warning
 - Allow opcode names as labels, with warning
2012-06-12 06:29:03 -07:00
Michael Martin 382a6a218b Set STDOUT to binary mode on Windows if needed 2012-06-10 18:53:49 -07:00
Michael Martin cc9acf3ce4 Bugfix: Let Collapse Pass reverse collapses
This can happen if a branch extender pass shifts a load's target
label past the zero-page boundary.
2012-06-08 22:23:42 -07:00
Michael Martin 6e30cc4153 Wide instruction format for 65c02 2012-06-08 21:45:38 -07:00
Michael Martin 23700276a6 Introduce wide-mode override opcodes.
This solves the --no-collapse problem by letting you force
Absolute mode on an instruction by instruction bases, which is
usually going to be what you want anyway.
2012-06-06 05:13:19 -07:00
Michael Martin 4891849e4a Pass control command line options.
It turns out that --enable-collapse is fundamentally misguided. We'll
need a better solution for that. --no-branch-extension looks pretty good.
2012-06-06 04:33:21 -07:00
Michael Martin 7e503df96f Bugfix: .include wasn't blocking later .requires
When crossing directories, this will still be wrong, but that's a
larger fix for later.
2012-06-04 00:35:53 -07:00
Michael Martin 9323067e91 Improve .incbin to let its arguments be arbitrary expressions
This introduces a new IR node for mutable-during-assembly ranges.
In the common case, where offset and range are hardcoded or missing,
it continues with the older, more efficient behavior.
2012-06-03 23:50:29 -07:00
Michael Martin 9ea0962e52 Fixed missing import. 2012-06-03 20:22:48 -07:00
Michael Martin 86e58efce8 Merge catseye's incbin-range enhancement.
Needed a little work to merge cleanly, but no real surprises.

This isn't a complete solution yet, but it will work for the
basic case. It should allow expressions and gracefully handle
non-hardcoded cases (while still efficiently handling hardcoded
ones).
2012-06-03 20:00:40 -07:00