[comp.sys.mac.programmer] MacApp and THINK Pascal 3.0

rick@jessica.Stanford.EDU (Rick Wong) (03/14/90)

Some of the features I've seen mentioned about the new version of THINK
Pascal make it sound extremely attractive for MacApp development.  I've
still, however, got a few questions:

    1.  Does it REALLY allow jump tables larger than 32K (4091 entries)?
        I've been kludging around this problem for well over a year, now
        -- it's nice to see SOMEONE finally addressing it.

    2.  Can I call routines written in other languages (i.e., C, Assembler)
        from THINK Pascal?  In particular, does THINK Pascal have a "C"
        directive so I can call functions that obey C calling conventions?
        I don't mind if the functions have to be previously compiled (by
        MPW) into .o files.

    3.  Can I call THINK Pascal methods from other languages?  In MPW
        Assembler, for instance, I can directly call a particular method
        belonging to a particular class by saying something like:

		jmp TObject_Free

        In MPW Assembler, I think it's also possible to say something like
        "jmp TObject$Free" to let the method dispatcher figure out which
        subclass should handle the call.

    4.  How is segmentation handled?  Does THINK Pascal handle segmentation
        directives in .o files?  How about $S directives in MPW Pascal
        source files?

    5.  Are MPW Pascal's other compiler directives supported?  I'm most
        concerned about the conditional compilation ($ifc, $elsec, $endc)
        and "handle warning" directives ($h-, $h+, $push, $pop).

    6.  Does 3.0 have better resource-handling tools than RMaker, or will
        I have to use MPW's Rez and Derez?

I'd greatly appreciate any further information about MacApp and THINK Pascal
3.0.

Thanks,

Rick Wong
rick@jessica.stanford.edu

siegel@endor.harvard.edu (Rich Siegel) (03/15/90)

In article <10137@portia.Stanford.EDU> rick@jessica.Stanford.EDU (Rick Wong) writes:
>Some of the features I've seen mentioned about the new version of THINK
>Pascal make it sound extremely attractive for MacApp development.  I've
>still, however, got a few questions:
>
>    1.  Does it REALLY allow jump tables larger than 32K (4091 entries)?
>        I've been kludging around this problem for well over a year, now
>        -- it's nice to see SOMEONE finally addressing it.

	Only when running under the environment. Typically, when smartlinking,
	the jump table gets pruned down to less than 32K.

>    2.  Can I call routines written in other languages (i.e., C, Assembler)
>        from THINK Pascal?  In particular, does THINK Pascal have a "C"
>        directive so I can call functions that obey C calling conventions?
>        I don't mind if the functions have to be previously compiled (by
>        MPW) into .o files.

	There's no C directive, so any external functions have to be written
	using the Pascal calling conventions.

>    3.  Can I call THINK Pascal methods from other languages?  In MPW
>        Assembler, for instance, I can directly call a particular method
>        belonging to a particular class by saying something like:
>
>		jmp TObject_Free
>
>        In MPW Assembler, I think it's also possible to say something like
>        "jmp TObject$Free" to let the method dispatcher figure out which
>        subclass should handle the call.
>

	Good question. Assuming that the linker names are correctly imported,
	I can't think of a reason why not...

>    4.  How is segmentation handled?  Does THINK Pascal handle segmentation
>        directives in .o files?  How about $S directives in MPW Pascal
>        source files?

	THINK Pascal honors segmentation in .O files, as well as the $S.
	"Virtual Segments" which are created by $S can be dragged into
	different physical segments - the graphical analog of the MPW
	linker's "-sn" directive.

>    5.  Are MPW Pascal's other compiler directives supported?  I'm most
>        concerned about the conditional compilation ($ifc, $elsec, $endc)
>        and "handle warning" directives ($h-, $h+, $push, $pop).

	Conditional compilation has been supported since 2.0. In 3.0, we
	support more directives: $Push, $Pop, $N++ (like MPW's $D++),
	and a few others. $H +/- is not supported.

>    6.  Does 3.0 have better resource-handling tools than RMaker, or will
>        I have to use MPW's Rez and Derez?

	THINK Pascal comes with standalone versions of Rez and DeRez which
	are licensed from Apple, as well as a standalone PostRez.

R.



~~~~~~~~~~~~~~~
 Rich Siegel
 Staff Software Developer
 Symantec Corporation, Language Products Group
 Internet: siegel@endor.harvard.edu
 UUCP: ..harvard!endor!siegel

"When someone who makes four hundred and fifty dollars an hour wants to
tell you something for free, it's a good idea to listen."

~~~~~~~~~~~~~~~

rick@jessica.Stanford.EDU (Rick Wong) (03/17/90)

My thanks to all who replied to my queries about TP 3.0.  Except for the
%@#@$*$&(!) jump table limitations (which MPW doesn't deal with either),
it sounds like TP might even be useful to an old MPW/MacApp f*rt like me.

I consider Object Pascal's jump table limitations a fundamental design flaw.
The real killer about it is that it doesn't rear its ugly, wartful head
until you've put several months of work into your application.  Maybe now
that a LOT more people are going to be using MacApp, Apple (or Symantec!)
will finally correct this problem.

Rick Wong
rick@jessica.stanford.edu