| |
Sasq
Registered: Apr 2004 Posts: 155 |
Wanted: Source codes (for badass)
In order to improve my assembler it would be great to try it on existing projects.
So if you have sources for demos/intros/games that you don't mind sharing it would be kind if you could send them my way, and I'll try to get them working in bass.
They need to be buildable the normal way (Kickass, Acme or whatever) so I can compare the output binaries...
(this also means that if your type of demos requires special tools there is a greater chance I will include such functionality in bass).
-- sasq64@gmail.com |
|
... 65 posts hidden. Click here to view all posts.... |
| |
Golara Account closed
Registered: Jan 2018 Posts: 212 |
https://gitlab.com/pseregiet/samar-ghost-in-the-sydney-c64
https://gitlab.com/pseregiet/desire-fastline-c64-intro
https://gitlab.com/pseregiet/samar-watcher-of-time-and-space-c64
https://gitlab.com/pseregiet/desire-4k-for-moonshine
https://gitlab.com/pseregiet/one-year-a-scener |
| |
TheRyk
Registered: Mar 2009 Posts: 2076 |
contact ACME creator Mac Bacon normally he's eager to help |
| |
Walt
Registered: May 2004 Posts: 47 |
REUTools 1.0 also contains source code... |
| |
Krill
Registered: Apr 2002 Posts: 2850 |
One thing i just came across again:
It would be nice to have the assembler emit an actual 16-bit operand with things like "lda $0000" and "sta $0000,x" as opposed to "lda $00" etc.
They seem to consistently insist on knowing better and "optimise" the code for zeropage access.
To counter this, all kinds of syntax (one fuglier than the next) to force specific address sizes were invented. Ugh. =) |
| |
tlr
Registered: Sep 2003 Posts: 1717 |
Quoting KrillOne thing i just came across again:
It would be nice to have the assembler emit an actual 16-bit operand with things like "lda $0000" and "sta $0000,x" as opposed to "lda $00" etc.
They seem to consistently insist on knowing better and "optimise" the code for zeropage access.
To counter this, all kinds of syntax (one fuglier than the next) to force specific address sizes were invented. Ugh. =)
Tricky case. Do you have a suggestion for a good rule for this except in the trivial case with a constant?
I suppose a bit string concept like in 64tass might be sufficient. Not sure if 64tass uses it in that way though. |
| |
Krill
Registered: Apr 2002 Posts: 2850 |
Quoting tlrTricky case. Do you have a suggestion for a good rule for this except in the trivial case with a constant? I'm mostly interested in the trivial case where there are 16-bit values with a zero high-byte as literal operands (to be used with self-modifying and unrolled code).
When going via indirections (labels, symbols, expressions), explicitly marking 16-bit access the traditional way is okay. |
| |
tlr
Registered: Sep 2003 Posts: 1717 |
Quote: Quoting tlrTricky case. Do you have a suggestion for a good rule for this except in the trivial case with a constant? I'm mostly interested in the trivial case where there are 16-bit values with a zero high-byte as literal operands (to be used with self-modifying and unrolled code).
When going via indirections (labels, symbols, expressions), explicitly marking 16-bit access the traditional way is okay.
Recording the number of bits a constant was defined with, but maybe not propagating it through expressions would solve your use case. Might be annoying that it behaves differently if used in expression though.
I'd look a 64tass and see if and how that solves it first though. |
| |
soci
Registered: Sep 2003 Posts: 474 |
Technically possible even with labels and expressions but it'd be too fragile to rely on it. Also some people tend to write out excess zeros to line up columns nicely(?).
The suggested "trivial" case for "mnemonic $00xx" would be not okay as it results in an inconsistent special case.
Personally what I tend to do is:
lda $abcd,x ; random address as it'll be overwritten anyway
lda @w 0,x ; traditionally
Further alternatives:
lda 0,b,x ; ask for address in data bank (not restricted to 65816)
selfmod = 0,b
lda selfmod,x ; same but self descriptive
.dpage ? ; direct page independent code
lda 0,x ; therefore this won't result in B5 00 |
| |
Krill
Registered: Apr 2002 Posts: 2850 |
Yes, i don't like any of those workarounds. :)
What about annotating the opcode, such as "lda.w $0000"?
And if that's ambiguous because it could imply reading a 16-bit value, not reading from a 16-bit address, something like "lda.m $0000"? |
| |
tlr
Registered: Sep 2003 Posts: 1717 |
Quote: Yes, i don't like any of those workarounds. :)
What about annotating the opcode, such as "lda.w $0000"?
And if that's ambiguous because it could imply reading a 16-bit value, not reading from a 16-bit address, something like "lda.m $0000"?
This is how it works in dasm, at least my fork. This is also how chose to handle it in my own assembler. .a/.w for forcing 16-bit and .z/.b for forcing 8-bit.
I thought you didn't like it being explicitly annotated? Maybe I assumed wrong? |
Previous - 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 - Next |