GeorgRottensteiner / C64Studio

C64Studio is a .NET based IDE specializing in game development for the C64 in assembler and BASIC
Other
260 stars 38 forks source link

Align value one off #83

Closed mokdevel closed 1 year ago

mokdevel commented 1 year ago

Not a bug but I find this confusing. If it's by design like this, please close the case.

I would expect that !align 8,0 would align code to next address 0 or 8 address. It actually does nothing. With !align 7,0 I get what I want. The same 'one off' behaviour is with other addresses: !align $f,0 -> an address divided by $10 !align $1f,0 -> an address divided by $20 ... !align $ff,0 -> an address divided by $100

GeorgRottensteiner commented 1 year ago

It's a Pseudo Opcode I've added to keep compatible with ACME. Yes, it is confusing, but I need to keep it to stay compatible.

The first value is a mask to AND with. It keeps filling with the fill value until the current address & the AND Mask return the second comparison value.

I think !realign is probably more like what you expected it to be:

!realign $2 ; wait for even address !realign 256 ; align code to page border

mokdevel commented 1 year ago

!realign does what I want. Thanks for the reply. The case can be closed.