Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > What assembler/compiler are you using?
2010-03-16 20:44
Mace

Registered: May 2002
Posts: 1799
What assembler/compiler are you using?

Since I kind of switched from 64TASS to Kick Assembler, I was wondering what the other coders use as coding tool?
Still working on the C64 with TASM or do you use one of the cross development compilers?
2010-03-16 20:45
iAN CooG

Registered: May 2002
Posts: 3132
Dasm, my own mod of it.
2010-03-16 20:56
neoman

Registered: Apr 2009
Posts: 6
Cross development. ACME. And testing with VICE and Codenet.
2010-03-16 21:21
Nitro
Account closed

Registered: Aug 2008
Posts: 13
Proud Kick Assembler user :)
2010-03-16 21:24
enthusi

Registered: May 2004
Posts: 675
started crossdev with acme,
for some time now:
xa and dxa
2010-03-16 22:03
WVL

Registered: Mar 2002
Posts: 886
64TASS all the way :)
2010-03-16 22:44
Devia

Registered: Oct 2004
Posts: 401
ca65
2010-03-16 23:09
Conjuror

Registered: Aug 2004
Posts: 168
KICK-ASS
2010-03-17 00:16
Ervin

Registered: May 2008
Posts: 14
ca65
(with several more or less sophisticated self-made macros)
2010-03-17 05:18
Moloch

Registered: Jan 2002
Posts: 2893
turbo assembler v3 and some ACME crossdev
2010-03-17 08:13
The Human Code Machine

Registered: Sep 2005
Posts: 110
iAN CooG's Dasm mod
2010-03-17 10:34
Stone

Registered: Oct 2006
Posts: 168
ca65 and c#/winforms for prototyping/data generation
2010-03-17 10:49
Scout

Registered: Dec 2002
Posts: 1568
64TASS.
2010-03-17 10:58
Oswald

Registered: Apr 2002
Posts: 5017
64tass, VB6 for prototyping / data generation :)

Notepad++ for editing, I can only recommend it, simple yet with a lot of useful features. You can make fully customized highlight file only with few mouseclicks, I have one where the source looks similar to tasm: c64 font, 64ish colors, 64ish cursor (!). You can hide codeblocks in a tree like structure, so you only see what you are working on. You can have two views of the same or two different sources. Plugins, Macros, and what not.
2010-03-17 15:13
Frantic

Registered: Mar 2003
Posts: 1627
Mostly ACME, and a little of DreamAss and ca65 and even TASS for a small thing a while ago.

Also did some slight modifications to ACME in order to suit my purposes better, but not really introducing any new functionality as such.

I use TextMate for editing, and call the makefiles from within TextMate, that invokes the assemblers, crunchers, and VICE and so on. I configured TextMate so that whenever there is an error or a warning, a small window pops up that allows me to click on the erorrs, which takes me to the correct file and the correct line within the file where the error appeared. Kinda handy.

@Ian: What modifications did you do to DASM?
2010-03-17 15:28
Mace

Registered: May 2002
Posts: 1799
My editor of choice is EditPlus (thanks to Scout for pointing me in its direction).
You can invoke external programs by pressing CTRL+key, it has nice syntax options, a feature to create a project that holds all the necessary files and then some more stuff.
Of course I have the *cough* evaluation *cough* version ;-)
2010-03-17 15:46
Slammer

Registered: Feb 2004
Posts: 416
Whats your favorite feature of the assembler you are using? What feature really helps you?

Eg. I like the Pseudocommands and the autonomspacing in KickAss. Pseudocommands because it enables you to write much more flexible macros and autonamespacing because I have really missed this feature when executing macros.

And I hear that Dreamass has good memory management capabilities for building cartridges
2010-03-17 16:19
Oswald

Registered: Apr 2002
Posts: 5017
Slammer, I guess I'm not 'power' assembler user, I'm happy with basic stuff :) using 64tass because its similar to tasm.

Frantic, that error stuff is neat, how do you do it ?
2010-03-17 17:20
Iapetus/Algarbi/Wood

Registered: Dec 2004
Posts: 71
Crimson Editor/Scite + Kick Assembler
2010-03-17 17:24
The Human Code Machine

Registered: Sep 2005
Posts: 110
@Slammer I really love the way DASM handles local labels using the SUBROUTINE pseudo-op. All labels beginning with a . below a SUBROUTINE statement are local and the big advantage is, that I still can use normal global labels between different SUBROUTINE blocks.
2010-03-17 18:37
Pantaloon

Registered: Aug 2003
Posts: 124
KickAssembler + Visual Studio + Visual Studio Plugins for Kick Assembler.

