POVSRC-2.2.diffTEXTMPS ���ि�ि����Only in Tumbolia:Desktop Folder:POVSRC:SOURCE:: Components.h
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:Config.h Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:Config.h
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:Config.h	Fri Feb  4 18:16:10 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:Config.h	Fri Apr 22 11:28:24 1994
***************
*** 182,188 ****
  #endif // USE_LONG_DBL
  
! #if defined (applec)
  #define COMPILER_VER	".MACMPW"
! #endif // applec
  
  #if defined (THINK_C)
--- 182,188 ----
  #endif // USE_LONG_DBL
  
! #if defined (applec) && !defined (THINK_C)
  #define COMPILER_VER	".MACMPW"
! #endif // applec && !THINK_C
  
  #if defined (THINK_C)
***************
*** 194,197 ****
--- 194,201 ----
  #endif // gcc
  
+ #if defined (__MWERKS__)
+ #define COMPILER_VER	".MACCW"
+ #endif // CodeWarrior
+ 
  #if !defined(COMPILER_VER)
  #define COMPILER_VER	".MAC???"
***************
*** 229,232 ****
--- 233,237 ----
  
  
+ /*
  #if defined (THINK_C)
  #define TICKS				Ticks
***************
*** 243,252 ****
  #endif // applec
  
! #if defined (__powerc)
  #include <sysequ.h>		// for Ticks
  #define TICKS				(volatile *(long*)Ticks)
  #define QSORT_FUNCT_RET		int
  #define QSORT_FUNCT_PARAM	void *
! #endif // applec
  
  /* Mac-specific routines that must now be defined */
--- 248,270 ----
  #endif // applec
  
! #if defined (applec) && defined (__powerc)
  #include <sysequ.h>		// for Ticks
  #define TICKS				(volatile *(long*)Ticks)
  #define QSORT_FUNCT_RET		int
  #define QSORT_FUNCT_PARAM	void *
! #endif // applec && __powerc
! 
! #if defined (__MWERKS__)
! #define TICKS				Ticks
! #define QSORT_FUNCT_RET		int
! #define QSORT_FUNCT_PARAM	void *
! #endif // __MWERKS__
! */
! 
! // The above cruft gets replaced with:
! #include <LowMem.h>			// In case we forgot in any precompiled headers
! #define TICKS				LMGetTicks()
! #define QSORT_FUNCT_RET		int
! #define QSORT_FUNCT_PARAM	void *
  
  /* Mac-specific routines that must now be defined */
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:GIFDECOD.C Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:GIFDECOD.C
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:GIFDECOD.C	Fri Aug  6 13:58:04 1993
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:GIFDECOD.C	Fri Feb 18 23:07:35 1994
***************
*** 144,148 ****
  /* Static variables */
  LOCAL WORD curr_size;                     /* The current code size */
! LOCAL WORD clear;                         /* Value for a clear code */
  LOCAL WORD ending;                        /* Value for a ending code */
  LOCAL WORD newcodes;                      /* First available code */
--- 144,148 ----
  /* Static variables */
  LOCAL WORD curr_size;                     /* The current code size */
! LOCAL WORD clear_code;                    /* Value for a clear code */
  LOCAL WORD ending;                        /* Value for a ending code */
  LOCAL WORD newcodes;                      /* First available code */
***************
*** 179,184 ****
    curr_size = size + 1;
    top_slot = 1 << curr_size;
!   clear = 1 << size;
!   ending = clear + 1;
    slot = newcodes = ending + 1;
    navail_bytes = nbits_left = 0;
--- 179,184 ----
    curr_size = size + 1;
    top_slot = 1 << curr_size;
!   clear_code = 1 << size;
!   ending = clear_code + 1;
    slot = newcodes = ending + 1;
    navail_bytes = nbits_left = 0;
***************
*** 357,361 ****
      /* If the code is a clear code, reinitialize all necessary items.
         */
