using 2.12.9 (latest snapshot) the following doesnt give the expected result: #include <stdint.h> #define CINV (*(uint16_t *) 0x0314) void newirq(void); int main(void) { CINV = (uint8_t) newirq; } void newirq(void) { } the generated asm for main() is this: lda #<(_newirq) ldx #>(_newirq) sta $0314 stx $0314+1 rts which is wrong (the cast to 8 bit type is ignored, the highbyte should be 0). after changing the assignment to CINV = (uint8_t)0x1234; it will correctly result in ldx #$00 lda #$34 sta $0314 stx $0314+1 rts i havent further investigated if the problem is actually related to function pointers, or if it happens every time some kind of label/symbol is involved. anyway, it's a bug :=) (merry christmas to everyone too! :=)) -- http://www.hitmen-console.org http://magicdisk.untergrund.net http://www.pokefinder.org http://ftp.pokefinder.org last time I tried the c64-test on a date she fell asleep after just 4 hours of demos. That was when I knew she wasnt right for me. i mean.. falling asleep after just a few hours of c64 demos? We have a word for that stuff on the scene. L A M E. (: <Jucke/G*P> ---------------------------------------------------------------------- To unsubscribe from the list send mail to majordomo@musoftware.de with the string "unsubscribe cc65" in the body(!) of the mail.Received on Thu Dec 25 23:53:18 2008
This archive was generated by hypermail 2.1.8 : 2008-12-25 23:53:21 CET