Feature in KickAsm that i like: The fact that you can just process data within the sourcefile in script. So you dont have to use any other tools to import gfx/music etc.
2010-03-17 19:22
null
Account closed

Registered: Jun 2006
Posts: 645
ACME or Turbo Assembler.

------------------------------------
http://zomgwtfbbq.info
2010-03-17 19:52
Mace

Registered: May 2002
Posts: 1799
Quoting Slammer
Whats your favorite feature of the assembler you are using? What feature really helps you?
Hey, don't hijack my thread! ;-)
I replied here.
2010-03-17 20:24
Slammer

Registered: Feb 2004
Posts: 416
Mace: Sorry, I didn't think you would mind since the two things are somewhat connected.
2010-03-17 20:31
Total Chaos

Registered: Mar 2006
Posts: 74
Kick ASS...
2010-03-17 23:04
AlexC

Registered: Jan 2008
Posts: 293
DreamAss but KickAss with VS plugins seems to be tempting option. From time to time I still use TMP on real thing (for bigger things with REU enabled) with 1541U.
2010-03-18 09:29
ready.

Registered: Feb 2003
Posts: 441
64tass, notepad++, excel and VB for excel for data generation and manipulation on PC

turbo assembler (for MMC Replay, which uses MMC Repaly RAM), basic V2.0 for data generation on the C64.
2010-03-18 09:45
Skate

Registered: Jul 2003
Posts: 490
1991-1995 Action Replay Monitor :)
1995-2004 Turbo Assembler
2004-2010 ACME
2010-.... Thinking of Kick Assembler, not certain yet.
2010-03-18 10:07
LHS

Registered: Dec 2002
Posts: 66
64TASS as well, in PSPAD. And C++ for some code generation and data converting.
2010-03-19 03:18
Ervin

Registered: May 2008
Posts: 14
Well, since I've been using ca65 almost exclusively till now, I wonder if there is any assembler which can produce labels like this (in "ca65 pseudo code"):
*=$c000
.repeat	3,i
  .label( concat("startofnop_", .string(i)) )
  .repeat i+1
    nop
  .endrep
  .byte i
.endrep
.word startofnop_0, startofnop_1, startofnop_2

which would result in:
startofnop_0:
nop
.byte 0
startofnop_1:
nop
nop
.byte 1
startofnop_2:
nop
nop
nop
.byte 2
.word $c000,$c002,$c005

As I found out (I might be wrong!) ca65 can not use the actual repeat counter (in this example: "i") as input for builtin pseudo functions, like ".string(i)". Maybe another assembler can do the trick, or maybe ca65 can do this too in some way?

2010-03-19 07:43
Frantic

Registered: Mar 2003
Posts: 1627
@Ervin: I can't recall seeing the ability to create labels on the fly in other assemblers than ca65. For me that is one of the few distinct benefits that I remember from ca65. Would be interesting to hear if this is possible in some other assembler.

@Oswald: In TextMate you can create something called "Bundles" which are associated with certain file types per default, and they contain info on syntax highlighting, what to do when pressing certain keys on the keyboard (such as calling external programs) and so on. Magervalp created a bundle for TextMate and ca65 that I customized for ACME instead, and added a bunch of stuff too. So, whenever I call make from TextMate to parse my Makefile (I can invoke several variants such as "make", "make clean", "make all", "make vice", "make codenet"), I also capture the output from the assembler (using standard regext matching tools such as egrep), and if there is any matches to strings such as "Warning" or "Error" I transform these error strings (using standard regexp substitution tools such as sed) to HTML that looks like this:

<b>Trouble:</b><br>
<a href="txmt://open?url=file:///Users/matsandren/systems/c64/code/own/music/superp layer/code.a&line=692">alt.a:692&mdash;<i>error:Syntax error.</i></a><br>

...and if any such output is produced, I enable a flag in TextMate saying "Show output as HTML" and make sure that the execution of the Makefile is halted. The txtm:// stuff is a special feature of TextMate that opens a particular file (or switches to it, if it is already open) and the line parameter also makes it jump to the correct line. If everything worked fine, no window is popped up, and the file is instead executed in VICE, or on the C64 via codenet.

It was a little work to get this working correctly, but now I use it all the time, so it was worth it I guess.
2010-03-19 08:30
Radiant

Registered: Sep 2004
Posts: 639
Ervin: Actually, it is possible to do what you want to do in ca65, but I know of only one specific way:

.macro makeident lname, count
    .ident(.concat(lname,.sprintf("%d", count))):
.endmacro

Using a macro like this it's possible to create labels using a repeat counter.

.repeat $100, I
    .makeident "foo", I
    lda $1000 + I
    sta $2000 + I
.endrepeat

This produces the following code:

foo0:
    lda $1000
    sta $2000
foo1:
    lda $1001
    sta $2001
foo2:
    [...]
2010-03-19 10:38
Frantic

Registered: Mar 2003
Posts: 1627
@Radiant: I added that to codebase. Thought it may be useful to someone (and I want to remember it myself).
2010-05-06 21:01
bert64
Account closed

Registered: Jan 2010
Posts: 2
I guess I'm old-school, but I use Buddy on WinVICE with 16MB ram expander enabled and Jiffy-DOS roms. My c64 programs first save all ZP, source, Buddy, etc. memory to expander and put it back in the end. Doesn't take much code to do this. That way I can still use nearly the entire 64K for the program code and can actually get things done in a single lifetime. I've tried cross-compiling but I guess it's just not for me, although ReLaunch/KickASS is a nice mix. Too much commit charge, though.

There's just something about coding directly on the 64 that feels good. Almost forgot--I usually open two or three Win VICE instances at a time, one with AR6 or Warpspeed enabled. It helps.
2010-05-07 14:26
yago

Registered: May 2002
Posts: 332
on k2asm, codegeneration (incl. labels) would go like this
#pybegin
for i in range(0,10):
  print "foo"+str(i)+":"
  print "lda $1000+",i
  print "sta $1000+",i
#pyend


would produce same code as radiantx ca65 example

(one can also use external (non-python) code-generators, but thats for the heavy stuff)
2010-05-07 16:26
Slammer

Registered: Feb 2004
Posts: 416
The KickAssembler approach would be to put the memory positions in a list:
.var list = List()
.for (var i=0; i<100; i++) {
	.eval list.add(*)
	lda $1000+i
	sta $1000+i
}
.for (var i=0;i<list.size(); i++) .word list.get(i) 

(Kind of illustrates the difference between a preprocessing script and an integrated script - here we put the actual memvalue in a list)
2010-05-07 18:53
Graham
Account closed

Registered: Dec 2002
Posts: 990
And the Graham Assembler does the code generator in 6502 asm.
2010-05-07 19:34
Slammer

Registered: Feb 2004
Posts: 416
Large unrolled loops in an trackmo is ofcause best done by doing an unroll routine. However this workcycle works for me:

1. Make the code fast with unrolled loops by the assembler and see that it works
2. Declare the loop code 'virtuel' so it isn't stored in memory and create functions that generates the loop code.

This makes the development more rapid and the assembler calculates the amount of memory an unrolled loop needs so they are automaticly placed right after each other.


2010-05-07 20:19
Oswald

Registered: Apr 2002
Posts: 5017
I use Graham Asm aswell, as a bonus you dont have to do the work twice.
2010-05-07 21:20
Slammer

Registered: Feb 2004
Posts: 416
Can anybody tell me where I can download this Graham Assembler? Does he take up more than one floppy disc and does he have a good manual?
2010-05-07 21:58
Oswald

Registered: Apr 2002
Posts: 5017
I always carefully plan out the speedcode before coding anything, so at the coding stage I already know what I'm doing, there's no need to experiment with scripting. Also I have written already like a hundred code generators, so its not a problem to make the 101th.

Anyway tastes & habits are different. Two years ago I was still writing code in winvice in turbo sss :) also I can see how freakin cool KickAss is & that I'm an old dinosaur.
2010-05-07 22:03
Slammer

Registered: Feb 2004
Posts: 416
Nothing wrong with old dinosaurs, Everybody define his own level of retroness :-)
2010-05-08 10:25
yago

Registered: May 2002
Posts: 332
Slammer: doesnt your code just generate the ldas stas and a list with the addresses, but no labels?
2010-05-08 14:48
Slammer

Registered: Feb 2004
Posts: 416
Yago: Yes, thats correct. This was started by Ervins post, who asked how to unroll a loop, save some referencepoints to labels and store the labels to memory with a .word command. RadiantX and yourself showed solutions for ca65 and k2asm. I showed another approach where a list was used to hold the the referencepoints instead.
2010-05-09 08:24
Kaizen
Account closed

Registered: May 2009
Posts: 23
My setup: DASM and TextWrangler for Mac.
I can work well with them but I would like to know what cross assembler tool have the most classical/standard assembly synthax... is it 64TASS?
2010-05-09 09:43
enthusi

Registered: May 2004
Posts: 675
When you use acme you can convert TASS SEQ-files to acme-sources with a few renames only...
!byte instead of .byte and so on.

AFAIK its pseudo PC is handled similar as well.
2010-05-09 11:01
Oswald

Registered: Apr 2002
Posts: 5017
Kaizen, yes 64 tass. you have a few goodie extras like +/- labels, for/next,if/then, etc. check the manual. :)
2010-05-09 12:34
Kaizen
Account closed

