2.1.5

- poprawione działanie .UNDEF, .IFDEF
- poprawione wykonywanie zagnieżdżonych pętli .REPT
- dodana możliwość łączenia obszarów lokalnych, .LOCAL +label_name
- dodanie kolorowania komunikatow konsoli
- etykiety automodyfikacji kodu, np.:

 lda label:  #$40

2.1.1-2.1.3

- nowa dyrektywa .RND zwracająca wartość losową z zakresu 0..255
- dodany komunikat ostrzeżenia 'Register A is changed' dla pseudo rozkazów DEW, DEL, DED
- nowy przełącznik -bc 'Branch condition test', powoduje wygenerowanie komunikatów ostrzeżenia w przypadku kiedy skok jest poza zakres lub przekracza stronę pamięci

v2.1.0

- dodany komunikat ostrzeżenia 'Buggy indirect jump' w przypadku użycia rozkazu JMP(ABS)
- dodana dyrektywa .FILEEXISTS('filename') zwracająca 1 gdy plik w podanej ścieżce istnieje, 0 gdy nie istnieje
- rozszerzony komunikat 'Value out of range (VALUE must be between X and Y)'

v2.0.9

- .cbm 'text' konwersja na znaki ekranowe Commodore C64
- usunięty błąd kiedy procedura .PROC znajdująca się w bloku .LOCAL nie została oznaczona jako "do asemblacji" mimo tego że było do niej odwołanie z poziomu makra .MACRO w bloku .LOCAL
- usunięty błąd, etykiety tymczasowe ?label były oznaczane "do relokacji"

v2.0.8

- krótszy kod dla #CYCLE
- poprawki dla .BY, .WO, .HE, .SB, .CB, .FL
- komunikat błędu 'Improper syntax' w przypadku użycia .BY, .WO, .HE, .SB, .CB, .FL w bloku .STRUCT
- dodane nowe dyrektywy dla 65816 .LONGA ON|OFF, .LONGI ON|OFF
- poprawione działanie śledzenia rozmiaru rejestrów 65816 gdy 'OPT T+'
- dodany przełącznik -FV:VALUE pozwalający ustalić wartość wypełnienia pamięci gdy 'OPT F+'
- dodana możliwość podania argumentu jako ciągu dwóch znaków (poprzednio tylko 1 znak) np. lda #'AB' , mwa #'XY' $80

v2.0.7

- poprawione generowanie kodu wynikowego dla nielegali DOP, SHA
- dodane nowe dyrektywy (65816) .A8, .A16, .I8, .I16, .AI8, .IA8, .AI16, .IA16 pozwalające ustawić rozmiar rejestrów AXY
- dodane nowe dyrektywy (65816) .ASIZE, .ISIZE zwracające aktualnie ustawiony rozmiar rejestrów AXY
- rozkaz JMP zmieniany jest na JML (65816) tylko gdy skok dotyczy innego 64KB banku niż obecny
- dodany nowy przełącznik '-ml:value' (margin-left property), który umożliwia zmianę lewego marginesu generowanego listingu w zakresie od 32 do 128 znaków

v2.0.6

- poprawione parsowanie parametrów makra zapisanych przy pomocy etykiet

    .macro test currentRow, previousRow
        .print Tmp%%currentRowAllowed
        .print Tmp%%previousRowAllowed
    .endm

- poprawione alokowanie danych .ARRAY gdy nie ma określonego rozmiaru, lub jest to tablica inna niż jednowymiarowa
- zwiększona liczba przebiegów dla .PROC, w pewnych warunkach dla parametru "xa .reg" parametr był źle interpretowany
- nowa dyrektywa .DEFINE pozwalająca definiować jedno liniowe makra (można definiować wielokrotnie w tym samym przebiegu)

  .DEFINE MACRO_NAME expression

  .DEFINE pisz .print %%1+%%2

  pisz (5,12)

  .define text .sb

  text 'atari'

- nowa dyrektywa .UNDEF MACRO_NAME, usuwa definicję jedno liniowego makra MACRO_NAME

v2.0.5

- tablice .ARRAY w bloku .PROC są pomijane jeśli użyto przełącznik -X (exclude unreferenced procedure)
- użycie .ARRAY w bloku .STRUCT nie będzie generować już zer w pliku wynikowym
- nowa dyrektywa .XGET, pozwalająca wczytać do bufora pamięci MADS-a plik i dodatkowo zmodyfikować jego bajty pod warunkiem że są różne od zera (przydatne dla VBXE)

v2.0.4

- usunięty błąd powodujący błędny zapis bloku aktualizacji dla starszego bajtu adresu w bloku .RELOC
- .DB i .DW usunięte
- .DBYTE (MSB/LSB) odkłada słowo w odwrotnej kolejności (starszy/młodszy)
- dodane dyrektywy .WGET (WORD), .LGET (LONG), .DGET (DWORD)
- poprawione działanie makro rozkazków ADW, SBW, np.:

	adw (tmp),y #1 posx
	adw (tmp),y ptr2 ptr4

v2.0.2

- poprawione alokowanie danych dla .SB [+<byte>],<bytes|string|char>

v2.0.1

- poprawione alokowanie danych dla .ARRAY gdy typ większy od .BYTE
- .SIZEOF zwraca rozmiar dla wbudowanych typów .BYTE, .WORD, .LONG, .DWORD
- dodana relokowalna wersja playera MPT examples\players\mpt_player_reloc.asm
- poprawione działanie dyrektywy .DS w blokach SDX (blk sparta $xxx) które nie są relokowalne

