6502 cross-assembler with original syntax extensions
Go to file
Piotr Fusik 5970a93423 xasm 3.1.0 release. 2014-07-20 19:10:41 +02:00
debian xasm 3.1.0 release. 2014-07-20 19:10:41 +02:00
.gitignore RPM and tar.gz distributions. 2014-06-12 17:24:12 +02:00
Makefile Exclude xasm.o from OS X distribution. 2014-07-20 17:39:35 +02:00
README.md xasm 3.1.0 release. 2014-07-20 19:10:41 +02:00
xasm.1.txt xasm 3.1.0 release. 2014-07-20 19:10:41 +02:00
xasm.d "opt u-" disables "/u" unused label warnings. 2014-04-30 09:19:49 +02:00
xasm.properties xasm 3.0.1 release. 2013-01-07 12:07:32 +01:00
xasm.spec xasm 3.1.0 release. 2014-07-20 19:10:41 +02:00

README.md

xasm

xasm is a 6502 cross-assembler with original syntax extensions. By default it generates binaries for Atari 8-bit computers.

Syntax

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. To install xasm syntax highlighting and single-keystroke compilation, copy xasm.properties to the SciTE directory.

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 on GitHub.

Download

xasm 3.1.0 for Windows, OS X, Ubuntu and Fedora.

  • Atari800 - portable emulator of Atari 8-bit computers
  • Atari XL/XE Source Archive - source code of Atari demos, utilities and games
  • cc65 - C cross-compiler targeting 6502-based systems
  • MADS - another 6502/65816 cross-assembler, partially supporting xasm's syntax
  • WUDSN IDE - Eclipse plugin, front-end to several 6502 cross-assemblers including xasm