!     if (c == clear)
        {
        curr_size = size + 1;
--- 357,361 ----
      /* If the code is a clear code, reinitialize all necessary items.
         */
!     if (c == clear_code)
        {
        curr_size = size + 1;
***************
*** 366,370 ****
            * (Another unlikely, but possible case...)
            */
!       while ((c = get_next_code()) == clear)
          ;
  
--- 366,370 ----
            * (Another unlikely, but possible case...)
            */
!       while ((c = get_next_code()) == clear_code)
          ;
  
Only in Tumbolia:Desktop Folder:POVSRC:SOURCE:: ImageCodec.h
Only in Tumbolia:Desktop Folder:POVSRC:SOURCE:: ImageCompression.h
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:ImageWindow.c Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:ImageWindow.c
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:ImageWindow.c	Fri Feb  4 18:17:17 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:ImageWindow.c	Sat Apr 16 14:34:35 1994
***************
*** 52,55 ****
--- 52,56 ----
  	931001	[esp]	version 2.0 finished (Released on 10/4/93)
  	931119	[djh]	2.0.1 source conditionally compiles for PPC machines, keyword __powerc
+ 	940416	[PFS]	2.2.1 greatly reworked to clean up PPC support and provide CodeWarrior projects
  ==============================================================================*/
  
***************
*** 87,93 ****
  
  #if defined(__powerc)
! extern RoutineDescriptor gPutPICTRD;
  #endif
  
  /*==== globals (local) ====*/
  
--- 88,97 ----
  
  #if defined(__powerc)
! extern RoutineDescriptor MyPutPicProc;
  #endif
  
+ // Forward declaration of function
+ pascal void MyPutPicProcProc( char *dataPtr, short byteCount);
+ 
  /*==== globals (local) ====*/
  
***************
*** 1248,1252 ****
  // ==============================================
  // Write Picture bottleneck routine for paint_to_picture()
! pascal void MyPutPicProc( char *dataPtr, short byteCount)
  {
  	int myByteCount;
--- 1252,1256 ----
  // ==============================================
  // Write Picture bottleneck routine for paint_to_picture()
! CALLBACK(pascal void, uppQDPutPicProcInfo, MyPutPicProc)( char *dataPtr, short byteCount)
  {
  	int myByteCount;
***************
*** 1301,1309 ****
  		{
  			SetStdCProcs ((CQDProcsPtr) &myQDProcs);
! #if defined(__powerc)
! 			myQDProcs.putPicProc = (QDPutPicUPP)&gPutPICTRD;
! #else
! 			myQDProcs.putPicProc = (Ptr) MyPutPicProc;
! #endif // __powerc
  			myCGrafPtr.grafProcs = (CQDProcsPtr) &myQDProcs;
  			// write the PICT header to the file
--- 1305,1309 ----
  		{
  			SetStdCProcs ((CQDProcsPtr) &myQDProcs);
! 			myQDProcs.putPicProc = (QDPutPicUPP)&MyPutPicProc;
  			myCGrafPtr.grafProcs = (CQDProcsPtr) &myQDProcs;
  			// write the PICT header to the file
Only in Tumbolia:Desktop Folder:POVSRC:SOURCE:: MediaHandlers.h
Only in Tumbolia:Desktop Folder:POVSRC:SOURCE:: Movies.h
Only in Tumbolia:Desktop Folder:POVSRC:SOURCE:: MoviesFormat.h
Only in Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:: POV 68K.�
Only in Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:: POV 68K.�.rsrc
Only in Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:: POV MacHeaders.c
Only in Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:: POV MacHeaders.�
Only in Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:: POV PPC.�
Only in Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:: POV-Ray.Map
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:POV-Ray.make Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:POV-Ray.make
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:POV-Ray.make	Wed Feb  9 18:57:19 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:POV-Ray.make	Fri Apr 22 12:35:46 1994
***************
*** 283,287 ****
  CmpColorQD			=	-d NEEDS_COLORQD				# turn on to force Color Quickdraw ROM Support
  Cmp32BitQD			=	-d NEEDS_32BITQD				# turn on to force 32Bit Quickdraw ROM Support
! CmpFPUOptions		=	#-d NEEDS_FPU -mc68881 -elems881 # turn on to force 68881 FPU calls
  USE_NATIVE_MALLOC	=	#-d USE_NATIVE_MALLOC		# turn off to use C's malloc(), on for Mac's NewPtr()
  MALLOC_TRACE		=	#-d	# Add file/line info to mallocs for garbcoll info
--- 283,287 ----
  CmpColorQD			=	-d NEEDS_COLORQD				# turn on to force Color Quickdraw ROM Support
  Cmp32BitQD			=	-d NEEDS_32BITQD				# turn on to force 32Bit Quickdraw ROM Support
! CmpFPUOptions		=	-d NEEDS_FPU -mc68881 -elems881 # turn on to force 68881 FPU calls
  USE_NATIVE_MALLOC	=	#-d USE_NATIVE_MALLOC		# turn off to use C's malloc(), on for Mac's NewPtr()
  MALLOC_TRACE		=	#-d	# Add file/line info to mallocs for garbcoll info
***************
*** 301,311 ****
  
  # non-FPU libs
! LinkMathLibs			=	"{CLibraries}"CSANELib.o "{CLibraries}"Math.o
  # FPU libs
! #LinkMathLibs		=	"{CLibraries}"Clib881.o "{CLibraries}"CSANELib881.o "{CLibraries}"Math881.o
  
  MapOptions			=	-l -map > {AppName}.Map			# or use this for human-readable map
! SymOptions			=	#-sym full						# turn on to debug with SADE
! MbgOptions		=	-mbg on							# turn on to insert MacsBug labels
  CInc2Folders	=	#-i {incpath}
  RInc2Folders	=	#-i {rezpath}
--- 301,311 ----
  
  # non-FPU libs
! #LinkMathLibs			=	"{CLibraries}"CSANELib.o "{CLibraries}"Math.o
  # FPU libs
! LinkMathLibs		=	"{CLibraries}"Clib881.o "{CLibraries}"CSANELib881.o "{CLibraries}"Math881.o
  
  MapOptions			=	-l -map > {AppName}.Map			# or use this for human-readable map
! SymOptions			=	-sym full						# turn on to debug with SADE
! MbgOptions		=	#-mbg on							# turn on to insert MacsBug labels
  CInc2Folders	=	#-i {incpath}
  RInc2Folders	=	#-i {rezpath}
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:PopupMenu.c Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:PopupMenu.c
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:PopupMenu.c	Fri Feb  4 18:17:17 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:PopupMenu.c	Sat Apr 16 14:31:26 1994
***************
*** 51,54 ****
--- 51,55 ----
  	931001	[esp]	version 2.0 finished (Released on 10/4/93)
  	931119	[djh]	2.0.1 source conditionally compiles for PPC machines, keyword __powerc
+ 	940416	[PFS]	2.2.1 greatly reworked to clean up PPC support and provide CodeWarrior projects
  ==============================================================================*/
  
***************
*** 59,67 ****
  #include <memory.h>	// NewPtr
  
- #if defined (__powerc)
  #include "PovMac.h"	// for routine descriptor with global scope
- #endif // __powerc
  #include "PopupMenu.h"
  
  #if defined(applec)
  #include <Strings.h>		// p<->cstr
--- 60,69 ----
  #include <memory.h>	// NewPtr
  
  #include "PovMac.h"	// for routine descriptor with global scope
  #include "PopupMenu.h"
  
+ // Forward declaration
+ CALLBACK_PROTOTYPE(pascal void, DrawPopupMenu)(DialogPtr pDialogPtr, short pItem);
+ 
  #if defined(applec)
  #include <Strings.h>		// p<->cstr
***************
*** 117,121 ****
  //-----------------------------------------------------------
  // Draw the popup menu (called by Dialog Mgr for updates, and by our filterproc)
! pascal void DrawPopupMenu(DialogPtr pDialogPtr, short pItem)
  {
  #pragma unused (pDialogPtr,pItem)
--- 119,123 ----
  //-----------------------------------------------------------
  // Draw the popup menu (called by Dialog Mgr for updates, and by our filterproc)
! CALLBACK(pascal void, uppUserItemProcInfo, DrawPopupMenu)(DialogPtr pDialogPtr, short pItem)
  {
  #pragma unused (pDialogPtr,pItem)
***************
*** 258,268 ****
  
  		// set items rectangle & install handler routine (DrawPopupMenu)
- #if defined(__powerc)
- 		SetDItem((**newItemH).fParentDialog, (**newItemH).fPopupItemID,
- 				theItemType, (Handle)&gPopupMenuRD, &theItemRect);
- #else
  		SetDItem((**newItemH).fParentDialog, (**newItemH).fPopupItemID,
! 				theItemType, (Handle)DrawPopupMenu, &theItemRect);
! #endif // __powerc
  		// now figure out title bounds
  		// get the menu title
--- 260,265 ----
  
  		// set items rectangle & install handler routine (DrawPopupMenu)
  		SetDItem((**newItemH).fParentDialog, (**newItemH).fPopupItemID,
! 				theItemType, (Handle)&DrawPopupMenu, &theItemRect);
  		// now figure out title bounds
  		// get the menu title
***************
*** 397,401 ****
  					// Draw the newly selected item
  					EraseRect(&(**popupItemH).fPopupBounds);
! 					DrawPopupMenu(pDialogPtr, (**popupItemH).fPopupItemID);
  					
  					myFilter = true; // dialog is over
--- 394,398 ----
  					// Draw the newly selected item
  					EraseRect(&(**popupItemH).fPopupBounds);
! 					CALL_CALLBACK(DrawPopupMenu)(pDialogPtr, (**popupItemH).fPopupItemID);
  					
  					myFilter = true; // dialog is over
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:Pov.c Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:Pov.c
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:Pov.c	Wed Feb  9 19:07:11 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:Pov.c	Sat Apr 23 19:30:02 1994
***************
*** 96,99 ****
--- 96,100 ----
  	931119	[djh]	2.0.1 source conditionally compiles for PPC machines, keyword __powerc
  	940204	[esp]	2.2 prepare for release - bound slabs default OFF
+ 	940416	[PFS]	2.2.1 greatly reworked to clean up PPC support and provide CodeWarrior projects
  ==============================================================================*/
  
***************
*** 131,134 ****
--- 132,136 ----
  #include <sound.h>
  #include <AppleEvents.h>
+ #include <AERegistry.h>
  #include <DiskInit.h>
  #include <GestaltEqu.h>
***************
*** 143,147 ****
  #endif // _H_MacHeaders_
  
! #if !defined (THINK_C)
  #include <strings.h>		/* p2cstr */
  #endif // THINK_C
--- 145,149 ----
  #endif // _H_MacHeaders_
  
! #if !defined (THINK_C) && !defined(__MWERKS__)
  #include <strings.h>		/* p2cstr */
  #endif // THINK_C
***************
*** 201,219 ****
  #if defined(__powerc)
  // PowerPC needs its own QuickDraw global rec
  QDGlobals qd;
  
- // forward declarations for routine descriptors
- extern pascal void DrawPopupMenu(WindowPtr dlgWindPtr, short dinum);
- pascal void dim_dlg_edit_text(WindowPtr dlgWindPtr, short dinum);
- pascal void showProgress_UProc(WindowPtr dlgWindPtr, short dinum);
- pascal OSErr HandleAEOapp(AEDescList *aevt, AEDescList *reply, long refCon);
- pascal OSErr HandleAEOdoc(AEDescList *aevt, AEDescList *reply, long refCon);
- pascal OSErr HandleAEQuit(AEDescList *aevt, AEDescList *reply, long refCon);
- pascal void MyPutPicProc( char *dataPtr, short byteCount);
- pascal void p2wi_VScrollActionProc(ControlHandle control, short part);
- pascal void p2wi_HScrollActionProc(ControlHandle control, short part);
- pascal void ScrollProc(ControlHandle theControl, short theCode);
  #endif // __powerc
  
  
  /*==== Global variables (external scope) ====*/
--- 203,226 ----
  #if defined(__powerc)
  // PowerPC needs its own QuickDraw global rec
+ 
+ // Metrowerks provides one for us, so...
+ #ifndef __MWERKS__
  QDGlobals qd;
+ #endif
  
  #endif // __powerc
  
+ // forward declarations for routine descriptors
+ // CALLBACK_PROTOTYPE(extern pascal void, DrawPopupMenu)(WindowPtr dlgWindPtr, short dinum);
+ // CALLBACK_PROTOTYPE(pascal void, dim_dlg_edit_text)(WindowPtr dlgWindPtr, short dinum);
+ // CALLBACK_PROTOTYPE(pascal void, showProgress_UProc)(WindowPtr dlgWindPtr, short dinum);
+ CALLBACK_PROTOTYPE(pascal OSErr, HandleAEOapp)(AEDescList *aevt, AEDescList *reply, long refCon);
+ CALLBACK_PROTOTYPE(pascal OSErr, HandleAEOdoc)(AEDescList *aevt, AEDescList *reply, long refCon);
+ CALLBACK_PROTOTYPE(pascal OSErr, HandleAEQuit)(AEDescList *aevt, AEDescList *reply, long refCon);
+ // CALLBACK_PROTOTYPE(pascal void, MyPutPicProc)( char *dataPtr, short byteCount);
+ // CALLBACK_PROTOTYPE(pascal void, p2wi_VScrollActionProc)(ControlHandle control, short part);
+ // CALLBACK_PROTOTYPE(pascal void, p2wi_HScrollActionProc)(ControlHandle control, short part);
+ CALLBACK_PROTOTYPE(pascal void, ScrollProc)(ControlHandle theControl, short theCode);
+ 
  
  /*==== Global variables (external scope) ====*/
***************
*** 321,324 ****
--- 328,332 ----
  };
  
+ /*
  #if defined(__powerc)
  // routine descriptor globals
***************
*** 328,334 ****
  RoutineDescriptor gDimDlogTextRD = BUILD_ROUTINE_DESCRIPTOR(uppUserItemProcInfo, dim_dlg_edit_text);
  RoutineDescriptor gShowProgressRD = BUILD_ROUTINE_DESCRIPTOR(uppUserItemProcInfo, showProgress_UProc);
! RoutineDescriptor gAEOAppRD = BUILD_ROUTINE_DESCRIPTOR(uppEventHandlerProcInfo, HandleAEOapp);
! RoutineDescriptor gAEODocRD = BUILD_ROUTINE_DESCRIPTOR(uppEventHandlerProcInfo, HandleAEOdoc);
! RoutineDescriptor gAEQuitRD = BUILD_ROUTINE_DESCRIPTOR(uppEventHandlerProcInfo, HandleAEQuit);
  RoutineDescriptor gVScrollRD = BUILD_ROUTINE_DESCRIPTOR(uppControlActionProcInfo, p2wi_VScrollActionProc);
  RoutineDescriptor gHScrollRD = BUILD_ROUTINE_DESCRIPTOR(uppControlActionProcInfo, p2wi_HScrollActionProc);
--- 336,342 ----
  RoutineDescriptor gDimDlogTextRD = BUILD_ROUTINE_DESCRIPTOR(uppUserItemProcInfo, dim_dlg_edit_text);
  RoutineDescriptor gShowProgressRD = BUILD_ROUTINE_DESCRIPTOR(uppUserItemProcInfo, showProgress_UProc);
! RoutineDescriptor gAEOAppRD = BUILD_ROUTINE_DESCRIPTOR(uppAEEventHandlerProcInfo, HandleAEOapp);
! RoutineDescriptor gAEODocRD = BUILD_ROUTINE_DESCRIPTOR(uppAEEventHandlerProcInfo, HandleAEOdoc);
! RoutineDescriptor gAEQuitRD = BUILD_ROUTINE_DESCRIPTOR(uppAEEventHandlerProcInfo, HandleAEQuit);
  RoutineDescriptor gVScrollRD = BUILD_ROUTINE_DESCRIPTOR(uppControlActionProcInfo, p2wi_VScrollActionProc);
  RoutineDescriptor gHScrollRD = BUILD_ROUTINE_DESCRIPTOR(uppControlActionProcInfo, p2wi_HScrollActionProc);
***************
*** 336,339 ****
--- 344,348 ----
  RoutineDescriptor gPutPICTRD = BUILD_ROUTINE_DESCRIPTOR(uppQDPutPicProcInfo, MyPutPicProc);
  #endif // __powerc
+ */
  
  
***************
*** 369,373 ****
  // ---------------------------------------------------------------------
  // This is a user item proc for drawing default dialog button outlines
! pascal void outlineDefaultButton(DialogPtr theDialog, short theItem)
  {
  #pragma unused (theItem)
--- 378,382 ----
  // ---------------------------------------------------------------------
  // This is a user item proc for drawing default dialog button outlines
! CALLBACK(pascal void, uppUserItemProcInfo, outlineDefaultButton)(DialogPtr theDialog, short theItem)
  {
  #pragma unused (theItem)
***************
*** 401,409 ****
  	/* Set up User item (always #3) to display a border around OK button (#1) */
  	GetDItem(theDialog, kDefaultItem, &itemtype, &tempHandle, &itemrect);
- #if defined(__powerc)
- 	SetDItem(theDialog, kDefaultItem, itemtype, (Handle)&gOutlineButtonRD, &itemrect);
- #else
  	SetDItem(theDialog, kDefaultItem, itemtype, (Handle)&outlineDefaultButton, &itemrect);
- #endif // __powerc
  } // SetupDefaultButton
  
--- 410,414 ----
***************
*** 425,429 ****
  // ModalFilterProc - handles mapping the Return/Enter/Esc keys, and the
  // special case of accepting Return if in certain EditText dialog fields
! pascal Boolean ModalFilter(DialogPtr theDialog, EventRecord *theDialogEvent, short *theDialogItem)
  {
      WindowPtr	tempGP;
--- 430,434 ----
  // ModalFilterProc - handles mapping the Return/Enter/Esc keys, and the
  // special case of accepting Return if in certain EditText dialog fields
! CALLBACK(pascal Boolean, uppModalFilterProcInfo, ModalFilter)(DialogPtr theDialog, EventRecord *theDialogEvent, short *theDialogItem)
  {
      WindowPtr	tempGP;
***************
*** 527,535 ****
  		ShowWindow(myDialog);
  		// prompt the user
! #if defined(__powerc)
! 		ModalDialog((ModalFilterUPP)&gModalFilterRD, &itemHit);
! #else
! 		ModalDialog(ModalFilter, &itemHit);
! #endif // __powerc
  		// all done with it
  		DisposeDialog(myDialog);
--- 532,536 ----
  		ShowWindow(myDialog);
  		// prompt the user
! 		ModalDialog((ModalFilterUPP)&ModalFilter, &itemHit);
  		// all done with it
  		DisposeDialog(myDialog);
***************
*** 1050,1058 ****
  	do
  	{
! #if defined(__powerc)
! 		ModalDialog((ModalFilterUPP)&gModalFilterRD, &itemHit);
! #else
! 		ModalDialog((ModalFilterProcPtr)ModalFilter, &itemHit);
! #endif // __powerc
  	}
  	while (itemHit != ok && itemHit != cancel);
--- 1051,1055 ----
  	do
  	{
! 		ModalDialog((ModalFilterUPP)&ModalFilter, &itemHit);
  	}
  	while (itemHit != ok && itemHit != cancel);
***************
*** 1941,1949 ****
  		SetCtlValue(cntl[kRB_UseDefaultFilePrefs],	!gUseAppDefaultPrefs);
  
! #if defined(__powerc)
! 		ModalDialog((ModalFilterUPP)&gModalFilterRD, &itemHit);
! #else
! 		ModalDialog((ModalFilterProcPtr)ModalFilter, &itemHit);
! #endif // __powerc
  		switch (itemHit)
  		{
--- 1938,1942 ----
  		SetCtlValue(cntl[kRB_UseDefaultFilePrefs],	!gUseAppDefaultPrefs);
  
! 		ModalDialog((ModalFilterUPP)&ModalFilter, &itemHit);
  		switch (itemHit)
  		{
***************
*** 2323,2331 ****
  	do
  	{
! #if defined(__powerc)
! 		ModalDialog((ModalFilterUPP)&gModalFilterRD, &itemHit);
! #else
! 		ModalDialog((ModalFilterProcPtr)ModalFilter, &itemHit);
! #endif
  		switch (itemHit)
  		{
--- 2316,2320 ----
  	do
  	{
! 		ModalDialog((ModalFilterUPP)&ModalFilter, &itemHit);
  		switch (itemHit)
  		{
***************
*** 4322,4326 ****
  				case 0x74:				/* PAGE UP */
  					undo_key_copied = 0;
! 					ScrollProc(gSrcWind_VScroll, inPageUp);
  					AdjustText();
  					break;
--- 4311,4315 ----
  				case 0x74:				/* PAGE UP */
  					undo_key_copied = 0;
! 					CALL_CALLBACK(ScrollProc)(gSrcWind_VScroll, inPageUp);
  					AdjustText();
  					break;
***************
*** 4328,4332 ****
  				case 0x79:				/* PAGE DOWN */
  					undo_key_copied = 0;
! 					ScrollProc(gSrcWind_VScroll, inPageDown);
  					AdjustText();
  					break;
--- 4317,4321 ----
  				case 0x79:				/* PAGE DOWN */
  					undo_key_copied = 0;
! 					CALL_CALLBACK(ScrollProc)(gSrcWind_VScroll, inPageDown);
  					AdjustText();
  					break;
***************
*** 4610,4621 ****
  	// Standard File wants the dirID and the negated vRefnum..
  	// so give it to 'em that way
- #if defined(__powerc)
- 	/* do it the new PowerPC way */
  	LMSetCurDirStore(pTheFSFilePtr->parID);
  	LMSetSFSaveDisk(-(pTheFSFilePtr->vRefNum));
- #else
- 	CURDIRSTORE_LOC		= pTheFSFilePtr->parID;
- 	SFSAVEDISK_LOC		= -(pTheFSFilePtr->vRefNum);
- #endif // __powerc
  
  } // SetSFCurrent
--- 4599,4604 ----
***************
*** 4648,4652 ****
  // ---------------------------------------------------------------------
  // AE Handler - Oapp - If app run with no documents
! static pascal OSErr HandleAEOapp(AEDescList *aevt, AEDescList *reply, long refCon)
  {
  #pragma unused (reply,refCon)
--- 4631,4635 ----
  // ---------------------------------------------------------------------
  // AE Handler - Oapp - If app run with no documents
! CALLBACK(static pascal OSErr, uppAEEventHandlerProcInfo, HandleAEOapp)(AEDescList *aevt, AEDescList *reply, long refCon)
  {
  #pragma unused (reply,refCon)
***************
*** 4668,4672 ****
  // AE Handler - Odoc - If app run with some documents, or if docs are
  // dropped onto app after it is running
! static pascal OSErr HandleAEOdoc(AEDescList *aevt, AEDescList *reply, long refCon)
  {
  #pragma unused (reply,refCon)
--- 4651,4655 ----
  // AE Handler - Odoc - If app run with some documents, or if docs are
  // dropped onto app after it is running
! CALLBACK(static pascal OSErr, uppAEEventHandlerProcInfo, HandleAEOdoc)(AEDescList *aevt, AEDescList *reply, long refCon)
  {
  #pragma unused (reply,refCon)
***************
*** 4791,4795 ****
  // ---------------------------------------------------------------------
  // AE Handler - Quit - Ask app to quit cleanly
! static pascal OSErr HandleAEQuit(AEDescList *aevt, AEDescList *reply, long refCon)
  {
  #pragma unused (reply,refCon)
--- 4774,4778 ----
  // ---------------------------------------------------------------------
  // AE Handler - Quit - Ask app to quit cleanly
! CALLBACK(static pascal OSErr, uppAEEventHandlerProcInfo, HandleAEQuit)(AEDescList *aevt, AEDescList *reply, long refCon)
  {
  #pragma unused (reply,refCon)
***************
*** 4811,4836 ****
  static void InstallAppleEvents(void)
  {
- 
- #if defined(__powerc)
  	(void)AEInstallEventHandler(kCoreEventClass, kAEOpenApplication, 
! 						(EventHandlerUPP)&gAEOAppRD, 0, false);
  	(void)AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments,   
! 						(EventHandlerUPP)&gAEODocRD, 0, false);
  	/* handle "Print" as Open */
  	(void)AEInstallEventHandler(kCoreEventClass, kAEPrintDocuments,  
! 						(EventHandlerUPP)&gAEODocRD, 0, false);
  	(void)AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, 
! 						(EventHandlerUPP)&gAEQuitRD, 0, false);
! #else
! 	(void)AEInstallEventHandler(kCoreEventClass, kAEOpenApplication, 
! 						(EventHandlerProcPtr)HandleAEOapp, 0, false);
! 	(void)AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments,   
! 						(EventHandlerProcPtr)HandleAEOdoc, 0, false);
! 	/* handle "Print" as Open */
! 	(void)AEInstallEventHandler(kCoreEventClass, kAEPrintDocuments,  
! 						(EventHandlerProcPtr)HandleAEOdoc, 0, false);
! 	(void)AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, 
! 						(EventHandlerProcPtr)HandleAEQuit, 0, false);
! #endif //__powerc
  } // InstallAppleEvents
  
--- 4794,4806 ----
  static void InstallAppleEvents(void)
  {
  	(void)AEInstallEventHandler(kCoreEventClass, kAEOpenApplication, 
! 						(AEEventHandlerUPP)&HandleAEOapp, 0, false);
  	(void)AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments,   
! 						(AEEventHandlerUPP)&HandleAEOdoc, 0, false);
  	/* handle "Print" as Open */
  	(void)AEInstallEventHandler(kCoreEventClass, kAEPrintDocuments,  
! 						(AEEventHandlerUPP)&HandleAEOdoc, 0, false);
  	(void)AEInstallEventHandler(kCoreEventClass, kAEQuitApplication, 
! 						(AEEventHandlerUPP)&HandleAEQuit, 0, false);
  } // InstallAppleEvents
  
***************
*** 4937,4941 ****
  	if (Gestalt(gestaltFPUType, &gestaltResponse) == noErr)
  	{
! #if defined (NEEDS_FPU)
  		// If this was compiled to REQUIRE FPU, get error if no FPU installed
  		if ((gestaltResponse == gestaltNoFPU) && (errStr == NULL))
--- 4907,4911 ----
  	if (Gestalt(gestaltFPUType, &gestaltResponse) == noErr)
  	{
! #if defined (NEEDS_FPU) && !defined (__powerc)
  		// If this was compiled to REQUIRE FPU, get error if no FPU installed
  		if ((gestaltResponse == gestaltNoFPU) && (errStr == NULL))
***************
*** 4945,4949 ****
  		if (gestaltResponse != gestaltNoFPU)
  			displayDialog(kdlog_UseFPUVersion, NULL, 0, ewcDoCentering, eMainDevice);
! #endif // NEEDS_FPU
  	}
  
--- 4915,4919 ----
  		if (gestaltResponse != gestaltNoFPU)
  			displayDialog(kdlog_UseFPUVersion, NULL, 0, ewcDoCentering, eMainDevice);
! #endif // NEEDS_FPU && !__powerc
  	}
  
***************
*** 5113,5117 ****
--- 5083,5091 ----
  	InitMenus();
  	TEInit();
+ #ifdef THINK_C
+ 	InitDialogs((long)NULL);
+ #else
  	InitDialogs(NULL);
+ #endif
  	InitCursor();
  	SetupCursors();
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:PovMac.h Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:PovMac.h
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:PovMac.h	Wed Feb  9 17:21:51 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:PovMac.h	Thu Mar 31 01:33:54 1994
***************
*** 344,348 ****
  extern struct Token_Struct	Token;					// tokenize.c
  
! extern void alt_main(short argc, char **argv);
  
  
--- 344,348 ----
  extern struct Token_Struct	Token;					// tokenize.c
  
! extern void alt_main(int argc, char **argv);
  
  
***************
*** 376,399 ****
  #if defined(__powerc)
  extern QDGlobals qd;
- extern RoutineDescriptor gModalFilterRD;
- extern RoutineDescriptor gOutlineButtonRD;
- extern RoutineDescriptor gPopupMenuRD;
- extern RoutineDescriptor gDimDlogTextRD;
- extern RoutineDescriptor gShowProgressRD;
- extern RoutineDescriptor gAEOAppRD;
- extern RoutineDescriptor gAEODocRD;
- extern RoutineDescriptor gAEQuitRD;
- extern RoutineDescriptor gPutPICTRD;
- extern RoutineDescriptor gVScrollRD;
- extern RoutineDescriptor gHScrollRD;
  #endif // __powerc
  
  
  /*==== pov.c Prototypes ====*/
  
! pascal void	outlineDefaultButton(DialogPtr theDialog, short theItem);
  void	SetupDefaultButton(DialogPtr theDialog);
  ControlHandle	GrabDItemHandle(DialogPtr theDialog, short theGetItem);
! pascal	Boolean	ModalFilter(DialogPtr theDialog, EventRecord *theDialogEvent, short *theDialogItem);
  short	displayDialog(short dlogID, char *s, short err, WindCentering_t doCentering, WindPositioning_t whereToShow);
  void	GetBestDialogPos(Point *wherep);
--- 376,438 ----
  #if defined(__powerc)
  extern QDGlobals qd;
  #endif // __powerc
  
+ /*
+ extern RoutineDescriptor ModalFilter;
+ extern RoutineDescriptor OutlineButton;
+ extern RoutineDescriptor DrawPopupMenu;
+ // extern RoutineDescriptor DimDlogText;
+ extern RoutineDescriptor showProgress_UProc;
+ extern RoutineDescriptor HandleAEOapp;
+ extern RoutineDescriptor HandleAEOdoc;
+ extern RoutineDescriptor HandleAEQuit;
+ extern RoutineDescriptor MyPutPicProc;
+ extern RoutineDescriptor p2wi_VScrollActionProc;
+ extern RoutineDescriptor p2wi_HScrollActionProc;
+ */
+ 
+ 
+ /* Here�s a handy macro for declaring functions that will be passed as ProcPtrs.
+    If you're using routine descriptors, it expands to declare both the descriptor
+    and the function, naming the function using token-pasting (##).  Otherwise
+    it just declares the function.
+ */
+ 
+ #if defined(__powerc)
+ #define CALLBACK(retType, procinfo, name) \
+ 	RoutineDescriptor	name = BUILD_ROUTINE_DESCRIPTOR(procinfo, name##Proc); \
+ 	retType name##Proc
+ #else
+ #define CALLBACK(retType, procinfo, name) \
+ 	retType name
+ #endif
+ 
+ 
+ /* Here are some other macros to support callback-like things.
+ */
+ 
+ #if defined(__powerc)
+ #define CALLBACK_PROTOTYPE(retType, name) \
+ 	extern RoutineDescriptor name; \
+ 	retType name##Proc
+ #else
+ #define CALLBACK_PROTOTYPE(retType, name) \
+ 	retType name
+ #endif
+ 
+ #if defined(__powerc)
+ #define CALL_CALLBACK(name) \
+ 	name##Proc
+ #else
+ #define CALL_CALLBACK(name) \
+ 	name
+ #endif
  
  /*==== pov.c Prototypes ====*/
  
! pascal void	outlineDefaultButtonProc(DialogPtr theDialog, short theItem);
  void	SetupDefaultButton(DialogPtr theDialog);
  ControlHandle	GrabDItemHandle(DialogPtr theDialog, short theGetItem);
! CALLBACK_PROTOTYPE(pascal Boolean, ModalFilter)(DialogPtr theDialog, EventRecord *theDialogEvent, short *theDialogItem);
  short	displayDialog(short dlogID, char *s, short err, WindCentering_t doCentering, WindPositioning_t whereToShow);
  void	GetBestDialogPos(Point *wherep);
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:Printf2Window.c Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:Printf2Window.c
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:Printf2Window.c	Fri Feb  4 18:17:17 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:Printf2Window.c	Sat Apr 16 14:31:41 1994
***************
*** 80,83 ****
--- 80,84 ----
  	931001	[esp]	version 2.0 finished (Released on 10/4/93)
  	931119	[djh]	2.0.1 conditionally compiles for PPC machines, keyword __powerc
+ 	940416	[PFS]	2.2.1 greatly reworked to clean up PPC support and provide CodeWarrior projects
  ==============================================================================
  */
***************
*** 102,105 ****
--- 103,107 ----
  #endif // THINK_C
  
+ #include "PovMac.h"			// For CALLBACK macros
  #include "screenUtils.h"	/* GetMaxGrowRect */
  #include "printf2window.h"	/* our defs AND stdio.h for sprintf, etc. */
***************
*** 107,114 ****
  #if defined(__powerc)
  extern QDGlobals qd;
- extern RoutineDescriptor gVScrollRD;
- extern RoutineDescriptor gHScrollRD;
  #endif
  
  // ==== Constant definitions
  
--- 109,117 ----
  #if defined(__powerc)
  extern QDGlobals qd;
  #endif
  
+ CALLBACK_PROTOTYPE(pascal void, p2wi_VScrollActionProc)(ControlHandle control, short part);
+ CALLBACK_PROTOTYPE(pascal void, p2wi_HScrollActionProc)(ControlHandle control, short part);
+ 
  // ==== Constant definitions
  
***************
*** 223,228 ****
  static void p2wi_GetLocalUpdateRegion(const p2w_WindowPtr_t thep2wWindow, RgnHandle localRgn);
  static void p2wi_CommonScrollAction(ControlHandle control, short *amount);
! pascal void p2wi_VScrollActionProc(ControlHandle control, short part);
! pascal void p2wi_HScrollActionProc(ControlHandle control, short part);
  static int p2wi_StdCOut_BottleNeck(FILE *stream);
  static int p2wi_vfprintf(FILE *stream, const char *format, va_list va_args);
--- 226,231 ----
  static void p2wi_GetLocalUpdateRegion(const p2w_WindowPtr_t thep2wWindow, RgnHandle localRgn);
  static void p2wi_CommonScrollAction(ControlHandle control, short *amount);
! // pascal void p2wi_VScrollActionProc(ControlHandle control, short part);
! // pascal void p2wi_HScrollActionProc(ControlHandle control, short part);
  static int p2wi_StdCOut_BottleNeck(FILE *stream);
  static int p2wi_vfprintf(FILE *stream, const char *format, va_list va_args);
***************
*** 268,272 ****
  
  	// allocate an output character stream buffer to use
! 	p2w_Stdio_OutBuf_Hdl = NewHandle(kMaxStdIOBuffSize);
  	anError = MemError();
  	local_p2wWindow = NULL;
--- 271,275 ----
  
  	// allocate an output character stream buffer to use
! 	p2w_Stdio_OutBuf_Hdl = NewHandle(kMaxStdIOBuffSize + sizeof(short));
  	anError = MemError();
  	local_p2wWindow = NULL;
***************
*** 603,610 ****
  ******************************************************************************
  */
! OSErr p2w_AddCString(p2w_WindowPtr_t the_p2wPtr, const char * theCStrPtr)
  {
  	OSErr	anError = noErr;
- 	long	theStrLen;
  
  	if (the_p2wPtr && theCStrPtr)		// if window and string ptrs are valid
--- 606,612 ----
  ******************************************************************************
  */
! OSErr p2w_AddCString(p2w_WindowPtr_t the_p2wPtr, const char * theCStrPtr, short size)
  {
  	OSErr	anError = noErr;
  
  	if (the_p2wPtr && theCStrPtr)		// if window and string ptrs are valid
***************
*** 615,629 ****
  			if (the_p2wPtr->p2wTEHandle)
  			{	// TE Record is valid
! 				theStrLen = strlen(theCStrPtr);
! 				if (theStrLen > 0)	// if string is not empty, add it
  				{
  					// If TE is too full, need to delete some at beginning before adding
  					// (this looks weird, but it is the Mathematically Correct way to
  					// compare numbers close to the edge of 32767-land.. note that
! 					// teLength+theStrLen could overflow, so we subtract instead.)
! 					if ((**(the_p2wPtr->p2wTEHandle)).teLength > (kMaxTELength - theStrLen))
  					{
  						// Delete some text at beginning of TE
! 						TESetSelect(0, theStrLen+kTEDeleteChunkSize, the_p2wPtr->p2wTEHandle);
  						TEDelete(the_p2wPtr->p2wTEHandle);
  					}
--- 617,630 ----
  			if (the_p2wPtr->p2wTEHandle)
  			{	// TE Record is valid
! 				if (size > 0)	// if string is not empty, add it
  				{
  					// If TE is too full, need to delete some at beginning before adding
  					// (this looks weird, but it is the Mathematically Correct way to
  					// compare numbers close to the edge of 32767-land.. note that
! 					// teLength+size could overflow, so we subtract instead.)
! 					if ((**(the_p2wPtr->p2wTEHandle)).teLength > (kMaxTELength - size))
  					{
  						// Delete some text at beginning of TE
! 						TESetSelect(0, size+kTEDeleteChunkSize, the_p2wPtr->p2wTEHandle);
  						TEDelete(the_p2wPtr->p2wTEHandle);
  					}
***************
*** 631,638 ****
  					TESetSelect(-1, -1, the_p2wPtr->p2wTEHandle);
  					// stick it in there
! 					TEInsert(theCStrPtr, theStrLen, the_p2wPtr->p2wTEHandle);
  					// re-draw the scrollbars, since they may have changed
  					p2wi_AdjustScrollbars(the_p2wPtr, false);
! 				}	// theStrLen > 0
  			}	// TE Record is valid
  	return(anError);
--- 632,639 ----
  					TESetSelect(-1, -1, the_p2wPtr->p2wTEHandle);
  					// stick it in there
! 					TEInsert(theCStrPtr, size, the_p2wPtr->p2wTEHandle);
  					// re-draw the scrollbars, since they may have changed
  					p2wi_AdjustScrollbars(the_p2wPtr, false);
! 				}	// size > 0
  			}	// TE Record is valid
  	return(anError);
***************
*** 981,998 ****
  					if (control == thep2wWindow->p2wVScroller)
  					{
! #if defined(__powerc)
! 						value = TrackControl(control, mouse, (ControlActionUPP) &gVScrollRD);
! #else
! 						value = TrackControl(control, mouse, (ProcPtr) p2wi_VScrollActionProc);
! #endif
  					}
  					else
  					if (control == thep2wWindow->p2wHScroller)
  					{
! #if defined(__powerc)
! 						value = TrackControl(control, mouse, (ControlActionUPP) &gHScrollRD);
! #else
! 						value = TrackControl(control, mouse, (ProcPtr) p2wi_HScrollActionProc);
! #endif
  					}
  					break;
--- 982,991 ----
  					if (control == thep2wWindow->p2wVScroller)
  					{
! 						value = TrackControl(control, mouse, (ControlActionUPP)&p2wi_VScrollActionProc);
  					}
  					else
  					if (control == thep2wWindow->p2wHScroller)
  					{
! 						value = TrackControl(control, mouse, (ControlActionUPP)&p2wi_HScrollActionProc);
  					}
  					break;
***************
*** 1424,1428 ****
  ******************************************************************************
  */
! pascal void p2wi_VScrollActionProc(ControlHandle control, short part)
  {
  	short			amount;
--- 1417,1421 ----
  ******************************************************************************
  */
! CALLBACK(pascal void, uppControlActionProcInfo, p2wi_VScrollActionProc)(ControlHandle control, short part)
  {
  	short			amount;
***************
*** 1473,1477 ****
  ******************************************************************************
  */
! pascal void p2wi_HScrollActionProc(ControlHandle control, short part)
  {
  	short			amount;
--- 1466,1470 ----
  ******************************************************************************
  */
! CALLBACK(pascal void, uppControlActionProcInfo, p2wi_HScrollActionProc)(ControlHandle control, short part)
  {
  	short			amount;
***************
*** 1529,1535 ****
  	int		x;
  	char	*OutBuf, *outp;
  
  	// get ahold of output buffer
! 	OutBuf = *p2w_Stdio_OutBuf_Hdl;
  	// make sure the string at least stops here! (maybe check strlen first for overflow errors?)
  	*(OutBuf+kMaxStdIOBuffSize-1) = '\0';
--- 1522,1530 ----
  	int		x;
  	char	*OutBuf, *outp;
+ 	short	OutSize;
  
  	// get ahold of output buffer
! 	OutSize = **(short **)p2w_Stdio_OutBuf_Hdl;
! 	OutBuf = *p2w_Stdio_OutBuf_Hdl + sizeof(short);
  	// make sure the string at least stops here! (maybe check strlen first for overflow errors?)
  	*(OutBuf+kMaxStdIOBuffSize-1) = '\0';
***************
*** 1546,1550 ****
  	{
  		outp = OutBuf;
! 		while (*outp)
  		{
  			if (*outp == 0x0a)
--- 1541,1545 ----
  	{
  		outp = OutBuf;
! 		for (x = 0; x < OutSize; x++)
  		{
  			if (*outp == 0x0a)
***************
*** 1558,1562 ****
  	if ((stream == stderr) || (stream == stdout))
  	{
! 		x = p2w_AddCString(local_p2wWindow, OutBuf);	// add it into window
  	}
  	else
--- 1553,1557 ----
  	if ((stream == stderr) || (stream == stdout))
  	{
! 		x = p2w_AddCString(local_p2wWindow, OutBuf, OutSize);	// add it into window
  	}
  	else
***************
*** 1564,1568 ****
  		// call a real std. C library routine.  This allows output to real
  		// stdio C files to pass through unmolested.
! 		x = fwrite(OutBuf, strlen(OutBuf), 1, stream);
  	}
  
--- 1559,1563 ----
  		// call a real std. C library routine.  This allows output to real
  		// stdio C files to pass through unmolested.
! 		x = fwrite(OutBuf, OutSize, 1, stream);
  	}
  
***************
*** 1594,1601 ****
  	int		x;
  	char	*outBuf;
  
  	// get ahold of output buffer
  	HLock(p2w_Stdio_OutBuf_Hdl);
! 	outBuf = *p2w_Stdio_OutBuf_Hdl;
  
  #if defined(NEEDS_DEBUG)
--- 1589,1598 ----
  	int		x;
  	char	*outBuf;
+ 	short	*OutSizePtr;
  
  	// get ahold of output buffer
  	HLock(p2w_Stdio_OutBuf_Hdl);
! 	OutSizePtr = (short *)*p2w_Stdio_OutBuf_Hdl;
! 	outBuf = *p2w_Stdio_OutBuf_Hdl + sizeof(short);
  
  #if defined(NEEDS_DEBUG)
***************
*** 1604,1607 ****
--- 1601,1605 ----
  	int daLen = (**(local_p2wWindow->p2wTEHandle)).teLength;
  	sprintf(outBuf, "[%5d] ",daLen);
+ 	*OutSizePtr = 5;
  	x = p2wi_StdCOut_BottleNeck(stream);
  }
***************
*** 1610,1613 ****
--- 1608,1612 ----
  	// use C library routine to do printf formatting of the string into buffer
  	x = vsprintf(outBuf, format, va_args); // format it into a string
+ 	*OutSizePtr = strlen(outBuf);
  
  	// do the window output
***************
*** 1653,1663 ****
  	int		x;
  	char	*outBuf;
  
  	// get ahold of output buffer & make char into string
  	HLock(p2w_Stdio_OutBuf_Hdl);
! 	outBuf = *p2w_Stdio_OutBuf_Hdl;
  
  	outBuf[0] = theChar;
  	outBuf[1] = '\0';
  
  	x = p2wi_StdCOut_BottleNeck(stream);
--- 1652,1665 ----
  	int		x;
  	char	*outBuf;
+ 	short	*OutSizePtr;
  
  	// get ahold of output buffer & make char into string
  	HLock(p2w_Stdio_OutBuf_Hdl);
! 	OutSizePtr = (short *)*p2w_Stdio_OutBuf_Hdl;
! 	outBuf = *p2w_Stdio_OutBuf_Hdl + sizeof(short);
  
  	outBuf[0] = theChar;
  	outBuf[1] = '\0';
+ 	*OutSizePtr = 1;
  
  	x = p2wi_StdCOut_BottleNeck(stream);
***************
*** 1674,1684 ****
  	int		x;
  	char	*outBuf;
  
  	// get ahold of output buffer
  	HLock(p2w_Stdio_OutBuf_Hdl);
! 	outBuf = *p2w_Stdio_OutBuf_Hdl;
  
  	// Copy string into buffer & write it
  	BlockMove(theString, outBuf, kMaxStdIOBuffSize);
  	x = p2wi_StdCOut_BottleNeck(stream);
  
--- 1676,1689 ----
  	int		x;
  	char	*outBuf;
+ 	short	*OutSizePtr;
  
  	// get ahold of output buffer
  	HLock(p2w_Stdio_OutBuf_Hdl);
! 	OutSizePtr = (short *)*p2w_Stdio_OutBuf_Hdl;
! 	outBuf = *p2w_Stdio_OutBuf_Hdl + sizeof(short);
  
  	// Copy string into buffer & write it
  	BlockMove(theString, outBuf, kMaxStdIOBuffSize);
+ 	*OutSizePtr = kMaxStdIOBuffSize;
  	x = p2wi_StdCOut_BottleNeck(stream);
  
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:Printf2Window.h Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:Printf2Window.h
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:Printf2Window.h	Fri Feb  4 18:17:00 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:Printf2Window.h	Sat Apr  2 13:49:16 1994
***************
*** 129,133 ****
  OSErr p2w_AddCString
  					(		p2w_WindowPtr_t		the_p2wPtr,
! 					const	char				*theCStrPtr);
  
  void p2w_DrawWindow
--- 129,134 ----
  OSErr p2w_AddCString
  					(		p2w_WindowPtr_t		the_p2wPtr,
! 					const	char				*theCStrPtr,
! 					short						size);
  
  void p2w_DrawWindow
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:ProgressDialog.c Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:ProgressDialog.c
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:ProgressDialog.c	Fri Feb  4 18:17:17 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:ProgressDialog.c	Sat Apr 16 14:35:27 1994
***************
*** 59,62 ****
--- 59,63 ----
  	931001	[esp]	version 2.0 finished (Released on 10/4/93)
  	931119	[djh]	2.0.1 conditionally compiles for PPC machine, keyword __powerc
+ 	940416	[PFS]	2.2.1 greatly reworked to clean up PPC support and provide CodeWarrior projects
  ==============================================================================
  */
***************
*** 70,73 ****
--- 71,77 ----
  #include "ProgressDialog.h"	// our defs
  
+ // Forward declaration
+ pascal void showProgress_UProcProc(DialogPtr theDialog, short theItem);
+ 
  
  /*  gProgressItemValue will be set to 0 to 100 by CalculateProgressValue() */
***************
*** 81,85 ****
  // ==============================================
  // Set up a user item proc for drawing progress bar
! pascal void showProgress_UProc(DialogPtr theDialog, short theItem)
  {
  #pragma unused (theItem)
--- 85,89 ----
  // ==============================================
  // Set up a user item proc for drawing progress bar
! CALLBACK(pascal void, uppUserItemProcInfo, showProgress_UProc)(DialogPtr theDialog, short theItem)
  {
  #pragma unused (theItem)
***************
*** 146,154 ****
  	// Set up User item to display a progress bar
  	GetDItem(theDialog, theItemNum, &itemtype, &tempHandle, &gProgressItemRect);
- #if defined(__powerc)
- 	SetDItem(theDialog, theItemNum, itemtype, (Handle)&gShowProgressRD, &gProgressItemRect);
- #else
  	SetDItem(theDialog, theItemNum, itemtype, (Handle)&showProgress_UProc, &gProgressItemRect);
- #endif
  
  	// remember.. for later updates
--- 150,154 ----
Only in Tumbolia:Desktop Folder:POVSRC:SOURCE:: QuickTimeComponents.h
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:SaveCmpPict.c Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:SaveCmpPict.c
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:SaveCmpPict.c	Fri Feb  4 18:17:17 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:SaveCmpPict.c	Wed Mar 23 15:12:16 1994
***************
*** 111,120 ****
  	if (!anError && (fileResRef != -1))
  	{
- #if defined(__powerc)
  		anError = MakeFilePreview(fileResRef, (ICMProgressProcRecordPtr)-1);
- #else
- 		// ICMProgressProcRecordPtr is not in regular Mac 3.3 headers yet...
- 		anError = MakeFilePreview(fileResRef, (ProgressProcRecordPtr)-1);
- #endif
  		CloseResFile(fileResRef);
  	}
--- 111,115 ----
Only in Tumbolia:Desktop Folder:POVSRC:SOURCE:: StdCompressionGlue.o
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:TARGA.C Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:TARGA.C
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:TARGA.C	Thu Jul 29 17:11:28 1993
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:TARGA.C	Sat Apr  2 12:52:05 1994
***************
*** 68,71 ****
--- 68,72 ----
    {
    int data1, data2, i;
+   static unsigned char header[] = "\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00";
  
    handle->mode = mode;
***************
*** 124,131 ****
  
      for (i = 0; i < 10; i++)	/* 00, 00, 02, then 7 00's... */
!       if (i == 2)
!         putc(i, handle->file);
!       else
!         putc(0, handle->file);
  
      putc(First_Line % 256, handle->file); /* y origin set to "First_Line" */
--- 125,129 ----
  
      for (i = 0; i < 10; i++)	/* 00, 00, 02, then 7 00's... */
!       putc(header[i], handle->file);
  
      putc(First_Line % 256, handle->file); /* y origin set to "First_Line" */
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:TextEditor.c Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:TextEditor.c
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:TextEditor.c	Fri Feb  4 18:17:17 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:TextEditor.c	Sat Apr 23 19:30:21 1994
***************
*** 56,59 ****
--- 56,60 ----
  	931001	[esp]	version 2.0 finished (Released on 10/4/93)
  	931119	[djh]	2.0.1 conditionally compiles for PPC machines, keyword __powerc
+ 	940416	[PFS]	2.2.1 greatly reworked to clean up PPC support and provide CodeWarrior projects
  ==============================================================================*/
  
***************
*** 90,96 ****
  /*==== globals (external scope) ====*/
  
! #if defined(__powerc)
! extern RoutineDescriptor gScrollRD;
! #endif
  
  WindowPtr			gSrcWind_Window;
--- 91,97 ----
  /*==== globals (external scope) ====*/
  
! // #if defined(__powerc)
! // extern RoutineDescriptor gScrollRD;
! // #endif
  
  WindowPtr			gSrcWind_Window;
***************
*** 594,598 ****
  
  // ==============================================
! pascal void ScrollProc(ControlHandle theControl, short theCode)
  {
  	int	pageSize;
--- 595,599 ----
  
  // ==============================================
! CALLBACK(pascal void, uppControlActionProcInfo, ScrollProc)(ControlHandle theControl, short theCode)
  {
  	int	pageSize;
***************
*** 647,655 ****
  		AdjustText();
  	} else
! #if defined(__powerc)
! 		TrackControl(theControl, theEvent->where, (ControlActionUPP)&gScrollRD);
! #else
! 		TrackControl(theControl, theEvent->where, (ProcPtr)&ScrollProc);
! #endif
  
  	SetPort(savePort);
--- 648,652 ----
  		AdjustText();
  	} else
! 		TrackControl(theControl, theEvent->where, (ControlActionUPP)&ScrollProc);
  
  	SetPort(savePort);
diff -C 2 Tumbolia:Desktop Folder:POVSRC:SOURCE:TextEditor.h Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:TextEditor.h
*** Tumbolia:Desktop Folder:POVSRC:SOURCE:TextEditor.h	Fri Feb  4 18:17:17 1994
--- Tumbolia:Applications �:Persistence of Vision:POVSRC:SOURCE:TextEditor.h	Wed Mar 23 13:40:57 1994
***************
*** 100,104 ****
  int		SetView(WindowPtr w);
  int		UpdateWindow(WindowPtr theWindow);
! pascal void ScrollProc(ControlHandle theControl, short theCode);
  int		DoContent(WindowPtr theWindow, EventRecord *theEvent);
  void	MyResizeWindow(WindowPtr w, short h, short v);
--- 100,104 ----
  int		SetView(WindowPtr w);
  int		UpdateWindow(WindowPtr theWindow);
! pascal void ScrollProcProc(ControlHandle theControl, short theCode);
  int		DoContent(WindowPtr theWindow, EventRecord *theEvent);
  void	MyResizeWindow(WindowPtr w, short h, short v);
nn>/6�6�7�/;7}7�POVSRC-2.2.diffTEXTMPS ��TEXTMPS ������\���8�8��/99*96�/9u9�9��/"9�::N�/.:a:r:��/?:�:�:��/J:�;'
>:�H
Courier<$�=<$�=��^o<$�=<$�=nn>���>MPSR
������L��