; File: BassExtensions.a ; ; Contains: This file was formerly part of the 'lpch' resource which loads the Spline ; Package. It is now part of the SuperMario ROM. ; ; Written by: Charlton E. Lui ; ; Copyright: © 1988-1993 by Apple Computer, Inc. All rights reserved. ; ; Change History (most recent first): ; ; 5/21/93 CSS Fix the fontmgr gestalt call to return the correct number of ; bits for double byte support. And expand DispatchFontCache table ; to support InitializePartialFonts and InitializeDiskCache which ; are enabled once the gestalt call turns on the new bits. Per ; Reality BassPatches.a <14> comment follows: ; <14> 3/9/92 DTY #1023997: DonΥt call InitializePartialFonts and ; InitializeDiskCache as part of the TrueType installation process ; any more. Instead, make them selectors off of vFontCache so that ; they can be called by the Universal Two Byte Extension, since ; two byte systems are the only clients for these features at the ; moment. This way, about 150K is saved in the base system. ; 11/3/92 SWC Changed ToolEqu.a->ToolUtils.a and QuickEqu.a->QuickDraw.a. ; 8/25/92 chp The DispatchFontCache and DispatchFontScaler tables have been ; moved back to the system heap using the old format of absolute ; long address vectors initialized at boot time. The StyleWriter ; driver depends on this patchable format. ; 6/8/92 CSS Roll-in Reality Changes: Note that <15> was not applied as the fix applies to ; the ATM patch that is no longer part of this file. ; <16> 4/1/92 YK #1023997: Ignore case for InitializePartialFonts and ; InitializeDiskcache since they are pascal functions now. ; <14> 3/9/92 DTY #1023997: DonΥt call InitializePartialFonts and ; InitializeDiskCache as part of the TrueType installation process ; any more. Instead, make them selectors off of vFontCache so that ; they can be called by the Universal Two Byte Extension, since ; two byte systems are the only clients for these features at the ; moment. This way, about 150K is saved in the base system. ; 4/16/92 PN first checked in ; <13> 10/25/91 RB Fix selectors to support new TT calls for embedded bitmaps. ; <12> 10/23/91 ngk KON, Add InstallProc for myGetSeek to load it only when 32-bit ; QD is not present. ; <11> 10/22/91 RB Add support for sfnt-embedded-bitmaps ; <10> 9/25/91 jlf Rolled in modifications from Pacific TrueType project: added ; initialization calls to InitializePartialFonts and ; InitializeDiskCache; added SetAppBase and InitApplZone ; patches to remove caches when an application heap is reformatted ; (the CloseResFile patch doesn't catch a Finder or MultiFinder ; launch when the system font is an outline font). ; <9> 7/10/91 JSM Remove obsolete SysVers conditionals, remove unused DISK_CACHE ; equate. ; <8> 6/14/91 JL Removed benign redefinition of spare1 declared in Private.a. ; <7> 6/12/91 LN added #include 'SysPrivateEqu.a' ; <6> 2/4/91 CL (MR)Conditionalizing the CacheCleaner code in this file to only ; be used for the Guadi init. The cleaning code for 7.0 is moved ; to MiscPatches.a in the CleanupApplication routine. Taking out ; old dead code. ; <5> 12/17/90 MR [ph] Add patch to SetTrapAddress to protect ATM from crashing if ; they try to draw when a TrueType font is currently loaded. ; <4> 12/5/90 MR Add Gestalt selector 'font'. [cl] ; <3> 10/30/90 CL (MR)Adding in fs_LowestPPEM to realfont. ; <2> 10/23/90 CL (MR)Kill fontTools. ; <14> 10/9/90 CL Added preflight call to the dispatcher. ; <16> 10/2/90 CL Of course we have more memory manager stuff. Accidently ; installed memory manager grow zone patch into the init ; on machines besides the MacPlus. Fixing it up! ; <15> 10/2/90 CL Fixing memory manager patch on the system heap grow zone. ; <14> 10/1/90 CL The prglue patch does not work in Finder mode since the printing ; code does in fact get memory for the app heap not the system ; heap. Need to check which mode and set accordingly. ; <13> 9/27/90 CL Adding in Dave HarrisonΥs cool memory patch for the MacPlus ROM. ; <12> 9/24/90 CL Adding sb_searchForcache back into vector table. ; <11> 9/13/90 CL Taking out MachineType since it is no longer needed for the ; MultiFinder exist check. Memory manager has a bad bug. It ; sometimes loops forever. This bug was fixed in the Mac SE ; memory manager but was never rolled back into the Plus ROM ; Now we include this 5k patch into the Gaudi init build. ; Set mfExists to true if we're in System 7.0. ; <10> 9/7/90 CL Fixing a Prglue heap corruption problem. ; <9> 9/7/90 MR Remove PSName calls since they now live in the LW driver. ; <8> 8/31/90 CL got rid of call to the now unneeded sb_initmemory. When the ; link patches got rolled in the rom address for putpicdata for ; the portable was wrong. Pictures died on the Guadi init. ; Took out extra ifdef out code. ; <7> 8/10/90 MR change detachfontface to getfontfacefamily ; <6> 7/31/90 KSM Fix bug in JStdTxMeas where address was getting SUB.W instead of ; SUB.L. ; <5> 7/27/90 CL Added the SetFractEnable and SetFScaleDisable patches in since ; they are not defined in the MacPlus Rom. ; <4> 7/23/90 MR Remove duplicate dispatch entries, fix jmp bug at SplineCall ; <3> 7/21/90 DTY Took out _Debugger in _GetSeek patch. ; <2> 7/20/90 DTY No change. Just cleaning up the change history. ; <1> 7/20/90 DTY Bass: The Linked Patch. This file used to be BassComm_Tail. ; Contents of BassBW_Tail, BassCQD_Tail, DispatchBass, and ; BPatcher have been merged in. All Head files are gone now that ; Bass is a linked patch. The dispatch tables are now formed by ; using the dcImportResident macro instead of copying them into a ; block in the system heap. The cache cleaning traps have been ; modified to use the jmpOld macro to return to the real toolbox ; routine, so these addresses donΥt have to be saved in ; ExdpandMem. GetDevPix has been moved into FontMgr.a since ; thatΥs where itΥs being called. ; ; BassCommTail.a --> BassPatches.a ; ; <11> 7/16/90 CL Made Finder compatible for the Goudy init. ; <10> 7/13/90 MR Add GetFontGlyph ; <9> 6/26/90 MR Modify ToolBox calls ; <8> 6/22/90 CL Adding fontPrivate.a include ; <7> 6/19/90 MR Add GetPSFontName to the trap ; <6> 6/5/90 MR Add font toolbox and get rid of readmvt and mapcharcodes ; <5> 5/29/90 CL Added conditionalized support for disk caching. ; <4> 5/3/90 CL Adding non-sys newhandle clear. Taking out old encrypt selector. ; Added fs_MapCharCodes and fs_ReadMVT to dispatcher. ; <3> 4/10/90 CL Conditionalize for ROMΙ ; <2> 2/27/90 CL Getting bbs headers ; <2.1> 11/14/89 CEL Moved globals from BassComm_MiddleJump.a to this file. ; <2.0> 9/28/89 CEL Took out killing the caches when an application quits. ; <1.9> 9/25/89 CEL Kill the caches in the application heap when quiting. ; <1.8> 9/15/89 CEL Changed to case sensitive obj code. ; <1.7> 8/14/89 CEL Set up machinetype & mfexists var for later checking. ; <1.6> 8/1/89 CEL Font scaler with composites updateΙ ; <1.5> 6/10/89 CEL Moved Private.a QuickDraw Equates into proper QuickDraw private ; file (colorequ.a), got rid of QuickDraw nFiles dependencies and ; fixed up necessary filesΙ ; <1.4> 6/6/89 CEL 32-bit QD is a new tool, need to change GetTrapAddress for check ; for 32-bit QD to work right ; <1.3> 6/2/89 CEL Changed Bind labels to new labels to references in patchmacs.a ; <1.2> 5/26/89 CEL Integrated the new Font Scaler 1.0 into Spline Fonts ; <₯1.1> 5/3/89 CEL All kinks worked out, Blasting in bass filesΙ ; <1.0> 5/1/89 cel Adding Bass for first timeΙ ; ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ STRING PASCAL CASE OBJ machine mc68020 ; BASS_INIT equ 0 IF (&TYPE('SCRIPT_CHAR_EXTRA') = 'UNDEFINED') THEN ; <3> CEL SCRIPT_CHAR_EXTRA EQU 1 ENDIF ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; IncludesΙ ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ;wholeErrors EQU 1 ;Ed added dsBadPatch error, so it needs this equate ;USE_MAKESYSFREE EQU 1 ;MakeSysFree flag ATM_HACK EQU 1 INCLUDE 'Traps.a' INCLUDE 'SysEqu.a' INCLUDE 'SysErr.a' INCLUDE 'ToolUtils.a' INCLUDE 'QuickDraw.a' INCLUDE 'SplineDefines.a' INCLUDE 'fontPrivate.a' INCLUDE 'LinkedPatchMacros.a' INCLUDE 'ColorEqu.a' INCLUDE 'GestaltEqu.a' include 'GestaltPrivateEqu.a' ; CSS INCLUDE 'SysPrivateEqu.a' ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Install Bass patches to QuickDraw & FontMgr routines. ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Misc routines ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ArithMode PROC EXPORT ; hilite ;avg addPin addOver subPin trans max subOver min DC.B srcCopy, srcBic, srcXor, srcOr, srcOr, srcBic, srcXor, srcOr EndProc JStdTxMeas PROC EXPORT dc.l $E00+($ED*4) ; Space to hold vector to StdTxMeas routine ENDPROC ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Remove any application memory allocated by Bass whenever the application heap is ; reformatted. SetAppBase and InitApplZone must be patched since they both trash the ; application heap. ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ;SetAppBaseCacheCleaner PatchProc $A057,(Plus,SE,II,Portable,IIci) ;SetAppBase ;InitApplZoneCacheCleaner PatchProc $A02C,(Plus,SE,II,Portable,IIci) ;InitApplZone ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; ATM lovely hack remains with system files ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Bass Dispatcher ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ;SplineCall PatchProc $A854,(Plus,SE,II,Portable,IIci) SPLINECALL Proc Export MOVE.L expandMem, A0 ; get low mem expand MOVE.L ExpandMemRec.emSplineKey(A0),D1 ; splineKey invalid? BEQ.S @bailOut ; yes -> bail out MOVE.L D1,A0 ; load splineKey handle MOVE.L (A0),A0 ; load splineKey pointer MOVE.L SplineKeyRec.vFontCache(A0),A1 ; load font cache vectors. TST.W D0 ; High bit set? BPL.S @fontCache ; no -> it belongs to the font cache. AND.W #$7FFF,D0 ; clear high bit flag. MOVE.L SplineKeyRec.vFontScaler(A0),A1 ; load font scaler vectors. @fontCache MOVE.L (A1)+,D1 ; load vector table size. CMP.W D1,D0 ; valid selector? BHS.S @bailOut ; no -> bail out. @loadVector move.l (a1,d0*4),a1 ; Get address of routine jmp (a1) ; Jump to routine @bailOut SWAP D0 ; Get number of params CLR.L D1 ; clear a long. MOVE.B D0,D1 ; isolate arguments length. LSR.L #8,D0 ; isolate results length. ADD.W D1,SP ; pop the arguments. MOVE.L SP,A1 ; copy the stack pointer. BRA.S @2 ; enter loop at bottom. @1 MOVE.B #$FF, (A1)+ ; clear a byte. @2 DBRA D0,@1 ; do the next byte. JMP (A1) ; return to the caller. ENDPROC ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; This is the gestalt call back function. mrr ; ; pascal OSErr FontMgrGestalt(OSType selector, long* response) ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ FontMgrGestalt PROC EXPORT MOVE.L (sp)+, a0 ; return address MOVE.L (sp)+, a1 ; addr of response ADDQ #4, sp ; eat the selector MOVE.L #(1 << gestaltOutlineFonts) | \ ; <14> (1 << gestaltPartialFonts) | \ ; <14> (1 << gestaltDiskCachedFonts) \ ; <14> ,(a1) CLR.W (sp) ; no error JMP (a0) ; go home ENDPROC ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; EntryTablesΙ ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ FREE_SPOT PROC EXPORT ; Just a place holder RTS ENDPROC ; Current versions of the StyleWriter driver know about the structure of the ; DispatchFontCache table and patch it, so the table cannot change until ; the StyleWriter driver changes (post Cube-E). For now, DispatchFontCache ; is a template for a nonrelocatable block of memory in the system heap. ; DispatchFontScaler needs to have the same general structure as the former ; table since it is used in the same manner by the same dispatch routine. DispatchFontCache record 0 ; entries ds.l 1 vIsOutline ds.l 1 ; selector 0 vSetOutlinePreferred ds.l 1 ; selector 1 vSB_KillSomeCaches ds.l 1 ; selector 2 vsb_FillPrinterWidths ds.l 1 ; selector 3 vsb_RetrieveGlyph ds.l 1 ; selector 4 vsb_FillWidthTab ds.l 1 ; selector 5 vsb_SearchForCache ds.l 1 ; selector 6 vsb_PreFlightFontMem ds.l 1 ; selector 7 vOutlineMetrics ds.l 1 ; selector 8 vGetOutlinePreferred ds.l 1 ; selector 9 vSetPreserveGlyph ds.l 1 ; selector a vGetPreserveGlyph ds.l 1 ; selector b vsb_FlushFonts ds.l 1 ; selector c vsb_SFNTMatchSize ds.l 1 ; selector d vfs_LowestPPEM ds.l 1 ; selector e InitializePartialFonts ds.l 1 ; selector f <14> InitializeDiskCache ds.l 1 ; selector 10 <14> size equ * endr DispatchFontScaler record 0 entries ds.l 1 vfs_OpenFonts ds.l 1 ; selector 0 vfs_Initialize ds.l 1 ; selector 1 vfs_NewSfnt ds.l 1 ; selector 2 vfs_NewTransformation ds.l 1 ; selector 3 vfs_NewGlyph ds.l 1 ; selector 4 vfs_GetAdvanceWidth ds.l 1 ; selector 5 vfs_ContourGridFit ds.l 1 ; selector 6 vfs_ContourNoGridFit ds.l 1 ; selector 7 vfs_FindBitMapSize ds.l 1 ; selector 8 vfs_SizeOfOutlines ds.l 1 ; selector 9 vfs_SaveOutlines ds.l 1 ; selector a vfs_RestoreOutlines ds.l 1 ; selector b vfs_ContourScan ds.l 1 ; selector c vfs_CloseFonts ds.l 1 ; selector d if TheFuture then vfs_GetGlyphInfo ds.l 1 ; selector e vfs_GetGlyphData ds.l 1 ; selector f vfs_GetBitMapInfo ds.l 1 ; selector 10 vfs_GetBitMapData ds.l 1 ; selector 11 endif size equ * endr ; ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Boot-time initialization code, if any, goes here. ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ;InstallBassCommon InstallProc (Plus,SE,II,Portable,IIci) INSTALLBASSCOMMON Proc Export ; Since the above-described dispatch tables are no longer initialized by the ; link patch mechanism and cannot be placed in ROM, all of the following ; entry points are imported and initialized into the tables by this routine. ; case off import IsOutline, SetOutlinePreferred, SB_KillSomeCaches import sb_FillPrinterWidths, sb_RetrieveGlyph, sb_FillWidthTab import sb_SearchForCache, sb_PreflightFontMem import OutlineMetrics, GetOutlinePreferred import SetPreserveGlyph, GetPreserveGlyph import sb_FlushFonts, sb_SFNTMatchSize, fs_LowestPPEM import InitializePartialFonts, InitializeDiskCache import fs_OpenFonts, fs_Initialize, fs_NewSfnt import fs_NewTransformation, fs_NewGlyph import fs_GetAdvanceWidth import fs_ContourGridFit, fs_ContourNoGridFit import fs_FindBitMapSize, fs_SizeOfOutlines import fs_SaveOutlines, fs_RestoreOutlines import fs_ContourScan, fs_CloseFonts if TheFuture then import fs_GetGlyphInfo, fs_GetGlyphData import fs_GetBitMapInfo, fs_GetBitMapData endif case obj ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Allocate splinekey memoryΙ ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ MOVE.L #splineKeyRec.splineKeySize, D0 ;Size of splinekey _NewHandle ,SYS,CLEAR BNE @bailOut ; We are hosed MOVE.L expandMem, A2 ; get low mem expand MOVE.L A0, ExpandMemRec.emSplineKey(A2) ; Handle to splineKey MOVE.L (A0), A2 ; Get the ptr in a reg MOVE.B #1, splineKeyRec.mfExists(A2) ; multiFinder always exists in 7.0 _HLock ; ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Fill out dispatch tablesΙ ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ moveq #DispatchFontCache.size,d0 ; _NewPtr ,sys,clear MOVE.L A0, splineKeyRec.vFontCache(A2) ; Save dispatch table ptr (fontCache) beq.b @endDFCInit moveq #(DispatchFontCache.size/4)-1,d0 ; number of vector entries in table move.l d0,(a0)+ lea IsOutline,a1 ; selector 0 move.l a1,(a0)+ lea SetOutlinePreferred,a1 ; selector 1 move.l a1,(a0)+ lea SB_KillSomeCaches,a1 ; selector 2 move.l a1,(a0)+ lea sb_FillPrinterWidths,a1 ; selector 3 move.l a1,(a0)+ lea sb_RetrieveGlyph,a1 ; selector 4 move.l a1,(a0)+ lea sb_FillWidthTab,a1 ; selector 5 move.l a1,(a0)+ lea sb_SearchForCache,a1 ; selector 6 move.l a1,(a0)+ lea sb_PreFlightFontMem,a1 ; selector 7 move.l a1,(a0)+ lea OutlineMetrics,a1 ; selector 8 move.l a1,(a0)+ lea GetOutlinePreferred,a1 ; selector 9 move.l a1,(a0)+ lea SetPreserveGlyph,a1 ; selector a move.l a1,(a0)+ lea GetPreserveGlyph,a1 ; selector b move.l a1,(a0)+ lea sb_FlushFonts,a1 ; selector c move.l a1,(a0)+ lea sb_SFNTMatchSize,a1 ; selector d move.l a1,(a0)+ lea fs_LowestPPEM,a1 ; selector e move.l a1,(a0)+ lea InitializePartialFonts,a1 ; selector f <14> move.l a1,(a0)+ lea InitializeDiskCache,a1 ; selector 10 <14> move.l a1,(a0)+ @endDFCInit moveq #DispatchFontScaler.size,d0 _NewPtr ,sys,clear MOVE.L A0, splineKeyRec.vFontScaler(A2) ; Save dispatch table ptr (fontScaler) beq.b @endDFSInit moveq #(DispatchFontScaler.size/4)-1,d0 ; number of vector entries in table move.l d0,(a0)+ lea fs_OpenFonts,a1 ; selector 0 move.l a1,(a0)+ lea fs_Initialize,a1 ; selector 1 move.l a1,(a0)+ lea fs_NewSfnt,a1 ; selector 2 move.l a1,(a0)+ lea fs_NewTransformation,a1 ; selector 3 move.l a1,(a0)+ lea fs_NewGlyph,a1 ; selector 4 move.l a1,(a0)+ lea fs_GetAdvanceWidth,a1 ; selector 5 move.l a1,(a0)+ lea fs_ContourGridFit,a1 ; selector 6 move.l a1,(a0)+ lea fs_ContourNoGridFit,a1 ; selector 7 move.l a1,(a0)+ lea fs_FindBitMapSize,a1 ; selector 8 move.l a1,(a0)+ lea fs_SizeOfOutlines,a1 ; selector 9 move.l a1,(a0)+ lea fs_SaveOutlines,a1 ; selector a move.l a1,(a0)+ lea fs_RestoreOutlines,a1 ; selector b move.l a1,(a0)+ lea fs_ContourScan,a1 ; selector c move.l a1,(a0)+ lea fs_CloseFonts,a1 ; selector d move.l a1,(a0)+ if TheFuture then lea fs_GetGlyphInfo,a1 ; selector e move.l a1,(a0)+ lea fs_GetGlyphData,a1 ; selector f move.l a1,(a0)+ lea fs_GetBitMapInfo,a1 ; selector 10 move.l a1,(a0)+ lea fs_GetBitMapData,a1 ; selector 11 move.l a1,(a0)+ endif @endDFSInit ; ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Initialize the splinePreferred flagΙ ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ BCLR #preserveGlyph, HiliteMode ;Do not always blit everything unless set BCLR #splinePreferred, HiliteMode ;Clear the low mem bit ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Set up flagsΙ ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ MOVE.L #$A89F, D0 ;Unimplemented trap _GetTrapAddress MOVE.L A0, D3 MOVE.L #$AB03, D0 _GetTrapAddress newTool ; see where trap is CMP.L A0, D3 SNE.B splineKeyRec.is32bit(A2) ;Set the 32 bit color flag ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Unlock the splineKey globalsΙ ; A2 no longer has splineKeyPtr. ; Must unlock before calling SB_INITMEMORY. ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ MOVE.L expandMem, A0 ; get low mem expand MOVE.L ExpandMemRec.emSplineKey(A0),A0 ; Handle to splineKey _HUnlock ; Unlock splineKey globals rts ; Exit anyway @bailOut MOVE.L expandMem, A2 ; get low mem expand CLR.L ExpandMemRec.emSplineKey(A2) ; Handle to splineKey RTS ; <=== in any case ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Force _InitFonts to be called. ; DonΥt include Mac Plus in ROM list, since FMExist doesnΥt on the Plus. ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ;ForceInitFontsCall InstallProc (SE,II,Portable,IIci) FORCEINITFONTSCALL Proc Export ST FMExist rts ENDPROC ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; Register our selector 'font' ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ;InstallFontGestalt InstallProc (Plus,SE,II,Portable,IIci) INSTALLFONTGESTALT Proc Export IMPORT FontMgrGestalt MOVE.L #gestaltFontMgrAttr, D0 LEA FontMgrGestalt, A0 _NewGestalt ; Install our function ; BEQ.S @noError ; error is in D0 ; DC.W $A9FF ; let me know if it failed ;@noError RTS EndProc ;₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯Temporary hack for InitZone ;---------------------------------------------------------------------- ; ; Procedure InitZoneGlue(growProc: ProcPtr; ; moreMasters: Integer; ; limitPtr,startPtr : Ptr); ; Creates and initializes a fresh zone from unstructured storage ; ; Arguments: ; growProc: points to grow procedure for this zone ; moreMasters: number of master pointers to create at a time ; limitPtr: points one past last byte of raw storage ; startPtr: points to first byte of raw storage ; ; Registers: ; D0 - result code from InitApplZone ; INITZONEGLUE PROC EXPORT MOVE.L (SP)+,A1 ;return address Move.L SP,A0 ;stack parameters form req blk _InitZone Add #14,SP ;strip parameters JMP (A1) ;return via A1 ;₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯₯ ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ ; END Spline_PatcheeTail.a!!! ;ΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡΡ End