[cc65] Fwd: RR-Devel:ca65 in 21 days

Date view Thread view Subject view

From: Groepaz (groepaz_at_gmx.net)
Date: 2002-11-28 02:26:47


Am Mittwoch, 27. November 2002 16:14 schrieb Doc Bacardi:

i have forwarded this to the cc65 list (you guys should subscribe there too i 
guess :o)) .... cant answer this offhand, never used macros that way myself 
:=P (you gotta explain the enum thing mentioned at the end :=)))

mayb UZ can tell us....

> I need a macro with one parameter - lets say 'name' for now. It should:
>
> - assign '*' to the lable 'name'
>     ok, that's no problem
>
> - write Lo/Hi byte of * and the label __THIS_BANK__ to 3 seperate segments
>     works fine too
>
> - the 3 segments are used to generate 3 tables. I need the index of the
>   entry this macro generated in a label with a name similar to the
>   parameter, e.g. 'I_name'
>     Here starts the trouble! I tried to generate the new labelname with
>       .concat("B_",.string(name)) = 123
>     but ca65 didn't like it.
>     I'm also wondering why '.reloc' is needed to switch * after a
> '.segment' to the current adress there.
>
> - I switched the segment, but at the end of the macro the old value should
>   be restored. But how do I read the name of the current segment?
>     Should be like:
>       temp_var = .current_segment
>       ...switch segments around...
>       .segment temp_var  or maybe   .segment .string(temp_var)
>
> That's my pseudo macro so far:
> (AdrLoTable_start is the start adress of Segment LongJump_AdrLoTable)
>
> ;*** Macro 'BANK' Start ***
> ;Parameter: "Routine3"
> 	;.local Routine3_temp
> 	Routine3 = *
> 	.reloc
> 	.segment "LongJump_AdrLoTable"
> Routine3_temp:
> 	.byte <Routine3
> 	.segment "LongJump_AdrHiTable"
> 	.byte >Routine3
> 	.segment "LongJump_BankTable"
> 	.byte __THIS_BANK__
> 	.segment "RomCode0_l"
> 	.org Routine3
> 	I_Routine3 = Routine3_temp-AdrLoTable_start
> 	.global I_Routine3
> ;*** Macro 'BANK' End ***
>
>
> And another problem: I'm using label redefinition for a enum replacement or
> passing args between two macros ( e.g. End_Blah need a value defined in
> Start_Blah). How can I do this with ca65?
>
> Thanks a lot for your help!

----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo_at_musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.


Date view Thread view Subject view

This archive was generated by hypermail 2.1.3 : 2002-11-28 01:01:33 CET