From: Greg King (gngking_at_erols.com)
Date: 2002-07-25 20:33:24
-----Original Message-----
From: cbmnut_at_hushmail.com
Date: Tuesday, July 16, 2002 07:39 PM
>
> OMG, there's no working .align?? I need that to do some libraries,
> in the future. I will need page-alignment, to get some code working with
> large tables. And for speed, staying within a page-boundary is good.
>
> I.e.:
>
> readtable: lda sqrtable,y
> ...
> .align page
> sqrtable: .byte $00,$01,$02,$04, ...
".align" works well enough for what you want -- if you are willing to use
a custom linker-configure-script. Add a line to the script (between "DATA:" and
"BSS:") that looks like this:
TABLES: load = RAM, type = ro, align = $100;
Then, write your ca65 assembly-code, in this style:
readtable: lda sqrtable,y
...
...
...
.segment "TABLES"
.align $100
sqrtable: .byte 0,1,4,9, ...
...
...
...
.code
lda cubetable,y
...
...
...
.segment "TABLES"
.align $100
cubetable: .byte 0,1,8,27, ...
...
...
...
.rodata
...
My first example interweaves code and data, in the source-file; but, ca65 would
separate them, and join together the pieces of each segment. You can arrange
the pieces any way that you wish; what is important is how ".segment" and
".align" are used:
readtable: lda sqrtable,y
...
lda cubetable,y
...
.bss
...
.segment "TABLES"
.align $100
sqrtable: .byte 0,1,4,9, ...
...
.align $100
cubetable: .byte 0,1,8,27, ...
...
That stuff is documented in "ca65.html" (section 6.4)
and "ld65.html" (section 4.6).
----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo_at_musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.
This archive was generated by hypermail 2.1.3 : 2002-07-25 21:12:14 CEST