DASM 2.20 can be found at <http://www.atari2600.org/dasm/dasm22007.zip>
These modifications were only made to get more compatibility between
TASM, C64ASM and DASM sources.


modifications history:

v2.20.07b
- 6502 made default and only one supported
- removed support for other 68xxx cpus
- PROCESSOR directive now is always ignored
- default output name "a.prg" instead of inconsistent *nix style "a.out" :/
- added check for "lsr a" to be interpreted as "lsr", same for asl/rol/ror
- added "*=" , equivalent of "org" ; a space is required between *= and address
- added mnemonic variations of illegal opcodes (axm/xaa etc.)


v2.20.07c
- implemented SCRU/SCRL directives (like in C64ASM) to convert ascii->screencodes
- rebuilt with OlafFreeFormat defined, to allow labels and mnemonics on any
  positions. Else, labels could be only defined in column1, and mnemonics had
  to be defined at least on column 2, for example:

label
value = $ff
    lda #$00

Now can be written
    label lda #00


v2.20.07d
- OlafFreeFormat default, new param -H to select Hashformat
- INCPRG implemented.
  INCBIN is for including raw binaries. To include c64 prgs, skipping the 2
  byte startaddress, use INCPRG.
  The file startaddress is normally ignored, use ORG to force loading to a
  different address from the current one. Address can be forced after the file
  name, in decimal or $hex notation, or a "L" to force reading and setting the
  new ORG from loadaddress. For example:

  *= $801
  incprg header.prg         ; load header.prg at current address ($0801)

  incprg file1.prg          ; load file1.prg at current address ($0801+header.prg len)

  incprg file2.prg,$1000    ; load file2.prg at $1000

  incprg koalapic.prg,L     ; load koalapic.prg at original address ($6000)


v2.20.07e
- parameter -t (lowercase) was used as tempdir, deprecated so i removed it
  parameter -t/-T now is used for Symbol Table sorting

- Started modifications in function generate() to allow reversed origin address.
  Because DASM is generating .prg directly on disk, the lowest known/used
  origin address MUST be specified first, then all others can be freely set.

  for example:

  ALLOWED!  |  NOT ALLOWED
  ----------|-------------
  *= $0801  |  *= $c000
  <code>    |  <code>
  *= $c000  |  *= $0801
  incprg ...|  <code>
  *= $1000  |
  <code>    |

  (See X*.ASM samples for more)

  a workaround will be done shortly.


v2.20.07f
- including non-existant files could cause crashes, fixed
- fixed reopening of destination prg during 2nd (and subsequent) compilation
  passes, that caused garbage and/or wrong filler byte between unused areas.
  Tested using *= $0801,$bd (fills unused mem with $bd instead of 0)


v2.20.07g
Bugs:
- Crashed on too many passes (>16), the error was in the error message
  handler, trying to display a NULL pointer :-)
- fixed another issue of bad filling between ORGs in case of forward reference
  to a new ORG. Under WinXP the filler seems always 0, but on W98 garbage was
  taken from the current disk sector. Simple example:

       *= $0801,$ea
       lda #$00
       sta label
       rts
       ;
       ; expect garbarge/zeroes here instead of filler byte
       ;
       *= $1000
   label
       byte 0

   Fixed this, there should be no more. :P

Interface:
- Added ending address display at end of compile.
- Reorganized the segments output in verbose mode. Should be more clear now.
- Raised maxpasses to 32. Used for debug, but saw that was good in sources
  with many forward references (use of labels defined further in the source)
  As always can be changed with -p/-P parameter.

New / improved commands:
- Fixed SCRU/SCRL behaviour on SCRL "@" that was truncating the string
- Implemented ASC "string" (equivalent of .byte "string", no coversion
  From PC Ascii set is done)
- Implemented PETC/TEXT "string" (converts ascii to petscii)
- Removed END, can't find any use of it. Allows labels to be called end :)


v2.20.07h
- Numbers starting with 0 (010,0777 etc) were interpreted as octal numbers.
  I felt this a little bit annoying when converting some 0-padded datas:
  	BYTE 000,010,020,030
  	BYTE 040,050,060,070
  should have been manually edited to
  	BYTE   0, 10, 20, 30
  	BYTE  40, 50, 60, 70
  Now those are treated as normal decimal numbers, and I created a new prefix
  for octal notation, '@' (@010 or @10) for those bothering to use such crap :P

- added small cx.exe w/src for converting binaries to byte listings.
  usage:

  c:\path\> cx mydata.bin > mydata.s

  then add to your source

  include mydata.s


v2.20.07i
- Fixed opening of sources (main and INCLUDEd) in binary mode.
  This allows to read *nix style '\n' terminated lines without any other
  modification (Hi Ice00! :D)
- Fixed a buffer overflow when reading lines longer than 255 bytes, in one
  particular case. I found a silly separator line in a source, like:

xxxxxxxxxxxxxxxxxxxxx[etc over 256chars]xxx:

  the ":" probably means it was expected to be interpreted as a label (OMG!)
  If the line was a comment starting with ";" the overflow would happen with
  slightly longer lines, but would happen anyway.
  Lines are now trimmed to 254 bytes after read, which are MORE than enough in
  a 6510 asm source! :)


v2.20.07j
- parser now accepts indexed addressing with spaces beteen "," and register.
  For example:
  LDA ($FF), Y
  LDA (zplabel) , y
  LDA ( zplabel ),  Y
  LDA LABEL, X
  etc.
- ORG form *=$xxxx (without spaces) now accepted.
  Internally it's interpreted like * = $xxxx by inserting the missing spaces.
  Same goes for labels definitions: label=$xxxx becomes label = $xxxx and
  will be parsed correctly
- *= pseudo-op removed due to previous fix, no more need of it.
- in list file (-l) there was no reference to Relative Org (RORG) address.
  Made a couple of hacks to print RORG address next to the current ORG.
- Fixed a SegFault when listing and input source line was >MAXLINE chars.
- Similarly another SegFault trying to increase MAXLINE is fixed.
  Now MAXLINE can be set more than 256, I set the limit to 2048 in asm.h
- Adapted for compilation under Linux by Eregil
- Updated CX to v0.2, -s parameter added to skip loadaddres on prgs.


v2.20.07k
- Implemented SCRUR/SCRLR to generate reversed screencodes (request by MTR/Viruz)


-=[iAN CooG/HokutoForce]=-
