Homepage of the DASM Assembler
DASM
This is the official home of DASM, an assembler written in 1997-1988 by Matthew Dillon, updated in 1995 by Olaf 'Rhialto' Seibert, and now (2003...) maintained by Andrew Davie. DASM is a versatile macro assembler, written in C, with support for target microprocessors including 6502, 68HC11, 68705, 6803, HD6303, F8 and 6507. Full source-code and selected target-machine runtimes are included in the distribution package.
DASM Assembler Download
The download package includes source code and executables for various platforms. The most recent version is at the top of the following list.
12 AUG 2004 |
DASM Assembler - Version 2.20.10b -- Amiga OS4 update
- 'I built Linux and BeOS DASM binaries - feel free to include them in your
distribution. Included are the binaries, update readme files, and an update
Makefile to pull in the F8 stuff and redefine stricmp for the unix-ish
platforms. It might be more conventional to do the redef in a source file,
but I was already in the makefile... :)' -- James (slor@comcast.net)
- 'Attached is the Dasm 2.20.10 archive with a build for AmigaOS4. As with the
Mac, I've split the Amiga directory into "Classic" and "OS4", since the OS4
version only works on PowerPC based Amigas with version 4 of the operating
system. The Classic directory contains only a build of 2.20.07 still, since
I had some trouble getting 2.20.10 to build on my A4000.' -- Peter Gordon
|
31 OCT 2004 |
DASM Assembler - Version 2.20.10
- F8 support added thanks to Thomas Mathys. See the F8 directory README. Note the inclusion of Channel-F support files (below).
|
19 JUL 2003 |
DASM Assembler - Version 2.20.07 (update)
- This is a re-release with no code changes, but the following binaries added...
- Mac OSX version in BIN\Mac\OSX. Thanks to Jeremy Penner
- Mac Classic version in BIN\Mac\Classic. Thanks to Jason Rein
- Amiga version in BIN\Amiga. Thanks to Peter Gordon
|
17 JUL 2003 |
DASM Assembler - Version 2.20.07
- Sorting code for symbol tables rewritten for portability
- Mac binary included (!) in BIN\Mac directory - see MACDASM2207.SIT
Thanks to Jason Rein for this.
- Amiga binary included (!) in BIN\Amiga directory.
Thanks to Peter Gordon for this.
|
24 APR 2003 |
DASM Assembler - Version 2.20.04
- Significant reformatting of code, prelude to full documentation. Code now in transient state between old and new formatting. More modular, but still all over the place as far as consistency. It'll improve as we go along.
- Internal error numbers now equated (more maintanable code).
- Command-line switches now allow / as prefix (and -).
- Divide by 0 (generated equates, etc.) now treated as an unrecoverable error.
- Error messages now contain more information about the error, including the source-code where possible. Message templates allow inclusion of select data on error output.
- reworking of the output data. Typically, the -v switch is now un-necessary as the appropriate messages to allow you to find errors will be output. Back compatibility with the -v options has been maintained, though there may be a few minor changes.
- Branch out of range errors now list the 'distance' to the branch.
- Undefined symbols are now *always* listed in a separate table. If an unresolved symbol causes an error, then the table will be automatically displayed at the end of assembly. Note: it is sometimes OK to have a referenced, but undefined symbol (eg: when IFNCONST is used, then the symbol becomes referenced, but being undefined is OK. In this case, the undefined symbol table will only be output if there is another undefined label, but it will include ALL unresolved symbols).
- new command-line switch -T# where # is 0 or 1
- 0 = Sort symbol table alphabetically (default)
- 1 = Sort symbol table by address
If available memory precludes a sort, then the table will be output in a non-sorted order.
|
24 APR 2003 |
DASM Assembler - Version 2.20.02
- Corrected support for LAX illegal opcodes for 6502/6507
|
22 MAR 2003 |
DASM Assembler - Version 2.20.01
- REPEAT now detects negative loop count (used to lockup assembly).
- Error output format now FILE (line): Error: string
|
22 MAR 2003 |
DASM Assembler - Version 2.12.04
- Preliminary grab of version 2.12.04, unchanged contents. Changes made by Matthew Dillon to version 2.14 appear to be covered in this version. We're going with the code base as appended by Olaf. These changes will become official parts of DASM from this version onward.
|
You may redistribute the source code and binaries, provided that no modifications are made to either. If you wish to have your code updates included in the official DASM release, please email the commented code changes to Andrew Davie (atari2600@taswegian.com). If you'd like to request a feature, please do so. If it's useful to enough people, I will try to add it.
Platform-Specific Support
Atari 2600
The following ZIP file contains standardised files related to using DASM for developing for the Atari 2600. It contains a standard list of names and equates for the hardware, registers, and memory mapping of the Atari 2600. Also included (eventually!), standardised macros. The idea is that you always grab the latest version from here - it will be backward-compatible with prior versions. Please do not modify or redistribute these files.
Support Files
Support files include VCS.H and MACRO.H
03 SEP 2004 |
 Version 1.10
