[gambit-list] Wii

Sean Charles sean at objitsu.com
Sat Apr 24 05:43:45 EDT 2010


Hi,

I've cross-compiled Gambit Scheme using devkitPPC for a Wii.
I have used the example Wii 'template' program as the basis for my
initial efforts.

My goal is to attempt to produce a Wii executable that has SLIME/EMACS
capability and also has all of the good libraries linked in with FFI
wrappers eg GRRLIB etc. This means that I should be able to run the
Gambit version from the Homebrew Browser and then connect and develop
remotely, ultimately using 'gsc' to produce the final stand-a-lone
executable once the hacking is over.

I've followed the efforts of James Long and managed to incorporate
Gambit into some of my iPhone applications (none for sale yet!) so I
know that it does cross-compile and does work, but for now, I am having
great difficulties in getting *anything* except register dumps when I
call  a function defined with (c-define).

I remember having similar issues on the iPhone but it was because on
James' site, he hadn't fully described what he-d done but a few PM-s got
that sorted just fine. Thanks James!

First of all, here is how I built the gsc/gsi tools with devkitPPC,

./configure --prefix=/usr/local/Gambit-C/wii --enable-single-host=yes
--host=powerpc-eabi

That produces for me /usr/local/Gambit-C/wii/lib/libgambc.a and
presumably it is PPC correct with respect to architecture.
I then wrote a small test file called scode.scm in the same folder as
the template.c program:

(c-define (wii_blast ) () void "wii_blast" "extern"
	  ;; stub
	  42)

and use gsc -link scode.scm to produce the scode.c and scode_.c files
which the Makefile picks up and uses.

In the template.c file I declare it as...

extern void wii_blast();

Every time I call it I get a register dump and I don't know why! I have
reduced the function to void/void so as to remove any possibilities of
stack corruption caused by incorrect push/pops due to a misinterpreted
function signature etc, I cut my teeth 25 years ago with assembler and
you never forget the basics! LOL.

I have included the full template,c at the end of this mail along with
the modified makefile incase anybody could tell me what is wrong. I am
assuming that the build of 'libgambc.a' is fine because my program does
call ___setup() and ___close() with no problems but they would appear to
be native C functions and I am assuming that the wii_blast() function is
maybe a byte-code thing happening or is it truly C code at this time?
That is my ignorance of the internals of GambitC showing now.

My next step is to try to produce a link map and a disassembly of the
wii_blast function and then code a function foo:

void foo(void)
{
}

and compare the pre-call and post-call operations to see what is going
on... in the  meantime, if anybody cares to point out what I may/am
doing wrong I would be most grateful as I really want to be able to
build an interactive Wii development toolkit based on scheme, that wraps
GRRLIB and libogc in the first instance.

My *real* problem started from that fact that I wanted to be able to use
the 'gsc -exe' route to build a complete Wii application in one pass
i.e. have a main SCM file that pulls in everything else and then the
--cc-options and --ld-options flags would do the rest.... the problem I
had is that I couldn't work out how to tell the native gsc to use the
target compilers in /opt/devkitpro/devkitPPC/bin !! Is it just setting
'CC' or GAMBC_CC_COMMAND etc etc?

Either way, so far I am pleased with my progress but I am a little stuck
right now! Marc Feely, if you are out there dude, got any tips? :)

Thanks,
Sean Charles.





-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20100424/33052333/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: face-smile.png
Type: image/png
Size: 873 bytes
Desc: not available
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20100424/33052333/attachment.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: Makefile
Type: text/x-makefile
Size: 5708 bytes
Desc: not available
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20100424/33052333/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: template.c
Type: text/x-csrc
Size: 3744 bytes
Desc: not available
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20100424/33052333/attachment.c>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: scode_.c
Type: text/x-csrc
Size: 439556 bytes
Desc: not available
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20100424/33052333/attachment-0001.c>


More information about the Gambit-list mailing list