Subject: [ANN] 6502 reloc. binaries & assembler
Newsgroups: comp.sys.cbm,comp.emulators.cbm,comp.sys.atari.8bit,comp.sys.apple2.programmer,comp.arch.embedded
Organization: TU Chemnitz
Summary: Announcement of 6502 relocatable binary format and assembler
Keywords: 6502, 65816, relocation, cross assembler, assembler, file format 



                    relocatable binary file format o65
                        & 6502 cross assembler xa65

This is the announcement for the 6502 relocatable binary file format 'o65'.

This format allows to 

- relocate (i.e. move to a different address) a file when loading it, to 
  be able to execute at a different address

- produce global label lists, i.e. being able to export labels from one
  file to another

- have undefined references, i.e. allow late binding (resolving symbols
  at load time)

- code sharing in virtual memory architectures

- do block oriented transfer and have minimum side storage when loading a file

The format works for the 6502 and for the 65816 CPU. It knows object from
executable files and more. 
The file format itself is free (I can do the clearance, if you have
suggestions for extensions etc.)
Have a look at: http://www.tu-chemnitz.de/~fachat/c64/xa/fileformat.txt

About another 6502 file format, see note 1).


                        6502 cross assembler xa65

As reference assembler to produce this kind of code, I have implemented
the file format in my 6502 cross assembler "xa65".
From version 2.1.1 it supports the new file format standard, and from 
version 2.1.2a, it comes with the "file65", "reloc65" and
"ld65" utilities to print information about a file, relocate a file
and link several object files together resp.
All the programs are close to production stage (you never know if you
got all bugs...), while the linker is in beta stage. Esp. I want to know
about options you would like to have.

The assembler is under GNU public license and can be found at:
http://www.tu-chemnitz.de/~fachat/c64/xa/index.html

Other changes from earlier versions:

- supports o65 file format, including linker, relocator and file utility.

- much better code quality (only two warnings with 
  gcc -W -Wall -pedantic -ansi)

- supports more MASM pseudo opcodes (but still not the important ones
  that I have my C-like preprocessor for: .if, .macro, .include.
  This might change someday...

- DOS support by go32 cross-compiling (only Makefile changes!)

General description:

- C-like Preprocessor to make macros 
- label "hiding" on different levels,
  i.e. multiple use of the same label possible 
- 1.5-pass assembler:
  Everything that can be derefenced is being assembled in pass 1 and
  saved in memory. The second pass does the rest. This (together
  with hashing etc) gives quite a good speed (30kByte binary out of
  300kByte source in less than two minutes on an 8MHz Atari ST -
  hey, the first versions would have taken half an hour for this
  job! - my 486DX4/100 with linux needs around two seconds or so...)
- needs no linker - all stuff is in source code (with this speed,
  it's ok) 
- (optional) support for relocatable 'o65' file format,
  including linker, relocator and file utility.  A loader in 6502
  assembly code is also included. 
- reads DOS and Unix(tm) files (LF or CR+LF)

so long
André Fachat

----
1) There is already another relocatable object file format, called "OMF",
which is mostly used in the Apple community. I didn't take this format
for my projects for several reasons: It has some limits on filename
lengths; the relocation information is encoded between assembler code,
i.e. one cannot easily use block loading; it doesn't provide different
segments (as I can see) that have this meaning. 
The OMF file format has never been published on the internet and mostly
commercial companies from the Apple world seem to support it - but then
they even have C compilers for this file format.



--
André Fachat                       |"I do not feel obliged to believe that the
Institute of physics,              | same God who has endowed us with sense,
Technische Universität Chemnitz    | reason, and intellect has intended us to
http://www.tu-chemnitz.de/~fachat  | forego their use" -- Galileo Galilei