| VERSION_MACRO equate added to macro.h. This allows code to conditionally compile based on the versioning of the macro file being used for assembly.
New VERTICAL_SYNC macro from Edwin Blink.
|
14 NOV 2003 |
Version 1.09 | VERSION_MACRO equate added to macro.h. This allows code to conditionally compile based on the versioning of the macro file being used for assembly.
VERSION_VCS equate added to vcs.h for similar reasons.
Corrections made to the TIA_BASE_WRITE_ADDRESS and TIA_BASE_READ_ADDRESS. See VCS.H for implementation comments. Now allows command-line definition of these values for creating binary-copies of disassembled code via disassembly/reassembly process. If not present, these values default to the TIA_BASE_ADDRESS values. Thanks to MR for the suggestions and correction.
|
12 NOV 2003 |
Version 1.08
| SET_POINTER macro added to macro.h. This macro allows a 16-bit immediate to be loaded into a two byte destination memory address. Thanks to Manuel Rotschkar for the addition.
Added TIA_BASE_WRITE_ADDRESS and TIA_BASE_READ_ADDRESS to vcs.h for convenient disassembly/reassembly compatibility for hardware mirrored reading/writing differences. This is more a readability issue, and binary compatibility with disassembled and reassembled sources. Per Manuel Rotschkar's suggestion.
|
14 JUN 2003 |
Version 1.07
| CLEAN_START macro from added to macro.h. This macro standardises the 6502 startup (clears TIA, RAM, initialises stack and registers. Clears decimal mode. Use this as the very first bit of code in your ROM.
|
14 JUN 2003 |
Version 1.06
| VERTICAL_SYNC macro from Manuel Polik added to macro.h. This macro standardises the code necessary for the start of a frame (the vertical synchronisation signaling for the TV).
|
12 MAY 2003 |
Version 1.05
|
Added a dummy SEG (segment) to the end of the VCS.H file, making the use of segments back-compatible with code which didn't use them. Thanks to Manuel Polik for this fix.
Note, version numbers of the .h files do not correspond to the release numbers of the ZIP file. Current version of MACRO.H is 1.01, and VCS.H is 1.03
|
24 MAR 2003 |
Version 1.04
|
- actually included the MACRO.H file in this version. with a fix.
|
24 MAR 2003 |
Version 1.03
|
- MACRO.H file added. This file contains standardised macros useful to the Atari 2600 developer. The macros are switchable between using illegal opcodes, or not. Illegal-opcode versions have the advantage of not affecting registers or flags; the legal-opcode versions may affect either.
- Requires DASM 2.20.01 onwards (though legal-opcode version currently back-compatible with older versions of DASM).
- "SLEEP n" macro added. Inserts timed code taking n cycles - ta TJ!
|
22 MAR 2003 |
Version 1.02
| In VCS.H, added TIMINT($285) re: Thomas Jentzsch suggestion. |
22 MAR 2003 |
Version 1.01
| In VCS.H, TIA_BASE_ADDRESS constant now sets the base address of the TIA access. This supports 3F-style bankswitching, where TIA registers are defined from $40 up, as opposed to normal usage which is from 0 up. Use -DTIA_BASE_ADDRESS=$40 on the command line, or define a label with that value before including VCS.H, if you're creating a 3F-style binary, otherwise don't worry about it; the addresses will resolve to 0 upwards if the label/constant isn't defined. The default has all TIA registers with a base address of 0. Thanks to Eckhard Stolberg for the diagnosis on this one. Note: One should *NEVER* modify VCS.H - it is written to respond to external constants. |
22 MAR 2003 |
Version 1.0
| We have to start somewhere! Preliminary 'standard' VCS.H included. |
Integrated Development Environment
24 MAR 2003 |
2600 SDK 1.0
| Matthew Ozor writes... "I have some good news on the IDE for DASM. Rob Anderton the programmer on NASM-IDE agreed to let me edit his source code to use customize it for us. This is only a DOS version and it is written in Pascal so it would be a little hard to port to Linux, or Mac. Begin a GNU program I can distribute this with no problem."
"There is a current version of the Atari SDK that I have put together and uses a program called EditIDE. It has been completely setup for DASM programming. This is a freeware software and I did get the source code with permission to use it in the SDK. "
|
Fairchild Channel-F
The following ZIP file contains standardised files related to using DASM for developing for the Fairchild Channel-F. The CHANNELF.H file contains standardised register and BIOS names and equates, and MACRO.H contains standardised macros. The idea is that you always grab the latest version from here - it will be backward-compatible with prior versions. Please do not modify or redistribute these files.
Support Files
Support files include CHANNELF.H and MACRO.H
2 NOV 2004 |
 Version 1.01
| First release of header files with content. CHANNELF.H renamed to VES.H. Contents from Kevin Lipe. Note deprecated equates -- all BIOS and hardware equates will use uppercase. Please change existing code, if you can, to use the new standards.
|
31 OCT 2004 |
Version 1.00
| Initial release of standardised CHANNELF.H and MACRO.H.
|
Support for Other Platforms
Coming soon?