boot3/QuickDraw/Classic/GrafTypes.m.a
Elliot Nunn 5b0f0cc134 Bring in CubeE sources
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.
2017-12-26 10:02:57 +08:00

648 lines
19 KiB
Plaintext

;
; File: GrafTypes.m.a
;
; Contains: xxx put contents here (or delete the whole line) xxx
;
; Written by: xxx put name of writer here (or delete the whole line) xxx
;
; Copyright: © 1986-1990 by Apple Computer, Inc., all rights reserved.
;
; This file is used in these builds: BigBang
;
; Change History (most recent first):
;
; <16> 3/31/91 KON BAL, WRKSHT#csd: Remove symbols from QD build.
; <15> 3/11/91 JT Added new opcode for glyph state and a field in the picSave
; record for tracking this opcode during picture spooling. Code
; checked by KON. BRC numbers 82651 and 79185. Worksheet number
; KON-022. Also added an ALIGN statement to the UNLINK macro to
; squash the assembler warnings about code alignment.
; <14> 1/20/91 JT Removed the change to pnLocFixed since Peter was unhappy about
; it. This fix will have to wait for some future release.
; <13> 1/18/91 JT Expand pnLocFixed into a full fixed-point number in the
; QuickDraw globals area.
; <12> 10/10/90 JL Changed SysError,FixRatio, FixMul, and LongMul to MSysError,
; etc. because of conflict with Opword.
; <11> 8/26/90 PKE Deleted old names picSMgrChar, picSMgrSlop, QDSmgrSlop,
; QDSmgrCharExtra.
; <10> 8/23/90 PKE (per JT) Renamed picSMgrChar and picSMgrSlop to picQdChExtra and
; picQdRunSlop; renamed QDSmgrSlop and QDSmgrCharExtra to
; qdRunSlop and qdChExtra. Keep old names too until we can update
; all relevant sources.
; <9> 8/2/90 PKE Claim two previously unused longs in QDSpare area for Script Mgr
; charExtra and slop. The QDSpare area is called fontData in
; QuickEqu.a.
; <8> 7/23/90 gbm Fix ROM builds that use Classic QD
; <7> 7/20/90 gbm Remove duplicate definitions.
; <6> 7/11/90 gbm get rid of some asm warnings
; <5> 6/20/90 KON Add picVersion to PicSave record for OpenCPicture on B&W
; machines.
; <4> 5/30/90 JT Grabbed the first QDspare variable from the QuickDraw globals to
; hold the horizontal pen fraction. This is also known as the
; fontData storage in the newer QuickDraw equates.
; <3> 5/27/90 JT Copy the opLineLayout equate here from ColorEqu.a in the
; internal assembly folder.
; <2> 4/24/90 JT
; <1> 12/17/89 CCH Adding for the first time into BBS.
; <1.5> 12/5/89 KON PMVersion needs to be cleaned up for B&W and Color QD
; compatability
; <1.4> 12/4/89 KON Added relevant stuff from ColorEqu.a. Now DrawPicture32Patch.a
; includes this file.
; <1.3> 11/7/89 KON Added support for font name/ID binding
; <1.2> 6/6/89 BAL Fixed up trap macros for memoryMgr traps and made _stackAvail
; call _stackSpace.
; <1.1> 11/11/88 CCH Fixed Header.
; <1.0> 11/9/88 CCH Adding to EASE.
; <1.1> 5/18/88 MSH Changed inclides to use m.GRAPHTYPES to work under EASE.
; <1.0> 2/11/88 BBM Adding file for the first time into EASEÉ
; <A295> 10/29/86 bbm hacked for moveable toolbox dispatch table. THIS SHOULD BE
; MODIFIED ANYTIME THE START OF THE TOOLBOX TRAP TABLE MOVES.
; SHOULD BE DONE IN PARALLEL WITH HARDWARE EQUS.
;
; To Do:
;
;EASE$$$ READ ONLY COPY of file Ògraftypes.m.aÓ
; 1.5 KON 12/05/1989 PMVersion needs to be cleaned up for B&W and Color QD compatability
; 1.4 KON 12/04/1989 Added relevent stuff from ColorEqu.a. Now DrawPicture32Patch.a includes this file.
; 1.3 KON 11/07/1989 Added support for font name/ID binding
; 1.2 BAL 06/06/1989 Fixed up trap macros for memoryMgr traps and made _stackAvail call _stackSpace.
; 1.1 CCH 11/11/1988 Fixed Header.
; 1.0 CCH 11/ 9/1988 Adding to EASE.
; OLD REVISIONS BELOW
; 1.1 MSH 5/18/88 Changed inclides to use m.GRAPHTYPES to work under EASE.
; 1.0 BBM 2/11/88 Adding file for the first time into EASEÉ
; END EASE MODIFICATION HISTORY
;-----------------------------
; modification history
; <A295/29oct86> bbm hacked for moveable toolbox dispatch table. THIS SHOULD
; BE MODIFIED ANYTIME THE START OF THE TOOLBOX TRAP TABLE
; MOVES. SHOULD BE DONE IN PARALLEL WITH HARDWARE EQUS.
;-----------------------------------------------------------------
;
; --> GRAFTYPES.a
;
; QUICKDRAW TYPE DECLARATIONS, USED BY ALL GRAPHICS ROUTINES
;
BLANKS ON
STRING ASIS
IF &TYPE('Nil') = 'UNDEFINED' THEN
Nil: Equ 0
ENDIF
IF &TYPE('__IncludingQuickEqu__') = 'UNDEFINED' THEN
;-----------------------------------------------
;
; QuickDraw VERBS:
;
FRAME EQU 0
PAINT EQU 1
ERASE EQU 2
INVERT EQU 3
FILL EQU 4
;-----------------------------------------------
;
; QuickDraw transfer MODES:
;
srcCopy EQU 0
srcOr EQU 1
srcXor EQU 2
srcBic EQU 3
notSrcCopy EQU 4
notSrcOr EQU 5
notSrcXor EQU 6
notSrcBic EQU 7
patCopy EQU 8
patOr EQU 9
patXor EQU 10
patBic EQU 11
notPatCopy EQU 12
notPatOr EQU 13
notPatXor EQU 14
notPatBic EQU 15
;-----------------------------------------------
;
; QuickDraw Color Separation:
;
normalBit EQU 0 ;normal screen mapping
inverseBit EQU 1 ;inverse screen mapping
redBit EQU 4 ;RGB additive mapping
greenBit EQU 3 ;for photos from screen
blueBit EQU 2
cyanBit EQU 8 ;CMYBk subtractive mapping
magentaBit EQU 7 ;for ink jet printer
yellowBit EQU 6
blackBit EQU 5
blackColor EQU 33
whiteColor EQU 30
redColor EQU 205
greenColor EQU 341
blueColor EQU 409
cyanColor EQU 273
magentaColor EQU 137
yellowColor EQU 69
;-----------------------------------------------
;
; OFFSETS WITHIN A POINT:
;
V EQU 0 ;WORD
H EQU 2 ;WORD
;-----------------------------------------------
;
; OFFSETS WITHIN A RECT:
;
TOPLEFT EQU 0 ;POINT
BOTRIGHT EQU 4 ;POINT
TOP EQU 0 ;INTEGER
LEFT EQU 2 ;INTEGER
BOTTOM EQU 4 ;INTEGER
RIGHT EQU 6 ;INTEGER
;-----------------------------------------------
;
; OFFSETS WITHIN A BITMAP:
;
BASEADDR EQU 0 ;LONG
ROWBYTES EQU 4 ;WORD
BOUNDS EQU 6 ;RECT
;-----------------------------------------------
;
; OFFSETS WITHIN A CURSOR:
;
DATA EQU 0 ;16 WORDS
MASK EQU 32 ;16 WORDS
HOTSPOT EQU 64 ;POINT
;-----------------------------------------------
;
; OFFSETS WITHIN A POLYGON:
;
POLYSIZE EQU 0 ;WORD, TOTAL BYTES
POLYBBOX EQU 2 ;RECT
POLYPOINTS EQU 10 ;ARRAY[0..0] OF Point
;-----------------------------------------------
;
; OFFSETS WITHIN A REGION:
;
RGNSIZE EQU 0 ;WORD, TOTAL BYTES
RGNBBOX EQU 2 ;RECT
RGNDATA EQU 10 ;START OF RGN DATA
;-----------------------------------------------
;
; OFFSETS WITHIN A PICTURE:
;
PICSIZE EQU 0 ;WORD, TOTAL BYTES
PICFRAME EQU 2 ;RECT
PICDATA EQU 10 ;START OF BYTE CODES
;-----------------------------------------------
;
; OFFSETS WITHIN QDProcs RECORD:
;
textProc EQU 0 ;PROCPTR
lineProc EQU textProc+4 ;PROCPTR
rectProc EQU lineProc+4 ;PROCPTR
rRectProc EQU rectProc+4 ;PROCPTR
ovalProc EQU rRectProc+4 ;PROCPTR
arcProc EQU ovalProc+4 ;PROCPTR
polyProc EQU arcProc+4 ;PROCPTR
rgnProc EQU polyProc+4 ;PROCPTR
bitsProc EQU rgnProc+4 ;PROCPTR
commentProc EQU bitsProc+4 ;PROCPTR
txMeasProc EQU commentProc+4 ;PROCPTR
getPicProc EQU txMeasProc+4 ;PROCPTR
putPicProc EQU getPicProc+4 ;PROCPTR
;-----------------------------------------------
;
; OFFSETS WITHIN A GRAFPORT:
;
device EQU 0 ;WORD
portBits EQU device+2 ;BITMAP
portRect EQU portBits+14 ;RECT
visRgn EQU portRect+8 ;RGNPTR
clipRgn EQU visRgn+4 ;RGNPTR
bkPat EQU clipRgn+4 ;PATTERN
fillPat EQU bkPat+8 ;PATTERN
pnLoc EQU fillPat+8 ;POINT
pnSize EQU pnLoc+4 ;POINT
pnMode EQU pnSize+4 ;WORD
pnPat EQU pnMode+2 ;PATTERN
pnVis EQU pnPat+8 ;WORD
txFont EQU pnVis+2 ;WORD
txFace EQU txFont+2 ;WORD
txMode EQU txFace+2 ;WORD
txSize EQU txMode+2 ;WORD
spExtra EQU txSize+2 ;Fixed Point
fgColor EQU spExtra+4 ;LONG
bkColor EQU fgColor+4 ;LONG
colrBit EQU bkColor+4 ;WORD
patStretch EQU colrBit+2 ;WORD
picSave EQU patStretch+2 ;handle
rgnSave EQU picSave+4 ;handle
polySave EQU rgnSave+4 ;handle
grafProcs EQU polySave+4 ;Pointer
PORTREC EQU grafProcs+4 ;SIZE OF A GRAFPORT
PORTBOUNDS EQU PORTBITS+BOUNDS
ENDIF ; if not including quickequ
;-----------------------------------------------------
;
; OFFSETS IN A REGION STATE RECORD:
;
RGNPTR EQU 0 ;LONG
DATAPTR EQU RGNPTR+4 ;LONG
SCANBUF EQU DATAPTR+4 ;LONG
SCANSIZE EQU SCANBUF+4 ;WORD
THISV EQU SCANSIZE+2 ;WORD
NEXTV EQU THISV+2 ;WORD
MINH EQU NEXTV+2 ;WORD
MAXH EQU MINH+2 ;WORD
LEFTH EQU MAXH+2 ;WORD
RGNREC EQU LEFTH+2 ;SIZE OF A REGION RECORD
;-----------------------------------------------------
;
; Offsets in a PicSave record:
;
thePic EQU 0 ;PICHANDLE
picMax EQU thePic+4 ;LongInt
picIndex EQU picMax+4 ;LongInt
picClipRgn EQU picIndex+4 ;RgnHandle
picBkPat EQU picClipRgn+4 ;Pattern
picTxFont EQU picBkPat+8 ;WORD
picTxFace EQU picTxFont+2 ;Style
picTxMode EQU picTxFace+2 ;WORD
picTxSize EQU picTxMode+2 ;WORD
picSpExtra EQU picTxSize+2 ;Fixed Point
picTxNumer EQU picSpExtra+4 ;Point
picTxDenom EQU picTxNumer+4 ;Point
picTxLoc EQU picTxDenom+4 ;Point
picPnLoc EQU picTxLoc+4 ;Point
picPnSize EQU picPnLoc+4 ;Point
picPnMode EQU picPnSize+4 ;WORD
picPnPat EQU picPnMode+2 ;Pattern
picFillPat EQU picPnPat+8 ;Pattern
picTheRect EQU picFillPat+8 ;Rect
picOvSize EQU picTheRect+8 ;Point
picOrigin EQU picOvSize+4 ;Point
picFgColor EQU picOrigin+4 ;Long
picBkColor EQU picFgColor+4 ;Long
picQdChExtra EQU picBkColor+4 ;Fixed <3><10>
picQdRunSlop EQU picQdChExtra+4 ;Fixed <3><10>
picFontList EQU picQdRunSlop+4 ;Handle <3><10>
picVersion EQU picFontList+4 ;picture version (0-based)
picGlyphState EQU picVersion+2 ;Long, outline preferred, preserve glyph, fractional widths, scale disable flags <15>
picReserve1 EQU picGlyphState+4 ;Long
picSaveRec EQU picReserve1+4 ;total size in bytes
;------ START OF ADDITION FROM ColorEqu.a by KON ----------
pictVersion EQU 1 ;version number for pict
npicVersion EQU $2FF ;version number for npic
;-----------------------------------------------
;
; PICTURE OPCODES
;
opNOP EQU $0 ; nop opcode
opClip EQU $1 ; clip opcode
opBkPat EQU $2 ; background pattern opcode
opTxFont EQU $3 ; text font opcode
opTxFace EQU $4 ; text face opcode
opTxMode EQU $5 ; text mode opcode
opSpExtra EQU $6 ; space extra opcode
opPnSize EQU $7 ; pen size opcode
opPnMode EQU $8 ; pen mode opcode
opPnPat EQU $9 ; pen pattern opcode
opFillPat EQU $A ; fill pattern opcode
opOvSize EQU $B ; oval size opcode
opOrigin EQU $C ; origin opcode
opTxSize EQU $D ; text size opcode
opFgColor EQU $E ; foreground color opcode
opBkColor EQU $F ; background color opcode
opTxRatio EQU $10 ; text ratio opcode
opVersion EQU $11 ; version opcode
opBkPixPat EQU $12 ; color background pattern opcode
opPnPixPat EQU $13 ; color pen pattern opcode
opFillPixPat EQU $14 ; color fill pattern opcode
opPnLocHFrac EQU $15 ; fractional pen position opcode
opChExtra EQU $16 ; extra for each character
; opcode $17 unused
opIFore EQU $18 ; foreColor index opcode
opIBack EQU $19 ; backColor index opcode
opRGBFgCol EQU $1A ; RGB foreColor opcode
opRGBBkCol EQU $1B ; RGB backColor opcode
opHiliteMode EQU $1C ; hilite mode flag
opHiliteColor EQU $1D ; RGB hilite color
opDefHilite EQU $1E ; Use default hilite color
opOpColor EQU $1F ; RGB OpColor for arithmetic modes
opLine EQU $20 ; line opcode
opLineFrom EQU $21 ; line from opcode
opShortLine EQU $22 ; short line opcode
opShortLineFrom EQU $23 ; short line from opcode
opLongText EQU $28 ; long text opcode
opDHText EQU $29 ; dh text opcode
opDVText EQU $2A ; dv text opcode
opDHDVText EQU $2B ; dh,dv text opcode
opFontName EQU $2C ; font name/id binding
opLineLayout EQU $2D ; script manager line-layout state
opGlyphState EQU $2E ; TrueType glyph drawing state <15>
opBitsRect EQU $90 ; copybits, rect clipped opcode
opBitsRgn EQU $91 ; copybits, rgn clipped opcode
opPackBitsRect EQU $98 ; packed copybits, rect clipped opcode
opPackBitsRgn EQU $99 ; packed copybits, rgn clipped opcode
opShortComment EQU $A0 ; short comment opcode
opLongComment EQU $A1 ; long comment opcode
opEndPic EQU $FF ; end of picture opcode
ngHeaderOp EQU $0C00 ; NuGraf Header opcode
;-----------------------------------------------
;
; COLOR QUICKDRAW EQUATES
;
nurbMask EQU $7FFF ; mask top 2 bits of rowbytes
rbMask EQU $1FFF ; mask top 3 bits of rowbytes
PMFlag EQU $8000 ; flag to say it's a new pixMap
cPortFlag EQU $C000 ; isPixMap+isCPort
pixVersion EQU $0000 ; isPixMap
qdStackXtra EQU $0640 ; stack space left for interrupts <1.4> BAL
isPixMap EQU 15 ; for testing high bit of pRowbytes
isCPort EQU 14 ; indicates that "bitmap" belongs to port
;-----------------------------------------------
;
; COLOR QUICKDRAW OFFSETS
;
;-----------------------------------------------
;
; OFFSETS WITHIN A PIXELMAP
;
pBaseAddr EQU 0 ; [long]
pNewFlag EQU pBaseAddr+4 ; [1 bit] upper bit of rowbytes is flag
pRowBytes EQU pBaseAddr+4 ; [word]
pBounds EQU pRowBytes+2 ; [rect]
IF 0 THEN ; Seems pretty Scary Bruce
pmVersion EQU pBounds+8 ; [word] pixMap version number
ENDIF
IF (&TYPE('pmVersion') = 'UNDEFINED') THEN
pmVersion EQU $E ; [word] pixMap version number
ENDIF
packType EQU pmVersion+2 ; [word] defines packing format
packSize EQU packType+2 ; [long] size of pixel data
hRes EQU packSize+4 ; [fixed] h. resolution (ppi)
vRes EQU hRes+4 ; [fixed] v. resolution (ppi)
pixelType EQU vRes+4 ; [word] defines pixel type
pixelSize EQU pixelType+2 ; [word] # bits in pixel
cmpCount EQU pixelSize+2 ; [word] # components in pixel
cmpSize EQU cmpCount+2 ; [word] # bits per field
planeBytes EQU cmpSize+2 ; [long] offset to next plane
IF 0 THEN
pmTable EQU planeBytes+4 ; [long] color map
pmReserved EQU pmTable+4 ; [long] MUST BE 0
pmRec EQU pmReserved+4 ; size of pixelMap record
ENDIF
MACRO
UNLINK
.*--------------------------------------------------------------
.*
.* UNLINK A6, STRIP PARAMETERS, AND RETURN.
.*
.* FIRST PARAM IS NUMBER OF BYTES OF STACK BIAS.
.*
UNLK A6 ;RELEASE LOCAL VARIABLES
.*
IF &Eval(&Syslst[1])=0 THEN;NO PARAMETERS ?
RTS ;THEN JUST RTS
.*
ELSEIF &Eval(&Syslst[1])=4 THEN;4 BYTES ?
MOVE.L (SP)+, (SP) ;STRIP PARAMETERS
RTS ;RETURN
ELSE
RTD_ &Eval(&Syslst[1]) ;STRIP PARAMETERS AND RETURN
ENDIF
.* <16> dc.b &Syslst[2] ;PUT OUT THE STRING
.* <16> align 2 ; align for following function or procedure <15>
.*
ENDM
MACRO
RTD_ &parm1
IF &SETTING('MACHINE') <> 'MC68000' THEN
RTD #&parm1
ELSE
IF &Eval(&parm1) = 0 THEN
rts
ELSEIF &Eval(&parm1)=4 THEN;4 BYTES ?
move.l (SP)+, (SP) ;STRIP PARAMETERS
rts ;RETURN
ELSEIF &Eval(&parm1)<=8 THEN
move.l (sp), &parm1(sp)
addq #&parm1, sp
rts
ELSE
move.l (sp), &parm1(sp)
add.w #&parm1, sp
rts
ENDIF
ENDIF
ENDM
;----- END OF ADDITION from ColorEqu.a by KON -----------
IF &TYPE('__IncludingQuickEqu__') = 'UNDEFINED' THEN
;-----------------------------------------------------
;
; QuickDraw GLOBAL VARIABLES:
;
; 52(A5) CONTAINS A POINTER TO THEPORT.
; ALL OTHER GLOBAL VARIABLES ARE EXPRESSED RELATIVE TO THEPORT.
;
GRAFGLOBALS EQU 0 ;A5 OFFSET TO GLOBALPTR
;-----------------------------------------------------------
;
; QuickDraw PUBLIC GLOBAL VARIABLES:
;
thePort EQU 0 ;GrafPtr
white EQU thePort-8 ;Pattern
black EQU white-8 ;Pattern
gray EQU black-8 ;Pattern
ltGray EQU gray-8 ;Pattern
dkGray EQU ltGray-8 ;Pattern
arrow EQU dkGray-68 ;Cursor
screenBits EQU arrow-14 ;BitMap
randSeed EQU screenBits-4 ;LONGINT
;------------------------------------------------------------
;
; QuickDraw private global variables:
;
wideOpen EQU randSeed-4 ;RgnHandle
wideMaster EQU wideOpen-4 ;RgnPtr
wideData EQU wideMaster-10 ;Fake Region
rgnBuf EQU wideData-4 ;PointsHandle
rgnIndex EQU rgnBuf-2 ;INTEGER
rgnMax EQU rgnIndex-2 ;INTEGER
playPic EQU rgnMax-4 ;Long
QDSpare0 EQU playPic-2 ;unused word
thePoly EQU QDSpare0-4 ;POLYHANDLE
polyMax EQU thePoly-2 ;INTEGER
patAlign EQU polyMax-4 ;Point
fixTxWid EQU patAlign-4 ;Fixed Point
fontPtr EQU fixTxWid-4 ;long, ^FMOutput record
playIndex EQU fontPtr-4 ;long
pnLocFixed EQU playIndex-2 ;word, horizontal pen fraction <4>
qdRunSlop EQU pnLocFixed-4 ;fixed point, Script Mgr run slop <9><10>
qdChExtra EQU qdRunSlop-4 ;fixed point, Script Mgr char extra <9><10>
QDSpare8 EQU qdChExtra-2 ;unused word <9>
QDSpare9 EQU QDSpare8-2 ;unused word
QDSpareA EQU QDSpare9-2 ;unused word
QDSpareB EQU QDSpareA-2 ;unused word
QDSpareC EQU QDSpareB-2 ;unused word
QDSpareD EQU QDSpareC-2 ;unused word
lastGrafGlob EQU QDSpareD
grafSize EQU 4-lastGrafGlob ;total size in bytes
ENDIF ; IF not including quickequ
;----------------------------------------------
;
; Trap table equates used by QuickDraw:
;
IF onMac THEN
xToolTable EQU $C00 ; start addr on macplus
ELSE
xToolTable EQU $E00 ; start addr on aladin
ENDIF
JStdArc EQU xToolTable+(4*$BD)
JStdBits EQU xToolTable+(4*$EB)
JStdComment EQU xToolTable+(4*$F1)
JStdGetPic EQU xToolTable+(4*$EE)
JStdLine EQU xToolTable+(4*$90)
JStdOval EQU xToolTable+(4*$B6)
JStdPoly EQU xToolTable+(4*$C5)
JStdPutPic EQU xToolTable+(4*$F0)
JStdRect EQU xToolTable+(4*$A0)
JStdRgn EQU xToolTable+(4*$D1)
JStdRRect EQU xToolTable+(4*$AF)
JStdText EQU xToolTable+(4*$82)
JStdTxMeas EQU xToolTable+(4*$ED)
MACRO
_StackAvail
MOVE.L $400+4*$65,A0 ;get address of stack space routine
JSR (A0) ;get stack space into D0 and return
ENDM
;_______________________________________________________________________
;
; Equates for setting trap option bits
;
;_______________________________________________________________________
IF forROM THEN
immed EQU $200 ; execute immediately, bypass I/O queue
clear EQU $200 ;
async EQU $400 ; asynchronous, don't wait for completion
sys EQU $400 ;
autoPop EQU $400 ; set autopop bit
ENDIF
;----------------------------------------------
;
; Trap Macros used by QuickDraw:
;
MACRO
_MLongMul
DC.W ($A867)
ENDM
MACRO
_MFixMul
DC.W ($A868)
ENDM
MACRO
_MFixRatio
DC.W ($A869)
ENDM
IF forROM THEN
_NewHandle OPWORD $A122
_DisposHandle OPWORD $A023
_SetHandleSize OPWORD $A024
_GetHandleSize OPWORD $A025
_HLock OPWORD $A029
_HUnLock OPWORD $A02A
ENDIF
MACRO
_MSysError
DC.W ($A9C9)
ENDM
MACRO
_GetScrnBits
DC.W ($A833) ;new trap number
ENDM
MACRO
_SwapFont
MOVE.L $8E0,A0 ;get pointer to FMSwapFont
JSR (A0) ;call font manager
ENDM