Merlin 8/16/16+ Compatible 6502/65816 assembler/linker suite in C++ for linux
Go to file
2024-09-06 14:41:52 -04:00
.vscode might be broken, work on addressing modes and shift operators < > | ^ 2023-02-08 10:14:55 -08:00
cmake XCode/Poco fixups 2019-11-12 21:03:41 -08:00
diskimg work on cmake-tools under vscode, adding syntax checking, and script processing 2023-02-05 10:49:07 -08:00
libhfs building ciderpress libraries with cmake 2023-02-04 15:34:50 -08:00
nufxlib building ciderpress libraries with cmake 2023-02-04 15:34:50 -08:00
qasm.xcodeproj Remove broken links in project file, fix run to use relocated test file 2020-01-14 16:49:48 -08:00
src qasm (iigs): AST opcode was using the screen hole x position ($00057b) 2024-09-06 14:41:52 -04:00
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 2023-02-09 13:26:09 -08:00
.gitignore clean up/add to .gitignore 2023-02-08 19:47:55 -08:00
app_config.h building ciderpress libraries with cmake 2023-02-04 15:34:50 -08:00
app.h
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 2023-02-09 13:26:09 -08:00
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 2023-02-09 13:26:09 -08:00
cider.cpp fixed a few bugs, got more tests to pass, added some parms.json options 2023-02-05 21:38:02 -08:00
cider.h working on parameters and options 2023-02-06 22:27:19 -08:00
CMakeLists.txt working on parameters and options 2023-02-06 22:27:19 -08:00
config.h working on parameters and options 2023-02-06 22:27:19 -08:00
eval.cpp might be broken, work on addressing modes and shift operators < > | ^ 2023-02-08 10:14:55 -08:00
eval.h fixes for nested DO/IF/ELSE/FIN 2019-11-21 19:20:59 -08:00
libpal test 2019-11-12 00:15:47 -08:00
LICENSE
lup.s work on cmake-tools under vscode, adding syntax checking, and script processing 2023-02-05 10:49:07 -08:00
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 2023-02-09 13:26:09 -08:00
merlintests.sh fixed a few bugs, got more tests to pass, added some parms.json options 2023-02-05 21:38:02 -08:00
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 2023-02-09 13:26:09 -08:00
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 2023-02-09 13:26:09 -08:00
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 2023-02-09 13:26:09 -08:00
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 2023-02-09 13:26:09 -08:00
qasm
qasm.cpp more fixes on operand handling, tests back to passing (not all, but many) 2023-02-08 15:46:38 -08:00
qasm.h more fixes on operand handling, tests back to passing (not all, but many) 2023-02-08 15:46:38 -08:00
qoptions.cpp more options, cleanup of command line options 2023-02-07 12:34:52 -08:00
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 2023-02-09 13:26:09 -08:00
README Add note about ERR support to readme 2019-12-11 10:35:39 -08:00
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 2023-02-09 13:26:09 -08:00
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 2023-02-09 13:26:09 -08:00
test.link working on parameters and options 2023-02-06 22:27:19 -08:00
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 2023-02-09 13:26:09 -08:00
todo.txt all tests assemble, ]vars seem to be working 2019-11-19 11:27:17 -08:00
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 2023-02-09 13:26:09 -08:00
util.cpp working on parameters and options 2023-02-06 22:27:19 -08:00
util.h working on parameters and options 2023-02-06 22:27:19 -08:00

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.