2013-05-10 18:14:56 +00:00
|
|
|
xasm
|
|
|
|
====
|
|
|
|
|
|
|
|
xasm is a 6502 cross-assembler with original syntax extensions.
|
2014-06-11 10:00:06 +00:00
|
|
|
By default it generates binaries
|
|
|
|
for [Atari 8-bit computers](http://en.wikipedia.org/wiki/Atari_8-bit_family).
|
2013-05-10 18:14:56 +00:00
|
|
|
|
2014-06-11 10:00:06 +00:00
|
|
|
Syntax
|
|
|
|
------
|
2013-05-10 18:14:56 +00:00
|
|
|
|
2014-06-11 10:00:06 +00:00
|
|
|
6502 assembly language is full of LDA, STA, LDA, STA sequences.
|
|
|
|
With xasm you can use MVA as a shortcut for an LDA/STA pair or even MWA for 16-bit transfers.
|
|
|
|
You can avoid defining labels when you need short jumps,
|
|
|
|
thanks to conditional skip and repeat pseudo-instructions.
|
|
|
|
You can put two instructions that share their argument in one line.
|
|
|
|
These are just some of the features that help you program in a more concise way.
|
|
|
|
Let's look at typical 6502 code (which is also valid in xasm):
|
|
|
|
|
|
|
|
lda #<dest
|
|
|
|
sta ptr
|
|
|
|
lda #>dest
|
|
|
|
sta ptr+1
|
|
|
|
ldx #192
|
|
|
|
do_line
|
|
|
|
ldy #39
|
|
|
|
do_byte
|
|
|
|
lda pattern,y
|
|
|
|
sta (ptr),y
|
|
|
|
dey
|
|
|
|
bpl do_byte
|
|
|
|
lda #40
|
|
|
|
clc
|
|
|
|
adc ptr
|
|
|
|
sta ptr
|
|
|
|
bcc skip
|
|
|
|
inc ptr+1
|
|
|
|
skip
|
|
|
|
dex
|
|
|
|
bne do_line
|
|
|
|
|
|
|
|
Using xasm's features this code can be rewritten to:
|
|
|
|
|
|
|
|
mwa #dest ptr
|
|
|
|
ldx #192
|
|
|
|
do_line
|
|
|
|
ldy #39
|
|
|
|
mva:rpl pattern,y (ptr),y-
|
|
|
|
lda #40
|
|
|
|
add:sta ptr
|
|
|
|
scc:inc ptr+1
|
|
|
|
dex:bne do_line
|
|
|
|
|
|
|
|
xasm syntax is based on 1990's Quick Assembler.
|
|
|
|
Write accumulator shifts as in `asl @`.
|
|
|
|
Whitespace is important: it is required before the instruction
|
|
|
|
and disallowed in the operands, because it separates a comment from the operand, e.g.
|
|
|
|
|
|
|
|
lda #0 this is a comment, no need for a semicolon
|
|
|
|
|
|
|
|
This may look weird at first, but it enables nice features such as instruction pairs
|
|
|
|
and two-argument pseudo-instructions.
|
|
|
|
|
|
|
|
Usage
|
|
|
|
-----
|
|
|
|
|
|
|
|
xasm is a command-line tool.
|
|
|
|
Therefore you additionally need a programmer's text editor.
|
|
|
|
|
|
|
|
I use [SciTE](http://www.scintilla.org/SciTE.html).
|
2014-06-12 15:24:51 +00:00
|
|
|
To install xasm syntax highlighting and single-keystroke compilation,
|
|
|
|
copy `xasm.properties` to the SciTE directory.
|
2014-06-11 10:00:06 +00:00
|
|
|
|
2014-06-12 15:24:51 +00:00
|
|
|
For single source file programs, press Ctrl+F7 to compile.
|
|
|
|
You can double-click error messages to go to the incorrect line.
|
|
|
|
Press F5 to run the program in the emulator.
|
|
|
|
|
|
|
|
For larger projects, I use GNU Make. Press F7 to build (and possibly run)
|
|
|
|
a project as described in the `Makefile`. You can find my Makefiles in
|
|
|
|
[my repositories](https://github.com/pfusik?tab=repositories) on GitHub.
|
2014-06-11 10:00:06 +00:00
|
|
|
|
2014-07-22 08:22:17 +00:00
|
|
|
If you prefer VIM, see a link below.
|
|
|
|
|
2014-06-11 10:00:06 +00:00
|
|
|
Download
|
|
|
|
--------
|
|
|
|
|
2014-07-20 17:10:41 +00:00
|
|
|
[xasm 3.1.0](https://github.com/pfusik/xasm/releases) for Windows, OS X, Ubuntu and Fedora.
|
2014-06-11 10:00:06 +00:00
|
|
|
|
|
|
|
Links
|
|
|
|
-----
|
|
|
|
|
|
|
|
* [Atari800](http://atari800.sourceforge.net/) - portable emulator of Atari 8-bit computers
|
|
|
|
* [Atari XL/XE Source Archive](http://sources.pigwa.net/) - source code of Atari demos, utilities and games
|
|
|
|
* [cc65](http://cc65.github.io/cc65/) - C cross-compiler targeting 6502-based systems
|
|
|
|
* [MADS](http://mads.atari8.info/) - another 6502/65816 cross-assembler, partially supporting xasm's syntax
|
2014-07-22 08:22:17 +00:00
|
|
|
* [vim-xasm](https://github.com/lybrown/vim-xasm) - VIM syntax highlighting for xasm
|
2014-06-11 10:00:06 +00:00
|
|
|
* [WUDSN IDE](http://wudsn.com/) - Eclipse plugin, front-end to several 6502 cross-assemblers including xasm
|