nick@lfcs.ed.ac.uk (Nick Rothwell) (09/07/89)
I've just spent an evening trying to get a simple MIDI Manager
application (MIDISignIn, MIDISignOut) going in LightThink C. No luck.
I tried cross-calling some assembly bolted onto the MIDI.a macro file.
I tried in-line assembler in THINK C. I even tried jumping to an array
of integers containing the instructions and the trap. This was the
most successful; I at least got *out* of MIDISignIn, even though I
couldn't go anywhere afterwards. So, what's wrong with something like
this:
pascal OSErr MIDISignIn(clientID, refCon, icon, name)
OSType clientID;
long refCon;
Handle icon;
StringPtr name;
{
asm {
move.l #(((long)midiSignIn<<16) + midiToolNum), D0
dc.w 0xA800 /* sound manager trap. */
}
}
I have tried all sorts of combinations of literal opcodes and things.
I seem to half get into MIDISignIn, because the generic application
icon appears in the patchbay; next thing I know, I've skidded to a
halt in SetDItem with an odd address trap.
Somebody out there must have this stuff off the ground..? Please?
Nick.
--
Nick Rothwell, Laboratory for Foundations of Computer Science, Edinburgh.
nick@lfcs.ed.ac.uk <Atlantic Ocean>!mcvax!ukc!lfcs!nick
~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~ ~~
Fais que ton reve soit plus long que la nuit.cbm@well.UUCP (Chris Muir) (09/09/89)
In message <336@castle.ed.ac.uk>, nick@lfcs.ed.ac.uk (Nick Rothwell)
writes:
=So, what's wrong with something like
=this:
=
= pascal OSErr MIDISignIn(clientID, refCon, icon, name)
= OSType clientID;
= long refCon;
= Handle icon;
= StringPtr name;
= {
= asm {
= move.l #(((long)midiSignIn<<16) + midiToolNum), D0
= dc.w 0xA800 /* sound manager trap. */
= }
= }
I can barely read C but, what about the parameters to this trap? Does
C push them in the order the trap wants to see them? Is StringPtr ==
Str255? Why can't you use the routine in the .h file that came with
the MM?
pascal OSErr MIDISignIn(OSType clientID, long refCon, Handle icon, Str255 name)
= {0x203C,4,midiToolNum,0xA800};
Have you called SndDispVersion first? I believe SndDispVersion
does some important initialization.
--
_______________________________________________________________________________
Chris Muir | "There is no language in our lungs
{hplabs,pacbell,ucbvax,apple} | to tell the world just how we feel"
!well!cbm | - A. Partridge