snescom 1.7.0

snescom is a 65c816 (SNES, etc.) assembler.
This program reads symbolic 65816 or 65c816 machine code and compiles (assembles) it into a relocatable object file.

The produced object file is binary-compatible with those made with XA65.

This program was born when Bisqwit needed a relocatable object -producing snes assembler and XA65 had too many bugs in it.

He was unable to fix the XA65 source so he started his own project, aiming for enough compatibility to be able to use the assembly files already written in the XAxa65 syntax.
Since that, this program has been growing to meet the needs in SNES game and patch development.

The following mnemonics are supported:

adc, and, asl, bcc, bcs, beq, bit, bmi, bne, bpl, bra, brk, brl, bvc, bvs, clc, cld, cli, clv, cmp, cop, cpx, cpy, db , dec, dex, dey, eor, inc, inx, iny, jml, jmp, jsl, jsr, lda, ldx, ldy, lsr, mvn, mvp, nop, ora, pea, pei, per, pha, phb, phd, phk, php, phx, phy, pla, plb, pld, plp, plx, ply, rep, rol, ror, rti, rtl, rts, sbc, sec, sed, sei, sep, sta, stp, stx, sty, stz, tax, tay, tcd, tcs, tdc, trb, tsb, tsc, tsx, txa, txs, txy, tya, tyx, wai, xba, xce

All the standard addressing modes of the 65816 cpu are supported.

Syntax:

· Implied: nop; clc
· Immediate: lda #value; rep #value etc (size may depend on an operand size setting)
· Short relative: bra end
· Long relative: brl end; per end+2
· Direct: lda $12
· Direct indexed: lda $12,x; lda $12,y
· Direct indirect: lda ($12); pei ($12)
· Direct indexed indirect: lda ($12,x)
· Direct indirect indexed: lda ($12),y
· Direct indirect long: lda [$12]
· Direct indirect indexed long: lda [$12],y
· Absolute: lda $1234
· Absolute indexed: lda $1234,x; lda $1234,y
· Absolute long: lda $123456
· Absolute indexed long: lda $123456,x
· Stack-relative: lda $12,s
· Stack-relative indirect indexed: lda ($12,s),y
· Absolute indirect: lda ($1234)
· Absolute indirect long: lda [$1234]
· Absolute indexed indirect: lda ($1234,x)
· MVN/MVP: mvn $7E,$7F

For reference, in Intel syntax it would be something like this (not supported by snescom):

· Implied: nop; clc
· Immediate: lda value; rep value etc (size may depend on an operand size setting)
· Short relative: bra end
· Long relative: brl end; per end+2
· Direct: lda [$00:d+$12]
· Direct indexed: lda [$00:d+$12+x]; lda [$00:d+$12+y]
· Direct indirect: lda [db:[$00:d+$12]]; pei [db:[$00:d+$12]]
· Direct indexed indirect: lda [db:[$00:d+$12+x]]
· Direct indirect indexed: lda [db:[$00:d+$12]+y]
· Direct indirect long: lda [long[$00:d+$12]]
· Direct indirect indexed long: lda [long[$00:d+$12]+y]
· Absolute: lda [db:$1234]
· Absolute indexed: lda [db:$1234+x]; lda [db:$1234+y]
· Absolute long: lda [$12:$3456]
· Absolute indexed long: lda [$12:$3456+x]
· Stack-relative: lda [$00:$12+s]
· Stack-relative indirect indexed: lda [db:[$00:$12+s]+y]
· Absolute indirect: lda [db:[$1234]]
· Absolute indirect long: lda [long[db:$1234]]
· Absolute indexed indirect: lda [db:[db:$1234+x]]
· MVN/MVP: mvn $7E,$7F

What's New in This Release:

· This release updates the linker program, adding a feature to output raw files, or even ROM files directly in the SMC format, with proper checksums.
· The error handling of the assembler was improved somewhat.

last updated on:
July 27th, 2006, 17:35 GMT
price:
FREE!
developed by:
Bisqwit
license type:
GPL (GNU General Public License) 
category:
ROOT \ Programming \ Assembler Tools

FREE!

In a hurry? Add it to your Download Basket!

user rating

UNRATED
0.0/5
 

0/5

Add your review!

SUBMIT