mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-12-22 23:29:27 +00:00
4325cdcc78
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included. The Tools directory, containing mostly junk, is also excluded.
554 lines
23 KiB
Plaintext
554 lines
23 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
|