Registered: May 2009
Posts: 23
@Oswald: Thanks! :-)
2010-05-11 19:20
Zone
Account closed

Registered: Nov 2002
Posts: 7
I use ca65. I mostly code applications and it suits me well. It surely is a bit of work to start a new project, creating Makefiles and such, but once the project grows, it becomes really handy.

On a real C64 I prefer Fairlight's XASS (a heavily modified TASS for REU units). Unlike Style's new TMP+REU, it not only backups your soure and assembler but also the included REU monitor and all of your gfx/msx data - making machine crashes less frustrating. :)
2010-05-12 13:50
Martin Piper

Registered: Nov 2007
Posts: 634
I'm still using ACME with extra tweaks to add label saving for VICE and proper library search paths. You can get the full sources from http://www.wellytop.com/C64.html
2010-05-18 09:07
AlexC

Registered: Jan 2008
Posts: 293
Maybe a bit off topic but I find it interesting: I started to transfer my dev tools to AmigaOS 4.1. Vice works quite well with exception of sound problems, and Exomizer works perfectly :)
2010-05-18 10:52
Frantic

Registered: Mar 2003
Posts: 1627
@Alex: I have executable versions of pucrunch and ACME that work on Amiga 500 with kickstart 1.3. :)
2010-05-18 13:25
AlexC

Registered: Jan 2008
Posts: 293
Quote: @Alex: I have executable versions of pucrunch and ACME that work on Amiga 500 with kickstart 1.3. :)

Cool :D This is the power of standard C library - you can compile one code on many platforms and it should work.

Since AmigaOS 4.1 you have Python included as part of core operating system so it makes all my tools available on this platform.
2010-05-18 19:20
Case

Registered: Aug 2002
Posts: 138
Out of interest, is there anyone who can read amiga disks and transfer the files to the pc ?, I would like to get my old source code from the amiga to pc so i can continue and improve some of them.

2010-05-18 22:29
AlexC

Registered: Jan 2008
Posts: 293
Quote: Out of interest, is there anyone who can read amiga disks and transfer the files to the pc ?, I would like to get my old source code from the amiga to pc so i can continue and improve some of them.



Well, if you have lots of them I'd take a look at Catweasel MK4plus - works perfectly well with Amiga disks even on standard PC floppy drive.
2010-05-18 22:59
Ervin

Registered: May 2008
Posts: 14
Quote: Out of interest, is there anyone who can read amiga disks and transfer the files to the pc ?, I would like to get my old source code from the amiga to pc so i can continue and improve some of them.



If you have a real Amiga and a serial cable, you can transfer it to the PC. Look for "ADF sender terminal" at adfsender.stoeggl.com.
2010-05-20 03:22
plagueis
Account closed

Registered: Dec 2007
Posts: 48
Regarding Assemblers I use Turbo Assembler that comes with Coder's Orgasm v3, and occationally other versions. Often, when convenient, I have a cartridge plugged in simultaneously, for an even lower level look if I need it.

I like what Slammer said about how everyone defines their own level of "retro-ness" even if it was meant to be sarcastic, it contains more than a grain of truth.

For me it's about getting as close to the cpu and VICII as I can, and for now, I want to stay there and learn as much as I can. Later on I'm sure I'll want to take advantage of the powerful features found in modern cross assemblers.

-DP
2010-05-20 11:36
daison

Registered: May 2005
Posts: 90
KickAsm
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
McMeatLoaf
Unkle K/Reset Magazi..
Guests online: 128
Top Demos
1 Next Level  (9.8)
2 Mojo  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Comaland 100%  (9.6)
6 No Bounds  (9.6)
7 Uncensored  (9.6)
8 The Ghost  (9.6)
9 Wonderland XIV  (9.6)
10 Bromance  (9.6)
Top onefile Demos
1 It's More Fun to Com..  (9.8)
2 Party Elk 2  (9.7)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.5)
5 Rainbow Connection  (9.5)
6 TRSAC, Gabber & Pebe..  (9.5)
7 Onscreen 5k  (9.5)
8 Wafer Demo  (9.5)
9 Dawnfall V1.1  (9.5)
10 Quadrants  (9.5)
Top Groups
1 Oxyron  (9.3)
2 Nostalgia  (9.3)
3 Booze Design  (9.3)
4 Censor Design  (9.3)
5 Crest  (9.3)
Top Original Suppliers
1 Derbyshire Ram  (9.5)
2 Black Beard  (9.4)
3 hedning  (9.2)
4 Baracuda  (9.1)
5 Irata  (8.5)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.081 sec.