| |
Majikeyric
Registered: Sep 2002 Posts: 83 |
Looking for 64 bit version of ACME
Hello all,
Did someone compile a x64 version of the ACME cross-assembler compatible for windows seven ?
Many thanks
Bye
Majikeyric |
|
| |
Devia
Registered: Oct 2004 Posts: 401 |
Not necessary as Windows x64 OS's are 32bit compatible.
Just get the Win32 version, not the DOS 16bit version from http://www.esw-heim.tu-clausthal.de/~marco/smorbrod/acme/
yeah, not the latest, but do you REALLY need that? |
| |
doynax Account closed
Registered: Oct 2004 Posts: 212 |
Either that or compile the latest version on your own.
With GCC it's as easy as letting make do its thing. Unfortunately MinGW (the Windows port of GCC) doesn't support 64-bit targets yet, so if your projects are starting to run up against the two-gigabyte address space limit then you'll need to tweak one or two problematic lines to get ACME to compile in MSVC. |
| |
gregg Account closed
Registered: Apr 2005 Posts: 56 |
I'd really like to see a C64 assembler project that breaks this memory barrier. |
| |
Adam
Registered: Jul 2009 Posts: 323 |
I was just wondering which memory barrier you were referring to... I've been using dasm since I started coding 6510 two years ago and never encounter any probs. Not sure if it works under Win7 yet as I don't have a copy yet :)
I agree 100% that a new assembler for 65xx series of cpu's, would be a huge benefit for many people but I'd say not for others who are quite comfortable and used to using acme or dasm, even turboasm.. All great programs by the way. :))
..Adam/Onslaught/SIDwave |
| |
doynax Account closed
Registered: Oct 2004 Posts: 212 |
Quoting AdamI was just wondering which memory barrier you were referring to... I've been using dasm since I started coding 6510 two years ago and never encounter any probs. Not sure if it works under Win7 yet as I don't have a copy yet :) Sorry, I was being facetious. You're never going to get anywhere close to that limit.
For the record Win32 executables have a 32-bit address space, which it divides equally (unless you use the /3GB switch) into two user and kernel portions. This limitation was the motivation for switching to 64-bit processors and means that without tricky bank-switching schemes your programs can't store more than two gigabytes in memory at once, a limit which large server applications and such have been known to reach.
Quoting AdamI agree 100% that a new assembler for 65xx series of cpu's, would be a huge benefit for many people but I'd say not for others who are quite comfortable and used to using acme or dasm, even turboasm.. All great programs by the way. :)) Err.. Who said we needed a new one?
I do agree that all current assemblers their limitations, lately I've been frustrated by the lack of a proper object file format and linker for ACME for instance, but for the most part the answer ought to be to tweak the ones we have. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Quote:proper object file format and linker
ca65 ftw! \o/ |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
. o O ( acme ) . o O ( ca65 ) . o O ( dasm)
|
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: Hello all,
Did someone compile a x64 version of the ACME cross-assembler compatible for windows seven ?
Many thanks
Bye
Majikeyric
You can get updated ACME sources that have had some fixes applied from here: http://codebase64.org/doku.php?id=base:emulation
You don't need 64 bit versions, win32 exes will run just as well. |
| |
Ninja
Registered: Jan 2002 Posts: 411 |
Those looking for new assemblers might also have a peek at DreamAss. No, I won't do marketing and exploit that it was largely used for Edge of Disgrace. Oops, too late... ;) |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
its also beeing used for the Retro Replay ROM :) |
| |
Ninja
Registered: Jan 2002 Posts: 411 |
To be very precise, it was originally developed for the Retro Replay ROM :) The other assemblers couldn't cope with the required bank-switching. (Now, this would make a nice trivia entry...) |
| |
Majikeyric
Registered: Sep 2002 Posts: 83 |
Many thanks everybody.
First I was believing that I was already using the Win32 version which crashed under Seven.
But I was using the DOS one \0/
The Win32 .exe works fine.
Many thanks Martin for your link to this improved version ;-)
|
| |
Count Zero
Registered: Jan 2003 Posts: 1932 |
Quote: Those looking for new assemblers might also have a peek at DreamAss. No, I won't do marketing and exploit that it was largely used for Edge of Disgrace. Oops, too late... ;)
I 2nd this attention whoring! :)
Not to make up a flame war on which assembler to use but rather to check all options for given projects.
Unfortunately there is no place dedicated to comparison of features and limitations. One of the better starting points would be http://codebase64.org/doku.php?id=links:start currently I suppose.
l8r
Count Zero/CyberpunX/SCS*TRC |
| |
Martin Piper
Registered: Nov 2007 Posts: 722 |
Quote: To be very precise, it was originally developed for the Retro Replay ROM :) The other assemblers couldn't cope with the required bank-switching. (Now, this would make a nice trivia entry...)
What exactly do you mean?
I can produce CRT files with bank-switching in ACME. |
| |
Frantic
Registered: Mar 2003 Posts: 1648 |
I think he refers to the following dreamass function:
.banknumbyte (labelpointingtomysubroutine)
This can be used to automatically produce jumptables that keeps track of which bank a certain routine resides in. It is also possible to redefine labels, which is handy if you want to include the same bankswitching code file in each ROM-bank, using the same labels (that should be accessible in the global scope). Redefining labels is possible in ACME too, though, if I remember correctly and I guess you may be able to "emulate" the "banknumbyte" thing too, somehow. Apart from these things I am not sure what exactly makes dreamass more suitable for generation of banked code. |
| |
doynax Account closed
Registered: Oct 2004 Posts: 212 |
Quoting FranticI think he refers to the following dreamass function:
.banknumbyte (labelpointingtomysubroutine)
This can be used to automatically produce jumptables that keeps track of which bank a certain routine resides in. It is also possible to redefine labels, which is handy if you want to include the same bankswitching code file in each ROM-bank, using the same labels (that should be accessible in the global scope). Redefining labels is possible in ACME too, though, if I remember correctly and I guess you may be able to "emulate" the "banknumbyte" thing too, somehow. Apart from these things I am not sure what exactly makes dreamass more suitable for generation of banked code. ACME can do both of those things. The unary ^ operator is used to get the bank byte. However I would probably avoid redefining jump tables entries in multiple banks and simply set them to their 16-bit mapping address instead.
ACME can't produce ROMs larger than 64 kB however but I suspect that limitation would be simple enough to remove. I've never tried to use banking myself so there might well be other complications.
|
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
acme (and any other assembler i have tried) is very simple compared to dreamass when it comes to banked code ... for example dreamass can take your functions and arrange them in several banks for best fit. |
| |
Frantic
Registered: Mar 2003 Posts: 1648 |
@Groepaz: When I asked Doc Bacardi a few months ago about such automatic distribution of code to various banks in dreamass he replied:
"This feature is not finished yet, sorry! And I don't know when I will find the motivation to do it. :)"
So... :)
@Doynax: What do you mean with "16bit mapping adress"? |
| |
doynax Account closed
Registered: Oct 2004 Posts: 212 |
Quoting FranticWhat do you mean with "16bit mapping adress"? Err.. I had a bit of trouble finding an appropriate term.
What I meant was simply that the shared code must be placed at the same address within each bank for the fall-through to work properly anyway. So why not place them within an effective address block at the location within the 6502's address space at which the blocks will be is mapped in?
;Replicated bank-switching code
!pseudopc (* & $FFFF) {
switch:
.
.
.
}
As a bonus ACME will then verify that the "switch" label, and any other global labels within the block, truly are placed at a common address. |