Merlin 8/16/16+ Compatible 6502/65816 assembler/linker suite in C++ for linux
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Go to file
Shawn Quick e687507a3b now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
.vscode might be broken, work on addressing modes and shift operators < > | ^ 2 months ago
cmake XCode/Poco fixups 3 years ago
diskimg work on cmake-tools under vscode, adding syntax checking, and script processing 2 months ago
libhfs building ciderpress libraries with cmake 2 months ago
nufxlib building ciderpress libraries with cmake 2 months ago
qasm.xcodeproj Remove broken links in project file, fix run to use relocated test file 3 years ago
src 'a' as an operand is ignored. 2 years ago
testdata now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
.gitignore clean up/add to .gitignore 2 months ago
CMakeLists.txt working on parameters and options 2 months ago
LICENSE first commit 3 years ago
Makefile now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
README Add note about ERR support to readme 3 years ago
app.h first commit 3 years ago
app_config.h building ciderpress libraries with cmake 2 months ago
asm.cpp now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
asm.h now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
cider.cpp fixed a few bugs, got more tests to pass, added some parms.json options 2 months ago
cider.h working on parameters and options 2 months ago
config.h working on parameters and options 2 months ago
eval.cpp might be broken, work on addressing modes and shift operators < > | ^ 2 months ago
eval.h fixes for nested DO/IF/ELSE/FIN 3 years ago
libpal test 3 years ago
lup.s work on cmake-tools under vscode, adding syntax checking, and script processing 2 months ago
merlintests.sh fixed a few bugs, got more tests to pass, added some parms.json options 2 months ago
opcodes.cpp now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
parms.json now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
psuedo.cpp now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
psuedo.h now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
qasm first commit 3 years ago
qasm.cpp more fixes on operand handling, tests back to passing (not all, but many) 2 months ago
qasm.h more fixes on operand handling, tests back to passing (not all, but many) 2 months ago
qoptions.cpp more options, cleanup of command line options 2 months ago
qoptions.h now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
runtests.sh now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
single.sh now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
test.link working on parameters and options 2 months ago
test.s now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
todo.txt all tests assemble, ]vars seem to be working 3 years ago
tomerlin.sh now able to push all test scripts to a directory that can be shared with gsplus, and files directly loaded into Merlin. Also support 'CHK' p-op to compare assemblies between the two 2 months ago
util.cpp working on parameters and options 2 months ago
util.h working on parameters and options 2 months ago

README

Merlin Compatible assembler/linker (and more) for linux

This project is FAR from complete...as I have just gotten it to compile all 256 65816 opcodes.

Update (11/19/2019) - All code generating opcodes/psuedo-ops complete.

The program will read/compile linux based Merlin syntax files (.s), as well as original Merlin 
8/16/16+ files in Merlin format
(high bit set), compressed spaces, and only a <CR> to end lines.  I plan on adding a mode that 
will process and convert to linux style so files can be converted for easy editing under linux.

Merlin32 is great, but there are aspects of it that I don't like (always outputting assembly 
status and creating .txt file listings, etc)

Along time ago, in the mid 1980's I wrote a Merlin compatible assembler and programming shell 
(with the help of Lane Roathe) for the Apple //GS
Recently, Lane sent me the source code to that assembler. Unfortunately, because of some of the 
features we added to the assembler, it will not compile under Merlin or Merlin32.  (We actually used 
qasm to build qasm).

This project will be a linux compatible version, that will compile/link the original source. 
However, due to speed and everything 'linux' I doubt the original will be used much.

I also would like to interface with the CiderPress library to allow output from the assembler/linker 
to write files directly to Prodos based .2MG (or other) images.  That way, after a compile, the code 
under test can be immediately run from a GS emulator.

This early version relies on the Poco Foundation libraries. You must have these installed.
Additionally, this repo relies on another repo here called 'libpal'.  Both repositories must 
be cloned at the same level.

libpal does not have to be built. The 'qasm' compile will build all of those source files.

'cmake' is used to build the Makefiles.  There is a generic Makefile in the base directory that does 
all of the 'cmake' stuff for you. (in a 'build' directory)

For example:
mkdir workdir
cd workdir
git clone git://github.com/marketideas/libpal libpal
git clone git://github.com/marketideas/qasm qasm

cd qasm
make clean
make

To test:
./qasm src/testfile.s


Some notes on compatibility:

ERR does not support the ($300)-$4C style of checking, because we are not running on Apple // hardware, so there is no need to check for a USR vector having been setup in this manner.