Madass


MADS is a multi-pass crossassembler designed for 6502 and 65816 processors. Binaries are generated mainly for Atari 8-bit systems (supported are AtariDosII and SpartaDOS X formats).

MADS allows using macros and procedures (ability to use program stack), division of the memory between many virtual-banks, multi-dimensional names of labels (similar to C++ and Delphi languages), local-global-temporary labels.

Max. amount of labels and macros is limited to PC's memory size. Single listing's line can be 65536 bytes long and any label can be such long as well.


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

© Tebe/MadTeam, hosting: www.atari8.info