Compare commits

...

84 Commits

Author SHA1 Message Date
Piotr Fusik 8eb2a5ae6f Migrate to the new macOS notarization tool.
The old one no longer works.
2024-05-18 21:45:34 +02:00
Piotr Fusik 9732817a0b Modernize the RPM spec. 2023-07-11 10:56:46 +02:00
Piotr Fusik 70c907bae6 Revert "Warn about a comment starting with a comma."
Breaks Jaskier's MPT player.
https://sourceforge.net/p/asap/bugs/32/

This reverts commit 7a666799ac.
2023-05-07 21:03:40 +02:00
Piotr Fusik 7a666799ac Warn about a comment starting with a comma. 2023-02-28 16:59:52 +01:00
Piotr Skamruk 95136d1546 Tune variable/func names after sequencing support added 2022-12-20 15:52:39 +01:00
Piotr Fusik ca5e88950f xasm 3.2.1 release. 2022-12-08 11:49:40 +01:00
Piotr Fusik 138331193a DMD seems to no longer append ".exe". 2022-12-08 09:53:32 +01:00
Piotr Fusik 30c96357bc Allow stdout for the listing and label table. 2022-12-08 09:27:19 +01:00
Jakub Husak 83d2f8ff1d Refactor LDA and STA with existing routines. 2022-12-02 15:23:07 +01:00
Adrian Matoga 9aae1ad4c4 Instruction pairing extended to more than two instructions. 2022-11-30 10:11:12 +01:00
Piotr Fusik f33c112ac6 Switch CI from Travis to GitHub Actions.
Close #10
2022-11-29 14:08:39 +01:00
Piotr Fusik 57661276c2 Fix "Error processing arguments: Missing value for argument --compiler=". 2022-11-29 14:04:51 +01:00
Piotr Fusik a4225b6128 GitHub Actions don't know gdc. 2022-11-29 14:01:33 +01:00
Piotr Fusik 1da9f77458 Add the missing part of GitHub Actions. 2022-11-29 13:59:41 +01:00
Piotr Fusik 2b7d21ae43 Continuous Integration with GitHub Actions. 2022-11-29 13:51:14 +01:00
Adrian Matoga 2f67b3bab4 Allow stdin/stdout instead of files for source and object. 2022-11-29 11:22:55 +01:00
Piotr Fusik afb9f7830e Update DEB packaging. 2022-07-23 11:45:14 +02:00
Piotr Fusik 95cb5ae592 install-scite non-executable. 2021-12-23 16:43:11 +01:00
Piotr Fusik 8f6621f079 Update DEB packaging. 2021-12-23 16:41:52 +01:00
Piotr Fusik 52982169df xasm 3.2.0 release. 2021-06-22 21:20:00 +02:00
Piotr Fusik 8c7ef1a922 Reword the manual. 2021-06-21 22:44:34 +02:00
Piotr Fusik 1a90ca04d3 Bump the copyright year. 2021-06-21 22:42:13 +02:00
Piotr Fusik 73b382f9b7 Fix macOS notarization. 2021-06-21 22:40:50 +02:00
Piotr Fusik 7ba3f9f597 Signed the Windows binary. 2021-06-20 19:01:53 +02:00
Piotr Fusik b815a448cd Migrate to travis-ci.com. 2021-06-16 09:11:04 +02:00
Piotr Fusik 274dda9dd2 Wait for macOS notarization. 2021-06-04 21:50:23 +02:00
Piotr Fusik da58ad7950 Sign and notarize the macOS binary. 2021-06-04 21:38:25 +02:00
Piotr Fusik 52ef8c05d6 OPT ?+ for MADS compatibility. 2021-03-25 09:03:23 +01:00
Piotr Fusik 6f25038d95 On macOS install in /usr/local/bin.
Close #8
2021-03-24 10:49:14 +01:00
Adrian Matoga 57ef9b5c83 Fix failed assertion when opt l+ is used 2021-03-15 07:18:15 +01:00
Adrian Matoga 8f06fec50c Enable simple local labels. 2021-03-14 19:46:09 +01:00
Piotr Fusik d50d484e1f Update DEB packaging. 2020-10-29 20:07:35 +01:00
Piotr Fusik 65a2c1fbdd Deprecate DOS-style options. 2020-05-25 21:36:28 +02:00
Piotr Fusik d3908ec95e Don't report error deleting the object file on error.
Most likely the file doesn't exist.
2020-05-21 19:38:49 +02:00
Piotr Fusik 647cf9f3cf Don't cast to arrays of mutable bytes. 2019-12-04 23:23:47 +01:00
Piotr Fusik 819701b9be Optimize moving negative immediate word. 2019-12-04 23:16:21 +01:00
Piotr Fusik 301b904f60 xasm 3.1.1 release. 2019-11-20 17:43:51 +01:00
Piotr Fusik 420a83a897 Adapt srcdist to new tools. 2019-10-29 20:16:03 +01:00
Piotr Fusik 2f8e97499d Fix unreachable statement. 2019-10-16 09:28:13 +02:00
Piotr Fusik 7ad066fc6f Remove the object file on error even if not written.
Close #4.
2019-10-16 09:24:36 +02:00
Piotr Fusik a0bfe1366d Remove the object file on error.
Close #4.
2019-10-14 10:56:46 +02:00
Piotr Fusik 384643ab84 Test with GDC and LDC. 2019-10-06 18:46:12 +02:00
Piotr Fusik 177ece15fc Add Travis badge. 2019-10-06 17:35:21 +02:00
Piotr Fusik 99099938b5 Silence unit tests. 2019-10-06 17:24:59 +02:00
Piotr Fusik cb92f715a9 Fix "dub test". 2019-10-06 17:07:42 +02:00
Piotr Fusik 110d2c4dad Introduce DUB. 2019-10-06 17:00:48 +02:00
Piotr Fusik ce134af833 Cleanup .gitignore. 2019-08-24 09:47:52 +02:00
Piotr Fusik 92eac212cc Apply dos2unix. 2019-08-24 09:46:29 +02:00
Piotr Fusik 90276dbe86 std.conv is already imported. 2019-08-24 09:43:41 +02:00
maraflush 2e43507088 fix compilation issue
fix :
xasm.d(2655): Error: Built-in hex string literals are obsolete, use std.conv.hexString!"ea" instead.
xasm.d(2656): Error: Built-in hex string literals are obsolete, use std.conv.hexString!"18a2006105" instead.
xasm.d(2657): Error: Built-in hex string literals are obsolete, use std.conv.hexString!"a9cd8d3412a9ab8d3512" instead.
xasm.d(2658): Error: Built-in hex string literals are obsolete, use std.conv.hexString!"05a6efef8945" instead.
xasm.d(2660): Error: Built-in hex string literals are obsolete, use std.conv.hexString!"400100000000 401200000000 410123000000 441234567890 461234567890 3f5000000000 3f0300000000 3f1664534589 701000000000" instead.
2019-08-24 09:17:57 +02:00
Piotr Fusik cc0eaf0e48 Rename the documentation so that GitHub formats it. 2019-03-26 23:48:10 +01:00
Piotr Fusik 2dad630a75 Update some links. 2019-03-26 23:34:56 +01:00
Piotr Fusik 36a4853b54 Fix whitespace. 2017-07-29 14:06:15 +02:00
Piotr Fusik c4fc8ef51a License. 2017-07-28 21:36:10 +02:00
Piotr Fusik ef297a78c7 Reword README slightly. 2017-02-08 19:59:22 +01:00
Piotr Fusik 061088aa62 Update for DMD v2.073. 2017-02-08 19:32:42 +01:00
Piotr Fusik dd3466a947 SciTE: Fix the open filter. Add to the Language menu. 2016-12-15 20:43:40 +01:00
peterdell d2bd24a128 Add .gitignore 2016-01-03 11:23:16 +01:00
peterdell 8d0870d1a1 Fix typo in readme 2016-01-03 11:21:17 +01:00
Piotr Fusik d7c22cec84 Include label name in the unused label warning.
Close #1.
2016-01-03 08:47:19 +01:00
Piotr Fusik b42f9dc2bf Support a:/f: modifiers on run/ini. 2014-12-31 14:30:09 +01:00
Piotr Fusik 5680efc7f5 Improve I/O performance on Windows (especially network drives).
Reported by Marek Pavlik.
2014-09-26 16:42:54 +02:00
Piotr Fusik 8c6ff185af vim-xasm 2014-07-22 10:22:17 +02:00
Piotr Fusik 5970a93423 xasm 3.1.0 release. 2014-07-20 19:10:41 +02:00
Piotr Fusik 389f7446e0 Exclude xasm.o from OS X distribution. 2014-07-20 17:39:35 +02:00
Piotr Fusik 3cec1c8ee8 Extend OS X compatibility: 32-bit binary for 10.6. 2014-07-20 17:14:36 +02:00
Piotr Fusik 60d28a5c24 xasm-scite DEB. 2014-06-12 21:19:11 +02:00
Piotr Fusik de22438740 More details about the SciTE integration. 2014-06-12 17:24:51 +02:00
Piotr Fusik cc5568795e RPM and tar.gz distributions. 2014-06-12 17:24:12 +02:00
Piotr Fusik d1276f3d97 DEB distribution. 2014-06-11 14:41:49 +02:00
Piotr Fusik 2d8b3cde17 Update README. 2014-06-11 12:00:06 +02:00
Piotr Fusik c357fba52c OS X distribution. 2014-06-10 13:50:42 +02:00
Piotr Fusik 61327c8e5b "opt u-" disables "/u" unused label warnings. 2014-04-30 09:19:49 +02:00
Piotr Fusik 167c441fed INS: optimize "opcode" if length not specified as one. 2014-04-04 20:26:33 +02:00
Piotr Fusik 3a845f9a4f INS: allow line repeating (suggested by Marek Pavlik), taking "opcode", skip/repeat branches. 2014-04-04 20:20:40 +02:00
Piotr Fusik 50bae061f7 Remove duplicate filenames for -M. 2014-02-21 23:29:58 +01:00
Piotr Fusik 520145268a If cannot open the file to be included, report error in the ICL line. 2014-02-21 23:06:03 +01:00
Piotr Fusik 059b631aab Generate manpage. 2013-10-02 13:24:57 +02:00
Piotr Fusik f2e7796c87 6502 inflate is a separate project. 2013-10-02 13:16:42 +02:00
Piotr Fusik 61bffbb8ec README for GitHub. 2013-05-10 20:14:56 +02:00
Piotr Fusik a2d6f9c864 DMD64 compilation errors reported by Vadim Akimov. 2013-03-19 11:13:26 +01:00
Piotr Fusik 3fc9b5c0f5 Get rid of the deprecated std.stream. 2013-03-19 11:12:12 +01:00
Piotr Fusik 406354e06c Updated to DMD 2.061. Implemented /p outside Windows. Restored blank lines in the listing. 2013-02-19 17:37:14 +01:00
Adrian Matoga 6992795f55 Upgraded to DMD 2.051. 2013-02-19 14:59:55 +01:00
18 changed files with 4341 additions and 4257 deletions