v2.0.0

- podniesiona maksymalna liczba przebiegow do 20 (pass_max)
- poprawki dotyczące .FL (float)
- nielegalny rozkaz NPO został rozdzielony na 3 rozkazy NPO (jedno bajtowy), DOP (dwu bajtowy), TOP (trzy bajtowy)
- dla bloków SDX BLK EMPTY możliwość podania typu pamięci dla długości bloku =0, pomocne przy deklarowaniu bloku empty przez .DS np.:

  blk empty 0 main
  .ds $200

- naprawiony zapis danych strukturalnych (dta struct_label) w blokach .RELOC
- dla bloków SDX dodana możliwość zwrócenia numeru bloku przypisanego konkretnej etykiecie poprzez operator '=', np. 'lda #=label'
- komunikat błędu 'Extra characters on line' dla pseudo rozkazów skoku w przód/tył, np. 'seq label'
- komunikat błędu 'Extra characters on line' dla typu wyliczeniowego, np. 'enum_label(1)'

v1.9.8

- naprawione działanie rozkazów 65816 PEA, PEI, PER
- dodana możliwość podania kodu dla .RELOC [.BYTE|WORD] [TYPE]

v1.9.7

- dyrektywa .DEF definiuje etykiety o zasiegu lokalnym, jeśli poprzedzić ją znakiem ':' to globalne
- poprawki dla liczb zmiennoprzecinkowych .FL, poprawione kodowane zera, dokonywane zaokrąglenie do 10 miejsc po przecinku
- dla bloków Sparta DOS X 'blk reloc' i 'blk empty' dodana możliwość określenia innego typu pamięci niż $00 (main), $02 (extended), np.:

  blk reloc $40

- poprawka umożliwiająca użycie dyrektywy .PRINT po 'blk empty'
- dodana możliwość definiowania wielowymiarowych tablic .ARRAY, np.:

.array scr [24][40]
  [11][16] = "atari"
.enda

  mva #"!" scr[11][22]

- dodana możliwość definiowania tablicy .ARRAY poprzez dyrektywę .DS, np.:

tmp .ds .array [5][12][4] .word

- dodana możliwość definiowania tablicy .ARRAY poprzez pseudorozkaz EQU (=), np.:

fnt = $e000 .array [128] [8] .byte

- naprawione działanie makrorozkazu ADW w połączeniu z makrorozkazem SCC itp.
- poprawki dla .REPT, m.in. komentarz wieloliniowy /* */ jest teraz właściwie rozpoznawany

v1.9.6

- poprawione działanie etykiet anonimowych dla mnemoników łączonych znakiem ':', np.:

       ldx #8
@      lda:cmp:req 20
       dex
       bne @-

- dodany pseudo rozkaz COS(centre,amp,size[,first,last]) generujący wartości dla funkcji cosinus
- dodany komunikat błędu 'Improper syntax' w przypadku użycia dyrektywy .DS w bloku .STRUCT
- naprawione działanie pseudo rozkazu ORG, np.:

	opt h-
	ORG [a($ffff),d'atari',c'ble',20,30,40],$8000,$a000

- addytywne bloki .LOCAL otrzymują kolejne adresy, poprzednio adres ustalany był na podstawie pierwszego wystąpienia takiego bloku
- dodany komunikat ostrzeżenia w przypadku stworzenia kolejnego addytywnego bloku .LOCAL o tej samej nazwie "Ambiguous label LOCAL_NAME"
- dodane mnemoniki PER (PEA rell), PEI (PEA (zp)) dla 65816
- dodane nowy typ danych M (najstarszy bajt LONG) i G (najstarszy bajt DWORD) dla pseudorozkazu DTA, np.:

 dta m($44556677)   ; -> $55
 dta g($44556677)   ; -> $44

- dyrektywa .LEN (.SIZEOF) rozszerzona o obsługę danych alokowanych poprzez DTA STRUCT_NAME, np.:

.STRUCT free_ptr_struct
  prev .WORD
  next .word
.ENDS

free_ptr_t dta free_ptr_struct [3]

	.print .sizeof(free_ptr_t)    ; free_ptr_struct [0..3] = 16 bytes

- zmiany dla operacji odczytu plików poprzez ICL, INS itp. plik do odczytu/zapisu będzie poszukiwany najpierw w ścieżce, która prowadzi do obecnie otwartego pliku, następnie ze ścieżki z której został uruchomiony główny asemblowany plik i na końcu ze ścieżek podanych parametrem -i (additional include directories)
- poprawione rozpoznawanie wielkości znaków gdy aktywowany jest przełącznik -c (char sensitive) dla struktur, np.:

.struct fcb
sEcbuf  .byte
.ends

data dta fcb [1] (0)

        lda     data[0].sEcbuf

- rozszerzone działanie dyrektywy .REPT o możliwość jej zagnieżdżania np.:

 .rept 2,#*2              ;  1 - $0000
                          ;  2 - $0000
 .print '1 - ',#          ;  1 - $0001
                          ;  2 - $0000
 .rept :1                 ;  2 - $0001
 .print '2 - ',.r         ;  2 - $0002
 .endr                    ;
                          ;
 .endr                    ;

- krótsza wersja pętli #WHILE bez wyrażenia, pętla trwa dopóki LABEL <> 0

#while .word label
#end