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
8152590946
update readme to indicate 4502 support
2014-02-07 20:55:19 +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
Michael C. Martin
c25047ca66
Merge pull request #17 from catseye/exit-code-1-on-error
...
Exit with exit code 1 when errors occurred
2013-01-10 22:18:23 -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
ae59cbf3c4
Remove outdated website data
2012-06-16 02:05:45 -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
55d7344cc7
PDF version of manual
2012-06-13 00:07:10 -07:00
Michael Martin
0faae3f5b4
Update manuals
2012-06-12 23:13:55 -07:00
Michael Martin
51583ce5e0
Remind git about binary files and not to mangle them.
2012-06-12 19:11:34 -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
10c3b46996
Finish up the test suite
...
Quite a few tests fail; that'll need fixing.
2012-06-12 06:29:03 -07:00
Michael Martin
926eef2287
Many more unit tests.
...
- Labels
- Expressions
- Macros
- Outline for remaining tests (compilation units, segments, scoping)
2012-06-10 22:16:24 -07:00
Michael Martin
382a6a218b
Set STDOUT to binary mode on Windows if needed
2012-06-10 18:53:49 -07:00
Michael Martin
ffd96a8c2f
Update documentation.
2012-06-09 03:21:33 -07:00
Michael Martin
07f807d680
Documentation and examples reorganization
2012-06-08 23:41:16 -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
47be777884
Test suite: new tests for basic I/O and binary transforms
2012-06-08 21:50:28 -07:00
Michael Martin
6e30cc4153
Wide instruction format for 65c02
2012-06-08 21:45:38 -07:00
Michael Martin
e44ad61af9
Improved test script
...
This script requires Python 2.4, for the subprocess module.
2012-06-08 02:49:29 -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
Michael Martin
cf0df92fb1
Wrap up the new file/dir handling.
...
An .outfile directive lets sources suggest default filenames.
Also, .include, .require, .incbin, and .charmapbin are relative
to their _source file_ as opposed the _directory you called Ophis
from_, like it really should have always been.
2012-06-03 19:50:17 -07:00
Michael Martin
17f68399ef
Allow support for multiple input files.
...
To account for this change, output files are now prefixed with the
-o option, and if none is specified, it defaults to 'ophis.bin'.
2012-06-03 18:32:25 -07:00
Michael Martin
809bf51239
NES Hello World code
...
Includes iNES and UNIF linkage.
2012-06-03 15:09:18 -07:00
Michael C. Martin
a9f406489d
Demo "Hello World" for the Stella/Atari 2600.
2012-06-02 20:06:14 -07:00
Michael Martin
feba267ee7
Basic platform headers.
...
* C64, NES, and Atari 2600 ("Stella") useful constants headers.
* crt0.s equivalent for C64.
* Hello World for the C64.
2012-06-02 02:45:05 -07:00
Michael C. Martin
14a37ca879
Massive code modernization spree.
...
Full PEP8 compliance. Also, booleans have been inserted where
they make sense (introduced in 2.3!) and I haven't knowingly
added anything that will break 2.3 compatibility.
At this point the code really doesn't look like it was written
ten years ago. Hooray!
2012-06-02 00:04:15 -07:00
Michael Martin
f83379287f
Don't destroy the OptParser.
...
As long as we're not gratuitously breaking compatibility, this
cleanup isn't available in 2.3 and it's not like ophis runs long
enough for this to be an issue anyway.
2012-06-01 00:39:12 -07:00
Michael C. Martin
d955fe00a1
Switch to "new-style" classes, because come on.
...
Ophis was originally written for Python 2.1, and it kind of shows.
Python 2.3 introduced booleans and optparse, so there's no reason
to not use new-style classes.
2012-06-01 00:24:51 -07:00
Michael C. Martin
1bbb2f1f1b
Braindead test script
2012-06-01 00:24:30 -07:00