http://www.stojalowski.de/files/XAsm_release.zip
Included are 2 versions, a commandline only version (XAsm.exe) and a version with a minimal(!) GUI (XAsm_Win.exe). I use the commandline version together with my favourite editor which makes for a nice development environment.
To show whats possible I include the sources for LCE and VPokerAsm.
Excerpt from MiniManual:
Code: Select all
Features:
- 2 pass assembler
- direct output for Commodore machines (binaries including load address)
- redefinable labels
- local labels
- macros with nesting
- repeat loops with nesting and expression evaluation as loop counter
- conditional assembly based on values or defined/undefined labels
- illegal opcodes (as described in 6502-NMOS_extra_opcodes.htm)
- does everything I need :-)
- supports 6502, 6502 inkl. illegal opcodes and 65SC02
Another nice feature me thinks is the output of cycles for each mnemonic in the listfiles:
Code: Select all
147B: ; ----------------------------------------------------------------
147B: ; Invert character
147B: ; ----------------------------------------------------------------
147B: A0 07 [ 2 ] InvChar : ldy #7
147D: B1 14 [5/6] InvC1 : lda ($14),y
147F: 49 FF [ 2 ] eor #$ff
1481: 91 14 [6/7] sta ($14),y
1483: 88 [ 2 ] dey
1484: 10 F7 [2/3] bpl InvC1
1486: 60 [ 6 ] rts
[2/3] means 2 cycles if branch not taken, 3 cycles if branch taken
[5/6] means 5 cycles, 6 cycles if page boundary is crossed
Of course we have some adjustments for branches over page boundaries:
Code: Select all
1FF0: * = $1FFA
1FF0:
1FF0: ; ---------------------------------------------------------------------
1FF0: ; test for cycle counting
1FF0: ; ---------------------------------------------------------------------
1FFA: A2 FF [ 2 ] Lab1: ldx #$FF
1FFC: A9 01 [ 2 ] lda #1
1FFE: 8D 00 10 [ 4 ] sta $1000
2001: CA [ 2 ] dex
2002: D0 F6 [2/5] bne Lab1 ; 5 cycles if branch taken because of page boundary crossing!
2004: 60 [ 6 ] rts
I know, most of you are using DASM, but maybe this is of use for someone else...