I am working on a project called Gamma 65C to make up for the short-
comings of cc65 and include the following features:
* float suppport
* multiple memory banks and the usage of RAM behind ROM/IO
* usage of zp
* overlay support
* more and better optimizations
* improved __fastcall and register support and parameters passed in
memory
Gamma65C Worth It?
Moderator: Moderators
- Kweepa
- Vic 20 Scientist
- Posts: 1315
- Joined: Fri Jan 04, 2008 5:11 pm
- Location: Austin, Texas
- Occupation: Game maker
Sounds cool!
I haven't had a lot of problems so far with cc65, but your features sound good!
I suppose my feature list would be quite specific:
int24 and uint24 types
a compile time option to use the 8x8 multiply lookup tables to speed up integer multiplies (adds a 2k lookup, hence the option!)
various float precisions
char table[char index] should compile to: ldx index lda table, x
I noticed when using the linker: if I have a memory section defined like this:
UDG: start = $1400, size = $200, define = yes, file = %O;
RAM: start = $1600, size = $2000, define = yes, file = %O;
Unless I fill up all $200 bytes of UDG, the linker just concatenates RAM onto UDG, so the basic SYS stub points to the wrong address. Not a big deal once you know what to look for though.
I haven't had a lot of problems so far with cc65, but your features sound good!
I suppose my feature list would be quite specific:
int24 and uint24 types
a compile time option to use the 8x8 multiply lookup tables to speed up integer multiplies (adds a 2k lookup, hence the option!)
various float precisions
char table[char index] should compile to: ldx index lda table, x
I noticed when using the linker: if I have a memory section defined like this:
UDG: start = $1400, size = $200, define = yes, file = %O;
RAM: start = $1600, size = $2000, define = yes, file = %O;
Unless I fill up all $200 bytes of UDG, the linker just concatenates RAM onto UDG, so the basic SYS stub points to the wrong address. Not a big deal once you know what to look for though.
- Mike
- Herr VC
- Posts: 4849
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Re: Gamma65C Worth It?
Fine. That'd cure an noticeable (at least for me) inconvenience in cc65.Harry Potter wrote:* float support
I suppose that would be more targetted to C64.* multiple memory banks and the usage of RAM behind ROM/IO
Generally, this thread here and the other one you just opened should go into the 'Emulation & Cross-developing' section. Could one of the mods please move these two threads?
Greetings,
Michael
I just voted 'no', because I never use cc65 on the VIC-20, just ca65. An utterly subjective vote for sure
I may change my mind, if I get my hands on one of the 64K RAM expansions e.g. from Rossmülller/1985 that puts RAM bankable behind kernal ROM. It would enable interrupt routines without the ~50 cycles overhead used by the kernel ROM.
Or what did you mean by "multiple memory banks and the usage of RAM behind ROM/IO" on the VIC-20?
I may change my mind, if I get my hands on one of the 64K RAM expansions e.g. from Rossmülller/1985 that puts RAM bankable behind kernal ROM. It would enable interrupt routines without the ~50 cycles overhead used by the kernel ROM.
Or what did you mean by "multiple memory banks and the usage of RAM behind ROM/IO" on the VIC-20?
Buy the new Bug-Wizard, the first 100 bugs are free!
-
- Vic 20 Newbie
- Posts: 10
- Joined: Thu Dec 25, 2008 8:11 am
Gamma 65C is planned to have the following optimizations that might be useful for the Vic20:
* longs and floats can be disabled, making functiions such as printf() take less room
* options to minimize or bypass stack usage
* less overhead: By default, Gamma 65C won't pass parameters, switch to lower-case or handle IRQ. This should save a couple hundred bytes.
* equation: use short-cuts to speed up calculations
I don't remember the rest. What do you think now?
* longs and floats can be disabled, making functiions such as printf() take less room
* options to minimize or bypass stack usage
* less overhead: By default, Gamma 65C won't pass parameters, switch to lower-case or handle IRQ. This should save a couple hundred bytes.
* equation: use short-cuts to speed up calculations
I don't remember the rest. What do you think now?
- Mike
- Herr VC
- Posts: 4849
- Joined: Wed Dec 01, 2004 1:57 pm
- Location: Munich, Germany
- Occupation: electrical engineer
Whatever you have in mind along these lines, these things are not implemented as some small patches to cc65. Adding float support for example requires some serious rework in the code generator, and optimizations like 'options to minimize or bypass stack usage' or 'short-cuts to speed up calculations' must be well thought out so existing source code doesn't break.
If you already have a serious stock of implemented code, go ahead. Otherwise, if your project really is still in the planning phase, make yourselves clear you will put some hundreds of hours into it.Harry Potter wrote:What do you think now?