16
.github/workflows/test.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: tests
on: [push, pull_request]
jobs:
test:
strategy:
matrix:
os: [windows-latest, ubuntu-latest]
dc: [dmd-latest, ldc-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@main
- uses: dlang-community/setup-dlang@v1
with:
compiler: ${{ matrix.dc }}
- run: dub build
- run: dub test

10
.gitignore vendored Normal file
View File

@ -0,0 +1,10 @@
/xasm
/xasm.exe
/xasm.obj
/xasm.html
/xasm.1
/xasm-test-*
/MANIFEST
/.dub
/.project
/signed

127
Makefile
View File

@ -1,53 +1,74 @@
VERSION = 3.0.2
ASCIIDOC = asciidoc -o $@ -a doctime
ASCIIDOC_POSTPROCESS = perl -pi.bak -e "s/527bbd;/20a0a0;/;END{unlink '$@.bak'}" $@
ASCIIDOC_VALIDATE = xmllint --valid --noout --nonet $@
RM = rm -f
ZIP = 7z a -mx=9 -tzip $@
all: xasm.exe xasm.html
xasm.exe: xasm.d
dmd -O -release $<
xasm.html: xasm.1.txt
$(ASCIIDOC) -d manpage $<
$(ASCIIDOC_POSTPROCESS)
$(ASCIIDOC_VALIDATE)
dist: xasmpage-$(VERSION).zip
xasmpage-$(VERSION).zip: xasm261.zip xasm-$(VERSION)-src.zip xasm-$(VERSION)-windows.zip inflate6502.zip index.html inflate.html scite.png
$(RM) $@
$(ZIP) $^
xasm-$(VERSION)-src.zip: xasm.d Makefile xasm.1.txt
$(RM) $@
$(ZIP) $^
xasm-$(VERSION)-windows.zip: xasm.exe xasm.html xasm.properties
$(RM) $@
$(ZIP) $^
inflate6502.zip: inflate.asx gzip2deflate.c gzip2deflate.exe
$(RM) $@
$(ZIP) $^
gzip2deflate.exe: gzip2deflate.c
mingw32-gcc -s -O2 -Wall -o $@ $<
index.html: index.txt
$(ASCIIDOC) $<
$(ASCIIDOC_POSTPROCESS)
$(ASCIIDOC_VALIDATE)
inflate.html: inflate.txt
$(ASCIIDOC) $<
$(ASCIIDOC_POSTPROCESS)
$(ASCIIDOC_VALIDATE)
clean:
$(RM) xasmpage-$(VERSION).zip xasm-$(VERSION)-src.zip xasm-$(VERSION)-windows.zip xasm.exe xasm.html inflate6502.zip gzip2deflate.exe index.html inflate.html
.DELETE_ON_ERROR:
VERSION = 3.2.1
prefix = /usr/local
bindir = $(prefix)/bin
mandir = $(prefix)/share/man/man1
ifeq ($(OS),Windows_NT)
EXEEXT = .exe
endif
SEVENZIP = 7z a -mx=9 -bd -bso0
all: xasm$(EXEEXT) xasm.html
xasm$(EXEEXT): source/app.d
dmd -of$@ -O -release $<
xasm.html: xasm.1.asciidoc
asciidoc -o - $< | sed -e "s/527bbd;/20a0a0;/" >$@
xasm.1: xasm.1.asciidoc
a2x -f manpage $<
install: xasm xasm.1
mkdir -p $(DESTDIR)$(bindir) && install xasm $(DESTDIR)$(bindir)/xasm
mkdir -p $(DESTDIR)$(mandir) && install -m 644 xasm.1 $(DESTDIR)$(mandir)/xasm.1
uninstall:
$(RM) $(DESTDIR)$(bindir)/xasm $(DESTDIR)$(mandir)/xasm.1
install-scite: xasm.properties
mkdir -p $(DESTDIR)$(prefix)/share/scite && install -m 644 $< $(DESTDIR)$(prefix)/share/scite/xasm.properties
uninstall-scite:
$(RM) $(DESTDIR)$(prefix)/share/scite/xasm.properties
dist: srcdist ../xasm-$(VERSION)-windows.zip
srcdist: MANIFEST
$(RM) ../xasm-$(VERSION).tar.gz && /usr/bin/tar -c --numeric-owner --owner=0 --group=0 --mode=644 -T MANIFEST --transform=s,,xasm-$(VERSION)/, | $(SEVENZIP) -tgzip -si ../xasm-$(VERSION).tar.gz
MANIFEST:
if test -e .git; then (git ls-files | grep -vF .gitignore && echo MANIFEST) | sort | dos2unix >$@ ; fi
../xasm-$(VERSION)-windows.zip: xasm.exe xasm.html xasm.properties signed
$(RM) $@ && $(SEVENZIP) -tzip $@ xasm.exe xasm.html xasm.properties
signed: xasm$(EXEEXT)
signtool sign -d "xasm $(VERSION)" -n "Open Source Developer, Piotr Fusik" -tr http://time.certum.pl -fd sha256 -td sha256 $< && touch $@
deb:
debuild -b -us -uc
osx: ../xasm-$(VERSION)-macos.dmg
../xasm-$(VERSION)-macos.dmg: osx/xasm osx/bin
ifdef PORK_CODESIGNING_IDENTITY
codesign --options runtime -f -s $(PORK_CODESIGNING_IDENTITY) osx/xasm
endif
hdiutil create -volname xasm-$(VERSION)-macos -srcfolder osx -format UDBZ -fs HFS+ -imagekey bzip2-level=3 -ov $@
/Applications/Xcode.app/Contents/Developer/usr/bin/notarytool submit --wait --keychain-profile recoilnotarization $@
osx/xasm: source/app.d
mkdir -p osx && dmd -of$@ -O -release $< && rm -f osx/xasm.o
osx/bin:
mkdir -p osx && ln -s /usr/local/bin $@
clean:
$(RM) xasm xasm.exe xasm.obj xasm.html xasm.1 signed
rm -rf osx
.PHONY: all install uninstall install-scite uninstall-scite dist srcdist MANIFEST deb osx clean
.DELETE_ON_ERROR:

112
README.md Normal file
View File

@ -0,0 +1,112 @@
[![GitHub Actions](https://github.com/pfusik/xasm/actions/workflows/test.yml/badge.svg)](https://github.com/pfusik/xasm/actions/workflows/test.yml)
xasm
====
xasm is a 6502 cross-assembler with original syntax extensions.
By default it generates binaries
for [Atari 8-bit computers](http://en.wikipedia.org/wiki/Atari_8-bit_family).
Syntax
------
6502 assembly code 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.
Short branches can be replaced with conditional skip and repeat pseudo-instructions.
You can use a pair of instructions with a shared argument.
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 an extension of Quick Assembler's (created in 1991 for Atari 8-bit).
Accumulator shifts should be written 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).
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](https://github.com/pfusik?tab=repositories) on GitHub.
If you prefer VIM, see a link below.
Poetic License
--------------
This work 'as-is' we provide.
No warranty express or implied.
We've done our best,
to debug and test.
Liability for damages denied.
Permission is granted hereby,
to copy, share, and modify.
Use as is fit,
free or for profit.
These rights, on this notice, rely.
Download
--------
[xasm 3.2.1](https://github.com/pfusik/xasm/releases) for Windows, macOS, Ubuntu and Fedora.
Links
-----
* [Atari800](https://atari800.github.io/) - 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](https://cc65.github.io/) - C cross-compiler targeting 6502-based systems
* [MADS](http://mads.atari8.info/) - another 6502/65816 cross-assembler, partially supporting xasm's syntax
* [vim-xasm](https://github.com/lybrown/vim-xasm) - VIM syntax highlighting for xasm
* [WUDSN IDE](http://wudsn.com/) - Eclipse plugin, front-end to several 6502 cross-assemblers, including xasm

23
debian/changelog vendored Normal file
View File

@ -0,0 +1,23 @@
xasm (3.2.1-1) UNRELEASED; urgency=low
* New release.
-- Piotr Fusik <fox@scene.pl> Thu, 8 Dec 2022 09:30:29 +0100
xasm (3.2.0-1) UNRELEASED; urgency=low
* New release.
-- Piotr Fusik <fox@scene.pl> Tue, 22 Jun 2021 20:59:45 +0200
xasm (3.1.1-1) UNRELEASED; urgency=low
* New release.
-- Piotr Fusik <fox@scene.pl> Wed, 20 Nov 2019 13:30:11 +0100
xasm (3.1.0-1) UNRELEASED; urgency=low
* First deb packaging.
-- Piotr Fusik <fox@scene.pl> Sun, 20 Jul 2014 19:08:15 +0200

1
debian/compat vendored Normal file
View File

@ -0,0 +1 @@
10

16
debian/control vendored Normal file
View File

@ -0,0 +1,16 @@
Source: xasm
Maintainer: Piotr Fusik <fox@scene.pl>
Section: devel
Priority: optional
Standards-Version: 4.6.0
Build-Depends: debhelper (>= 7), dmd (>= 2), asciidoc-base
Package: xasm
Architecture: any
Depends: ${shlibs:Depends}
Description: 6502 cross-assembler with original syntax extensions.
Package: xasm-scite
Architecture: all
Depends: scite
Description: xasm syntax highlighting and single keystroke compilation for SciTE.

7
debian/copyright vendored Normal file
View File

@ -0,0 +1,7 @@
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Name: xasm
Source: https://github.com/pfusik/xasm
Files: *
Copyright: 1998-2021 Piotr Fusik <fox@scene.pl>
License: Poetic

6
debian/rules vendored Normal file
View File

@ -0,0 +1,6 @@
#!/usr/bin/make -f
%:
dh $@
override_dh_auto_install:
$(MAKE) DESTDIR=$$(pwd)/debian/tmp prefix=/usr install install-scite

1
debian/xasm-scite.install vendored Normal file
View File

@ -0,0 +1 @@
usr/share/scite/xasm.properties

2
debian/xasm.install vendored Normal file
View File

@ -0,0 +1,2 @@
usr/bin/xasm
usr/share/man/man1/xasm.1

5
dub.sdl Normal file
View File

@ -0,0 +1,5 @@
name "xasm"
description "6502 cross-assembler with original syntax extensions"
authors "Piotr Fusik"
copyright "Copyright © 1998-2021, Piotr Fusik"
license "poetic"

File diff suppressed because it is too large Load Diff

View File

@ -1,112 +0,0 @@
xasm - 6502 cross-assembler
===========================
xasm is a free tool for programming
http://en.wikipedia.org/wiki/Atari_8-bit_family[Atari 8-bit family computers].
History
-------
First version of xasm was written in 1998. I needed a cross-assembler
that could understand the syntax of Quick Assembler
which I used for 8-bit Atari programming before I got a PC.
Initially xasm supported the syntax of QA and nothing more.
I quickly realized that I could extend the syntax to make it more expressive.
This led to xasm 2.0, still in 1998. I added some more features
next year. In 2002 I released many versions which contained
mostly bugfixes. In 2005 there were some minor enhancements and bug fixes,
as well as the whole assembler was rewritten from the x86 assembly language
it was initially written in to the http://www.digitalmars.com/d/[D programming language].
Current version 3.0.2 was released 17th October 2009.
Syntax
------
6502 assembler code is usually full of LDA, STA, LDA, STA sequences.
With xasm you can use MVA as a shortcut for 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
-----------------------------
Usage
-----
xasm is a command-line tool.
Therefore you additionally need a programmer's text editor.
I use http://www.scintilla.org/SciTE.html[SciTE].
Syntax highlighting definition for it is included with xasm.
To install it, copy `xasm.properties` to the SciTE directory,
select _Options / Open Global Options File_, type `import xasm`
at the end and save the global configuration file.
image::scite.png[xasm code in SciTE]
Download
--------
- link:xasm-3.0.2-windows.zip[xasm 3.0.2 for Windows]
- link:xasm-3.0.2-src.zip[xasm 3.0.2 source code]
- link:xasm261.zip[xasm 2.6.1 for DOS]
For other systems, such as GNU/Linux and MacOS X, install a D 1.x compiler
and compile xasm from source code.
Inflate
-------
Do you need a good decompression routine for 6502?
See my link:inflate.html[inflate routine].
Links
-----
- http://atari800.sourceforge.net/[Atari800 emulator] - portable emulator of Atari 8-bit computers
- http://sources.pigwa.net/[Atari XL/XE Source Archive] - source code of Atari demos, utilities and games
- http://www.cc65.org/[cc65] - C cross-compiler targeting 6502-based systems
- http://epi.atari8.info/hcasm.php[HardCore Assembler] - 6502/65816 cross-assembler, partially supporting xasm's syntax
- http://mads.atari8.info/[MADS] - another 6502/65816 cross-assembler, partially supporting xasm's syntax
- http://wudsn.com/[WUDSN IDE] - Eclipse plugin, front-end to several 6502 cross-assemblers including xasm

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,40 +1,42 @@
# xasm settings for SciTE (http://www.scintilla.org/SciTE.html)
file.patterns.asx=*.asx
filter.asx=xasm (asx)|$(file.patterns.asm)|
lexer.$(file.patterns.asx)=asm
keywords.$(file.patterns.asx)= \
adc add and asl bcc bcs beq bit \
bmi bne bpl brk bvc bvs clc cld \
cli clv cmp cpx cpy dec dex dey \
dta eif eli els end eor equ ert \
icl ift inc ini ins inw inx iny \
jcc jcs jeq jmi jmp jne jpl jsr \
jvc jvs lda ldx ldy lsr mva mvx \
mvy mwa mwx mwy nop opt ora org \
pha php pla plp rcc rcs req rmi \
rne rol ror rpl rti rts run rvc \
rvs sbc scc scs sec sed sei seq \
smi sne spl sta stx sty sub svc \
svs tax tay tsx txa txs tya
comment.block.asm=;
style.asm.32=
style.asm.1=$(colour.code.comment.line)
style.asm.2=
style.asm.3=$(colour.string)
style.asm.4=$(colour.operator)
style.asm.5=
style.asm.6=$(colour.keyword)
style.asm.7=
style.asm.12=$(colour.char)
style.asm.13=$(colour.error)
command.compile.$(file.patterns.asx)=xasm /o:$(FileName).xex $(FilePath)
command.build.$(file.patterns.asx)=make
if PLAT_WIN
command.go.$(file.patterns.asx)=start $(FileName).xex
if PLAT_GTK
command.go.$(file.patterns.asx)=atari800 -run $(FileName).xex
# xasm settings for SciTE (http://www.scintilla.org/SciTE.html)
file.patterns.xasm=*.asx
filter.xasm=xasm (asx)|$(file.patterns.xasm)|
*filter.xasm=$(filter.xasm)
lexer.$(file.patterns.xasm)=asm
*language.xasm=xasm|asx||
keywords.$(file.patterns.xasm)= \
adc add and asl bcc bcs beq bit \
bmi bne bpl brk bvc bvs clc cld \
cli clv cmp cpx cpy dec dex dey \
dta eif eli els end eor equ ert \
icl ift inc ini ins inw inx iny \
jcc jcs jeq jmi jmp jne jpl jsr \
jvc jvs lda ldx ldy lsr mva mvx \
mvy mwa mwx mwy nop opt ora org \
pha php pla plp rcc rcs req rmi \
rne rol ror rpl rti rts run rvc \
rvs sbc scc scs sec sed sei seq \
smi sne spl sta stx sty sub svc \
svs tax tay tsx txa txs tya
comment.block.asm=;
style.asm.32=
style.asm.1=$(colour.code.comment.line)
style.asm.2=
style.asm.3=$(colour.string)
style.asm.4=$(colour.operator)
style.asm.5=
style.asm.6=$(colour.keyword)
style.asm.7=
style.asm.12=$(colour.char)
style.asm.13=$(colour.error)
command.compile.$(file.patterns.xasm)=xasm /o:$(FileName).xex $(FilePath)
command.build.$(file.patterns.xasm)=make
if PLAT_WIN
command.go.$(file.patterns.xasm)=start $(FileName).xex
if PLAT_GTK
command.go.$(file.patterns.xasm)=atari800 -run $(FileName).xex

40
xasm.spec Normal file
View File

@ -0,0 +1,40 @@
Name: xasm
Version: 3.2.1
Release: 1
Summary: 6502 cross-assembler
License: Poetic
Source: http://pfusik.github.io/xasm/xasm-%{version}.tar.gz
URL: https://github.com/pfusik/xasm
BuildRequires: dmd >= 2, asciidoc
%description
xasm is a 6502 cross-assembler with original syntax extensions.
%global debug_package %{nil}
%prep
%setup -q
%build
make xasm xasm.1
%install
make DESTDIR=%{buildroot} prefix=%{_prefix} install
%files
%{_bindir}/xasm
%{_mandir}/man1/xasm.1.gz
%changelog
* Thu Dec 8 2022 Piotr Fusik <fox@scene.pl>
- 3.2.1-1
* Tue Jun 22 2021 Piotr Fusik <fox@scene.pl>
- 3.2.0-1
* Wed Nov 20 2019 Piotr Fusik <fox@scene.pl>
- 3.1.1-1
* Sun Jul 20 2014 Piotr Fusik <fox@scene.pl>
- 3.1.0-1
- Initial packaging