TCTESampleGlue.c

/*
*   Apple Macintosh Developer Technical Support
*
*   MultiFinder-Aware TextEdit Sample Application
*
*   TESample
*
*   TCTESampleGlue.a    -   THINK C Assembler Source
*
*   Copyright © 1989 Apple Computer, Inc.
*   All rights reserved.
*
*   Versions:
*               1.00                08/88
*               1.01                11/88
*               1.02                04/89
*               1.03                06/89
*               1.04                06/92
*
*   Components:
*               TESample.p          June 1, 1989
*               TESample.c          June 1, 1989
*               TESampleInit.c      June 4, 1992
*               TESampleGlue.a      June 1, 1989
*               TESample.r          June 1, 1989
*               TESample.h          June 1, 1989
*               PTESample.make      June 1, 1989
*               CTESample.make      June 1, 1989
*               TCTESample.¹        June 4, 1992
*               TCTESample.¹.rsrc   June 4, 1992
*               TCTESampleGlue.c    June 4, 1992
*
*   TESample is an example application that demonstrates how 
*   to initialize the commonly used toolbox managers, operate 
*   successfully under MultiFinder, handle desk accessories and 
*   create, grow, and zoom windows. The fundamental TextEdit 
*   toolbox calls and TextEdit autoscroll are demonstrated. It 
*   also shows how to create and maintain scrollbar controls.
*
*   It does not by any means demonstrate all the techniques you 
*   need for a large application. In particular, Sample does not 
*   cover exception handling, multiple windows/documents, 
*   sophisticated memory management, printing, or undo. All of 
*   these are vital parts of a normal full-sized application.
*
*   This application is an example of the form of a Macintosh 
*   application; it is NOT a template. It is NOT intended to be 
*   used as a foundation for the next world-class, best-selling, 
*   600K application. A stick figure drawing of the human body may 
*   be a good example of the form for a painting, but that does not 
*   mean it should be used as the basis for the next Mona Lisa.
*
*   We recommend that you review this program or Sample before 
*   beginning a new application. Sample is a simple app. which doesnÕt 
*   use TextEdit or the Control Manager.
*
 
*
*   AsmClickLoop
*
*   This routine gets called by the TextEdit Manager from TEClick.
*   It calls the old, default click loop routine that scrolls the
*   text, and then calls our own Pascal routine that handles
*   tracking the scroll bars to follow along.  It doesn't bother
*   with saving registers A0 and D0, because they are trashed
*   anyway by TextEdit.
*/
 
#include "TESample.h"
 
void AsmClickLoop()
{
    asm {           
            MOVEM.L     D1-D2/A1,-(SP)      ; D0 and A0 need not be saved
            CLR.L       -(SP)               ; make space for procedure pointer
            JSR         GetOldClickLoop     ; get the old clickLoop
            MOVEA.L     (SP)+,A0            ; into A0
            MOVEM.L     (SP)+,D1-D2/A1      ; restore the world as it was
            
            JSR         (A0)                ; and execute old clickLoop
 
            MOVEM.L     D1-D2/A1,-(SP)      ; D0 and A0 need not be saved
            JSR         PascalClickLoop     ; do our clickLoop
            MOVEM.L     (SP)+,D1-D2/A1      ; restore the world as it was
            MOVEQ       #1,D0               ; clear the zero flag so TextEdit keeps going
            RTS
    }
}