| |
Sasq
Registered: Apr 2004 Posts: 155 |
Badass - New 6502 Assembler
The last couple of months I've created a new 6502 Assembler called bass (or Badass).
The basic idea is for it to be as advanced as Kickassembler, but with a less complex, more unified syntax.
And it also has unit tests in an internal emulator.
You can find it at https://github.com/sasq64/bass
I've started a tutorial here: http://apone.org/bass/part1.html
Here is an example C64 source http://apone.org/bass/example.asm.html |
|
... 106 posts hidden. Click here to view all posts.... |
| |
Krill
Registered: Apr 2002 Posts: 2839 |
Just came across something which might or might not be a sensible and valuable feature for a 6502 assembler:
Interleaving code.
Sometimes, you really want to mix two "unrelated" sources at build time, with various constraints.
E.g., intermingling multispeed/sample-replay with VIC raster stuff and other (branch-less unrolled) code as to minimise context-switching overhead.
Or, putting little NMI handlers into pages which also happen to hold some other (fully branching) code.
The question would be, should an assembler handle that (instead of some higher-level compiler-like thing), and how to formalise/formulate the constraints. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11114 |
support for interleave code with fpp data? yes please :) |
| |
Krill
Registered: Apr 2002 Posts: 2839 |
Quoting Groepazsupport for interleave code with fpp data? yes please :) Indeed, mixing executable code with other data is also something you need here and there. :) |
| |
map
Registered: Feb 2002 Posts: 27 |
'Some higher-level compiler-like thing' for this problem seems to be invented it seems.
At least according to Raistlins comment here:
https://csdb.dk/release/?id=195841&show=notes#notes
Quoting name **Raistlin’s Code Generator**
Note that most of Raistlin’s parts used his C++ tool for generating highly optimised/unrolled ASM. It’s able to neatly interleave any “grunt” code (such as bitmap/char/sprite plotting) into accurately timed IRQ code (eg. For border opening). With this, opening borders and such is very simple - allowing the coder to concentrate on optimising the plotting algorithms. Without the tool, we shudder to think how someone might go about achieving some of the things we made for this demo ;-)
Actually I'm wondering if Raistlin would like to share that tool, or at least some more details. :-) |
| |
JackAsser
Registered: Jun 2002 Posts: 1989 |
See S:T Lars Meeting III - Invite source |
| |
Krill
Registered: Apr 2002 Posts: 2839 |
Quoting map'Some higher-level compiler-like thing' for this problem seems to be invented it seems. Why yes, that kind of stuff is something like a d64 image tool, in that every coder sooner or later rolls their own custom implementation (and repeats all the mistakes done by others before). :)
But an open and generic tool for that would be nice, and possibly included with an actual assembler. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11114 |
yes - and to be useful for the generic case it really needs support by the assembler. and its a quite tricky problem to solve too, similar to jackassers recent pack-code-into-banks challenge :) |
| |
JackAsser
Registered: Jun 2002 Posts: 1989 |
Quote: See S:T Lars Meeting III - Invite source
This one tracks register usage and cycles in the speed code in one code base and nops in another timed codebase and merges them while maintaining critical timing. |
| |
JackAsser
Registered: Jun 2002 Posts: 1989 |
Quote: yes - and to be useful for the generic case it really needs support by the assembler. and its a quite tricky problem to solve too, similar to jackassers recent pack-code-into-banks challenge :)
Which worked extremely well. I now have a prelinker scripts that digests all .o and .lib files and actually generates the link file for ld65. A prelinker. Freed up alot of space. |
| |
Krill
Registered: Apr 2002 Posts: 2839 |
Quoting JackAsserThis one tracks register usage and cycles in the speed code in one code base and nops in another timed codebase and merges them while maintaining critical timing. Yes, and that kind of stuff would have to be formalised for a generic tool. =) |
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 - Next |