mirror of
https://github.com/elliotnunn/supermario.git
synced 2024-12-01 02:51:04 +00:00
554 lines
29 KiB
Plaintext
554 lines
29 KiB
Plaintext
; 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):
|
||
;
|
||
; <SM5> 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.
|
||
; <SM4> 11/3/92 SWC Changed ToolEqu.a->ToolUtils.a and QuickEqu.a->QuickDraw.a.
|
||
; <SM3> 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.
|
||
; <SM2> 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.
|
||
; <SM1> 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 ; <SM3 chp>
|
||
|
||
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' ;<SM2> 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. <SM3 chp>
|
||
@loadVector
|
||
move.l (a1,d0*4),a1 ; Get address of routine <SM3 chp>
|
||
jmp (a1) ; Jump to routine <SM3 chp>
|
||
|
||
@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
|
||
|
||
|
||
; <SM3 chp> Current versions of the StyleWriter driver know about the structure of the
|
||
; <SM3 chp> DispatchFontCache table and patch it, so the table cannot change until
|
||
; <SM3 chp> the StyleWriter driver changes (post Cube-E). For now, DispatchFontCache
|
||
; <SM3 chp> is a template for a nonrelocatable block of memory in the system heap.
|
||
; <SM3 chp> DispatchFontScaler needs to have the same general structure as the former
|
||
; <SM3 chp> table since it is used in the same manner by the same dispatch routine.
|
||
|
||
DispatchFontCache record 0 ; <SM3 chp>
|
||
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 ; <SM3 chp>
|
||
|
||
|
||
|
||
;——————————————————————————————————————————————————————————————————————————————————————————
|
||
; Boot-time initialization code, if any, goes here.
|
||
;——————————————————————————————————————————————————————————————————————————————————————————
|
||
|
||
;InstallBassCommon InstallProc (Plus,SE,II,Portable,IIci)
|
||
INSTALLBASSCOMMON Proc Export
|
||
|
||
; <SM3 chp> Since the above-described dispatch tables are no longer initialized by the
|
||
; <SM3 chp> link patch mechanism and cannot be placed in ROM, all of the following
|
||
; <SM3 chp> 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 ; <SM3 chp>
|
||
_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 ; <SM3 chp>
|
||
|
||
;——————————————————————————————————————————————————————————————————————————————————————————
|
||
; 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
|