Have .incbin take an optional offset and length for source bytes.
Remove the deprecated and incomplete compatibility mode for Perl65.
Add backup files to .gitignore
A new 'correctness optimization': ExtendBranches.

This pass actually isn't an optimizer in that it produces larger
binaries when it triggers. However, the larger binaries created
will actually assemble properly.

The ExtendBranches pass detects Relative instructions (that is,
branches) that extend past the signed-8-bit range Relative instructions
permit, and replaces them with a branch-jump combination with identical
semantics.

Since this may be evidence of a program bug, Ophis will warn when
the optimization is triggered.

Due to similarities between this pass and UpdateLabels, both passes
have been refactored in passing.
Allow '-' as a filename to mean standard input or output.

As part of this change, all assembler chat is being pushed to
standard error, where it probably should have been in the first place.
Scripts and batchfiles that relied on capturing the output of Ophis
will need to capture stderr now instead.
Fix bug in pass manager that was making the branch extender too aggressive.

We need to let the zero-page collapser do as much work as it can before
we get bent out of shape about out-of-range branches.
Add the NOP Zero Page undocumented opcode.

This seems to be one of the preferred undocced ops in the Atari
2600 VCS development community.
Remove spurious CRLFs
Win32 installer.

Includes the py2exe script, the version of the MSVC++ runtime Python 2.7
needs, and an NSIS script to assemble the installables out of the checkout
tree.

NB: Even though MakeNSIS is multiplatform, it should only be run on
Windows, since otherwise the linebreaks in the README won't be
Notepad-friendly.
Extend .advance to allow a filler expression.
New command-line system.

This is a full optparse-based parser for all the options we want
to have in Ophis 2.0, but the pass-disablers aren't working yet.

This also doesn't handle positional arguments the way we hope
to eventually; that will come later.

optparse is deprecated in 2.7, but its replacement isn't available
in any previous version of Python, so we avoid it so as to not
gratuitously break compatibility on older machines.

It would be nice to at least stay usable on stock Leopard Macs (2.5).
Braindead test script
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.
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.
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!
Basic platform headers.

 * C64, NES, and Atari 2600 ("Stella") useful constants headers.
 * crt0.s equivalent for C64.
 * Hello World for the C64.
Demo "Hello World" for the Stella/Atari 2600.
NES Hello World code

Includes iNES and UNIF linkage.
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'.
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.