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 > Assembler preferences.
2016-02-09 06:03
ChristopherJam

Registered: Aug 2004
Posts: 1409
Assembler preferences.

Two questions:
- what's everyone using these days?
- on large productions, do groups tend to enforce a single assembler for the entire project, or is the code base a bit heterogenous?

I'd like to keep this discussion purely focussed on assemblers; please leave code generators, loader toolchains etc for that other thread.


(as for me, I'm still using xa65 for most projects)
 
... 204 posts hidden. Click here to view all posts....
 
2016-05-05 21:03
Oswald

Registered: Apr 2002
Posts: 5094
since I dont know any other, 64tass can do that for you (and probably most others), as you can define custom encoding in it.

[link]http://tass64.sourceforge.net/#text-encoding[/link]

byte after string is at * after the line .text.


also it has macros, conditinal assembly, all the bells and whistles.

my guess is you were just too lazy to learn a new syntax :)


edit: as I was for like 15 years using c64 native tasm assembler I dont find the need for scripting to write my code generators. I think they can be done in about the same time the native way as with scripting. Bonus is I dont have to rewrite the generator to native when done. Key is to plan the speedcode before starting to write the generator. The flexibility they offer is enough to tweak a little when needed. Esp if you copy a code segment around, you can easily add / remove instructions. I find the most problematic when a speedcode modifies another one, but thats also just a case of counting a bit how much bytes apart those places are. or if you want to be fancy add labels to the cookie cutter code, and some substractions will give you the correct answer no matter how it changes
2016-05-06 03:30
saimo

Registered: Aug 2009
Posts: 36
@Oswald

Laziness did play a role, but it wasn't the deciding factor. I should have:
1. checked which assemblers are available for AmigaOS (4);
2. studied the features of all of them;
3. chosen the one that would suit me best.
Admittedly, this would have been tedious. But what would have really annoyed me is if, in the end, I would have liked one thing from an assembler, another thing from another assembler, and no assembler would have satisfied me entirely. Mind you, maybe there's a perfect assembler out there for me, but still finding out would have been a pain and a risk. So I did it my own way, which comes with the added bonus that I'm not restricted by the limitations of any compiler, and I can do directly in the code things that otherwise might need external tools and/or manual fiddling.

Regarding the text encoding, sure, I didn't mean to say that it wouldn't be possible/easy in other ways. Actually, that's something so basic that I expected there would be several ways of doing it easily.
The text encoding example was meant only to give an idea of how things work and of the potential (that's why I introduced it with "I feel I'm only scratching the surface for now, but, after all, at the moment I don't need anything complicated, and I'm enjoying the possibility of doing things like this"). It's more important what I said before that, i.e. that this way of generating code dynamically through an intermediate executable can be very handy and powerful.
I'll make the text encoding example a bit more interesting...

Recently, the preview of a C64 commercial game that is/was being crowdfunded was leaked, and the authors were quite pissed. So, let's imagine that one wants to provide reviewers with identifiable executables. There are a number of ways to do that, and one could be generating copies with unique text encoding. In this framework I'm working with, that is done by:
1. adding a function that scrambles the arrangement of characters in the charset in a unique way, and produces the corresponding mapping information;
2. writing a function that encodes the ASCII texts according to the mapping information;
3. compiling the C code once;
4. running the intermediate executable every time it is necessary to produce an identifiable copy.
In the end, it would all boil down to typing "make" in a shell (or some other equivalent operation) - and the result would be obtained very quickly, since there is no compiling, and the intermediate executable outputs the final executable almost instantly.

Or... let's go completely paranoid and generate a unique copy for each person who gets the game: how about having all the subroutines arranged in an order unique to each copy (the permutations are many already with a reduced set of subroutines, so the size of the audience is not a problem)? It would be sufficient to:
1. enclose each subroutine in a C function;
2. define a vector of all the functions;
3. call the functions in different order each time.
The process could be automated entirely: it would be enough to have the intermediate executable on the server that delivers the game and execute it every time a download is requested.
OK, true, no server runs on AmigaOS, but you get the idea :D

Hey, just to be clear, I'm not trying to convert anyone: just showing a different answer to the question "which assembler do you prefer?" and its potential.
2016-05-06 07:04
Krill

Registered: Apr 2002
Posts: 2980
Quoting saimo
Indeed it bothers me a bit to have to write all those () and ;
I've been wondering why you don't use preprocessor macros to get rid of those (at least for the opcodes with implied arguments), so you'd write "txa" instead of "txa();" using a simple "#define txa txa();".
2016-05-06 07:18
Krill

Registered: Apr 2002
Posts: 2980
Quoting saimo
Recently, the preview of a C64 commercial game that is/was being crowdfunded was leaked, and the authors were quite pissed.
Care to drop a name? I wasn't aware such things existed (but i'm not really surprised either), and i find this a bit funny. It's crowdfunded anyways, so why not give out previews on a regular basis? But that's a topic for another thread. :)
2016-05-06 07:27
Steppe

Registered: Jan 2002
Posts: 1510
The game's called "Barnsley Badger", some kind of Monty on the Run clone. Read about it on the Hyperion 64 page on Facebook.
2016-05-06 10:40
saimo

Registered: Aug 2009
Posts: 36
Quoting Krill
Quoting saimo
Indeed it bothers me a bit to have to write all those () and ;
I've been wondering why you don't use preprocessor macros to get rid of those (at least for the opcodes with implied arguments), so you'd write "txa" instead of "txa();" using a simple "#define txa txa();".

Your observation makes sense, but unfortunately I can only say that I could not have lived with the syntactical inconsitency :p (No kidding, that's really the reason I went that route; but, yes, that solution is tempting.)
2016-05-06 11:27
ChristopherJam

Registered: Aug 2004
Posts: 1409
Quoting saimo
F.ex., it is possible to include a binary file, analyze it, and generate code depending on the results of the analysis.


Well yes, this is what I usually do with some Python that spits out some assembler to include in my sources. But I can see the merit in having a more integrated system :)
2016-05-13 19:32
fieserWolF

Registered: May 2003
Posts: 3
I use ACME because I like the name.
2019-09-16 16:06
Raistlin

Registered: Mar 2007
Posts: 680
I wonder, 3 years on, what everyone uses now?

I know most will probably say "the same as 2016.. if it ain't broke" etc ... but I wonder.

Personally, I'm using KickAss.
2019-09-16 16:10
Frantic

Registered: Mar 2003
Posts: 1648
the same as 2016..
Previous - 1 | ... | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 - Next
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
csabanw
Alakran_64
Durandal
Jammer
heavymett
/Panor..
Guests online: 106
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 No Listen  (9.6)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top Diskmag Editors
1 Magic  (9.8)
2 hedning  (9.6)
3 Jazzcat  (9.5)
4 Elwix  (9.1)
5 Remix  (9.1)

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