# BuildSystemHeader added automatically
# $Header: [Makefile,v 1.2 91/07/10 17:53:19 kalmin Exp ]$
UTOPDIR= ..
CHECK_ENV= $$N_CHECKENV
HOME= ${UTOPDIR}
CC= ${UTOPDIR}/$$N_COMPILER
AS= ${UTOPDIR}/$$N_ASSEMBLER
LD= ${UTOPDIR}/$$N_LOADER
XR= ${UTOPDIR}/$$N_BIN/prxref
ML= ${UTOPDIR}/$$N_BIN/mlink
UP= ${UTOPDIR}/$$N_BIN/upostproc
IFLAGS= -I$$N_INCLUDE -I$$N_TINCLUDE
DEBUG=
MODE= -D$$N_MODE
CFLAGS= $$N_COMPILER_FLAGS ${MODE} ${DEBUG} ${IFLAGS} 
AFLAGS= $$N_ASSEMBLER_FLAGS
LFLAGS= $$N_LOADER_FLAGS
EFILE= $$N_EFILE
XREF= ${EFILE}.xref
SUFX= ${N_SUFFIX}
SYS_PATH= system
SYSMKFLAG= ${SYS_PATH}/makeflag
IOMKFLAG= io/makeflag
3DMKFLAG= 3dlib/makeflag
3DPRIMFLAG= 3dprim/makeflag
MATHMKFLAG= math/makeflag
OPMKFLAG= opcodes/makeflag
CHOPMKFLAG= chopcodes/makeflag
UTILMKFLAG= util/makeflag

BIN= ${UTOPDIR}/$$N_BIN
LIB= ${UTOPDIR}/$$N_LIB
INSTALL= ${UTOPDIR}/$$N_TINSTALL ${BIN}

MKFLAGS= \
	${SYSMKFLAG} \
	${IOMKFLAG} \
	${3DMKFLAG} \
	${3DPRIMFLAG} \
	${MATHMKFLAG} \
	${OPMKFLAG} \
	${CHOPMKFLAG} \
	${UTILMKFLAG} \
	${VARSMKFLAG}

INCLUDES= \
	include/3max.h \
	include/Clip.h \
	include/DMA.h \
	include/DMAsim.h \
	include/ValSB.h \
	include/Error.h \
	include/Fcns.h \
	include/Globals.h \
	include/Graphics_Mem.h \
	include/IO.h \
	include/Macros.h \
	include/N10.h \
	include/N10const.h \
	include/N10proto.h \
	include/N10protostr.h \
	include/Pgon.h \
	include/SharedFile.h \
	include/Stamp.h \
	include/StampMacros.h \
	include/StampSim.h \
	include/StampSimfcns.h \
	include/asm.h \
	include/cs_kdb.h \
	include/psl.h \
	include/reg.h \
	include/trap.h \
	include/udb.h \
	include/uld.h \
	include/uprof.h \
	include/usave.h

IOSRCS= \
	io/InitPktMgmt.c \
	io/GeneralSendPacket.c \
	io/FastSendPacket.c \
	io/InputFaultHndlr.c \
	io/ExecBufFaultHndlr.c \
	io/SlowReadAndCopy.c \
	io/Discard.c \
	io/QWait.c \
	io/ValSendPacket.c \
	io/PhysDMAReadWords.c \
	io/PhysDMAWriteWords.c \
	io/DMAReadWords.c \
	io/DMAWriteWords.c

3DLIBSRCS= \
	3dlib/OScreenMap.c \
	3dlib/OScreenMapZ.c \
	3dlib/ScreenMap.c \
	3dlib/ScreenMapZ.c \
	3dlib/ValScreenMap.c \
	3dlib/ValLineColor.c \
	3dlib/ValMatProj.c \
	3dlib/ValColorMap.c \
	3dlib/Cull.c \
	3dlib/TSCullOrtho.c \
	3dlib/TSCullPersp.c \
	3dlib/ClipRoutines.c \
	3dlib/OOutCode.c \
	3dlib/OOutCode.asm \
	3dlib/ClipPolyline.c \
	3dlib/ClipPolygon.c \
	3dlib/ClipTStrip.c \
	3dlib/OClipTest.asm \
	3dlib/OClipTest.c \
	3dlib/ClipToVal.c \
	3dlib/ClipTest.asm \
	3dlib/ClipTest.c \
	3dlib/MirrorHpts.c \
	3dlib/FColorSpaceMap.c \
	3dlib/ColorSpaceMap.c \
	3dlib/ColorRangeMap.c \
	3dlib/DepthCue.c \
	3dlib/ODepthCue.c \
	3dlib/ValDQ.c \
	3dlib/Shade.c \
	3dlib/ShadeInWCS.c \
	3dlib/ValShade.c \
	3dlib/OPickScreen.c \
	3dlib/PickScreen.c \
	3dlib/Nop.c \
	3dlib/FlushPending.asm

3DPRIMSRCS= \
	3dprim/ConvexPgon.c \
	3dprim/ConvexPgon.asm \
	3dprim/OConvexPgon.asm \
	3dprim/SlowPolygonPath.asm \
	3dprim/SlowPolygonPath.c \
	3dprim/StampPgonWE.c \
	3dprim/StampPgonWEInterface.asm \
	3dprim/Markers.c \
	3dprim/PlineFlat.c \
	3dprim/PlineSmooth.c \
	3dprim/MustClipPline.c \
	3dprim/StampLineMesh.c \
	3dprim/StampLineRGBMesh.c \
	3dprim/StampLineZMesh.c \
	3dprim/StampLineRGBZMesh.c \
	3dprim/StampLineMeshAA.c \
	3dprim/StampLinePattern.c \
	3dprim/StampTriIndRGBZBlend.c \
	3dprim/StampLineMesh.asm \
	3dprim/StampUniLineMesh.asm \
	3dprim/StampTriIndRGBZmult.asm \
	3dprim/StampMarker.c \
	3dprim/ValFlag.c \
	3dprim/ValPlin.c \
	3dprim/ValPgon.c \
	3dprim/ValMarkers.c \
	3dprim/ValTriStrip.c \
	3dprim/StampTStripBlend.c \
	3dprim/StampHollowAA.c \
	3dprim/StampHollow.c \
	3dprim/StampHollowZ.c \
	3dprim/StampEdge.c \
	3dprim/StampEdgeZ.c \
	3dprim/PlaneEqs.c \
	3dprim/TStrip.c \
	3dprim/AdvanceTSPointers.c \
	3dprim/StampTStrip.c \
	3dprim/StampTStripZ.c \
	3dprim/StampTStripRGB.c \
	3dprim/StampTStripRGBZ.c \
	3dprim/StampTStripHollow.c \
	3dprim/StampTStripWithEdges.c \
	3dprim/StampTriIndRGBZmultRange.c \
	3dprim/StampTStripRGBRange.c \
	3dprim/StampTStripRGBZRange.c \
	3dprim/DeltaColorNegative.c \
	3dprim/SlowFlatShadeCM.c \
	3dprim/SlowSmoothShadeCM.c \
	3dprim/FlatShadeCM.c \
	3dprim/SmoothShadeCM.c \
	3dprim/TSClipShade.c \
	3dprim/ValPgonPtrs.c

MATHSRCS= \
	math/MatConcat.c \
	math/MatCopy.c \
	math/MatNorm.c \
	math/OTransform34.c \
	math/Transform33.c \
	math/Transform34.c \
	math/VecTform.c \
	math/Vector.c \
	math/Ipow.c \
	math/Invert44.c \
	math/fOrthoProj.c \
	math/transpose.c \
	math/fcos.c \
	math/fsqrt.c \
	math/idiv.asm

OPSRCS= \
	opcodes/HaltN10.c \
	opcodes/Flush.c \
	opcodes/ReadSRAM.c \
	opcodes/WriteSRAM.c \
	opcodes/PutData.c \
	opcodes/PassPacket.c \
	opcodes/ExecuteBuffer.c \
	opcodes/LoadClipList.c \
	opcodes/LoadState.c \
	opcodes/UseStateBlock.c \
	opcodes/PolyMarker.c \
	opcodes/Polyline.c \
	opcodes/defaultPlin.c \
	opcodes/cpvPlin.c \
	opcodes/cppPlin.c \
	opcodes/cpvcppPlin.c \
	opcodes/cpvNoTerpPlin.c \
	opcodes/Polygon.c \
	opcodes/TriangleStrip.c \
	opcodes/SlowTriangleStrip.c \
	opcodes/mainTriangleStrip.c \
	opcodes/Validate.c \
	opcodes/ValPgonInput.c \
	opcodes/dispatch.c \
	opcodes/LoadPick.c \
	opcodes/MultiPolygon.c \
	opcodes/SavePick.c \
	opcodes/SaveState.c \
	opcodes/FunctionTable.c \
	opcodes/NotTri.c \
	opcodes/Pack.c \
	opcodes/UnPack.c

CHOPSRCS = \
	chopcodes/ChangeStAttr.c \
	chopcodes/ChangeStMatrix.c \
	chopcodes/ChangeStDepthCue.c \
	chopcodes/ChangeStClipListNum.c \
	chopcodes/ChangeStLineWidth.c \
	chopcodes/ChangeStLineColor.c

UTILSRCS= \
	util/declare.c \
	util/wcopy.c


IOOBJS= \
	io/InitPktMgmt.${SUFX} \
	io/SlowReadAndCopy.${SUFX} \
	io/Discard.${SUFX} \
	io/GeneralSendPacket.${SUFX} \
	io/FastSendPacket.${SUFX} \
	io/InputFaultHndlr.${SUFX} \
	io/ExecBufFaultHndlr.${SUFX} \
	io/QWait.${SUFX} \
	io/ValSendPacket.${SUFX} \
	io/PhysDMAReadWords.${SUFX} \
	io/PhysDMAWriteWords.${SUFX} \
	io/DMAReadWords.${SUFX} \
	io/DMAWriteWords.${SUFX}

3DLIBOBJS= \
	3dlib/OScreenMap.${SUFX} \
	3dlib/OScreenMapZ.${SUFX} \
	3dlib/ScreenMap.${SUFX} \
	3dlib/ScreenMapZ.${SUFX} \
	3dlib/ValScreenMap.${SUFX} \
	3dlib/ValLineColor.${SUFX} \
	3dlib/ValMatProj.${SUFX} \
	3dlib/ValColorMap.${SUFX} \
	3dlib/Cull.${SUFX} \
	3dlib/TSCullOrtho.${SUFX} \
	3dlib/TSCullPersp.${SUFX} \
	3dlib/ClipRoutines.${SUFX} \
	3dlib/OOutCode.${SUFX} \
	3dlib/ClipPolyline.${SUFX} \
	3dlib/ClipPolygon.${SUFX} \
	3dlib/ClipTStrip.${SUFX} \
	3dlib/OClipTest.${SUFX} \
	3dlib/ClipToVal.${SUFX} \
	3dlib/ClipTest.${SUFX} \
	3dlib/MirrorHpts.${SUFX} \
	3dlib/FColorSpaceMap.${SUFX} \
	3dlib/ColorSpaceMap.${SUFX} \
	3dlib/ColorRangeMap.${SUFX} \
	3dlib/DepthCue.${SUFX} \
	3dlib/ODepthCue.${SUFX} \
	3dlib/ValDQ.${SUFX} \
	3dlib/Shade.${SUFX} \
	3dlib/ShadeInWCS.${SUFX} \
	3dlib/ShadeNoShading.${SUFX} \
	3dlib/ShadeClipColor.${SUFX} \
	3dlib/ShadeLightOff.${SUFX} \
	3dlib/ShadeAmbientLight.${SUFX} \
	3dlib/ShadeVectorLight.${SUFX} \
	3dlib/ShadePointLight.${SUFX} \
	3dlib/ShadeSpotLight.${SUFX} \
	3dlib/ShadeSpecular.${SUFX} \
	3dlib/ValShade.${SUFX} \
	3dlib/OPickScreen.${SUFX} \
	3dlib/PickScreen.${SUFX} \
	3dlib/Nop.${SUFX} \
	3dlib/FlushPending.${SUFX}

3DPRIMOBJS= \
	3dprim/ConvexPgon.${SUFX} \
	3dprim/OConvexPgon.${SUFX} \
	3dprim/ConvexPgonInterface.${SUFX} \
	3dprim/SlowPolygonPath.${SUFX} \
	3dprim/StampPgonWE.${SUFX} \
	3dprim/StampPgonWEInterface.${SUFX} \
	3dprim/Markers.${SUFX} \
	3dprim/PlineSmooth.${SUFX} \
	3dprim/PlineFlat.${SUFX} \
	3dprim/MustClipPline.${SUFX} \
	3dprim/StampLineMesh.${SUFX} \
	3dprim/StampUniLineMesh.${SUFX} \
	3dprim/StampLineRGBMesh.${SUFX} \
	3dprim/StampLineZMesh.${SUFX} \
	3dprim/StampLineRGBZMesh.${SUFX} \
	3dprim/StampLineMeshAA.${SUFX} \
	3dprim/StampLinePattern.${SUFX} \
	3dprim/StampTriIndRGBZmult.${SUFX} \
	3dprim/StampTriIndRGBZBlend.${SUFX} \
	3dprim/StampTriIndRGBZmultRange.${SUFX} \
	3dprim/StampTStripRGBRange.${SUFX} \
	3dprim/StampTStripBlend.${SUFX} \
	3dprim/StampTStripRGBZRange.${SUFX} \
	3dprim/StampMarker.${SUFX} \
	3dprim/DeltaColorNegative.${SUFX} \
	3dprim/ValFlag.${SUFX} \
	3dprim/ValPlin.${SUFX} \
	3dprim/ValPgon.${SUFX} \
	3dprim/ValMarkers.${SUFX} \
	3dprim/ValTriStrip.${SUFX} \
	3dprim/StampHollowAA.${SUFX} \
	3dprim/StampHollow.${SUFX} \
	3dprim/StampHollowZ.${SUFX} \
	3dprim/StampEdge.${SUFX} \
	3dprim/StampEdgeZ.${SUFX} \
	3dprim/PlaneEqs.${SUFX} \
	3dprim/TStrip.${SUFX} \
	3dprim/AdvanceTSPointers.${SUFX} \
	3dprim/StampTStrip.${SUFX} \
	3dprim/StampTStripZ.${SUFX} \
	3dprim/StampTStripRGB.${SUFX} \
	3dprim/StampTStripRGBZ.${SUFX} \
	3dprim/StampTStripHollow.${SUFX} \
	3dprim/StampTStripWithEdges.${SUFX} \
	3dprim/TSComputeFacetNormals.${SUFX} \
	3dprim/SlowFlatShadeCM.${SUFX} \
	3dprim/SlowSmoothShadeCM.${SUFX} \
	3dprim/FlatShadeCM.${SUFX} \
	3dprim/SmoothShadeCM.${SUFX} \
	3dprim/TSClipShade.${SUFX} \
	3dprim/ValPgonPtrs.${SUFX}

MATHOBJS= \
	math/MatConcat.${SUFX} \
	math/MatCopy.${SUFX} \
	math/MatNorm.${SUFX} \
	math/OTransform34.${SUFX} \
	math/Transform33.${SUFX} \
	math/Transform34.${SUFX} \
	math/VecTform.${SUFX} \
	math/Vector.${SUFX} \
	math/Ipow.${SUFX} \
	math/Invert44.${SUFX} \
	math/fOrthoProj.${SUFX} \
	math/transpose.${SUFX} \
	math/fcos.${SUFX} \
	math/fsqrt.${SUFX} \
	math/idiv.${SUFX}

OPOBJS= \
	${OPOBJS_ROOTS} \
	${OPOBJS_NO_ROOTS}

CHOPOBJS= \
	chopcodes/ChangeStAttr.${SUFX} \
	chopcodes/ChangeStMatrix.${SUFX} \
	chopcodes/ChangeStDepthCue.${SUFX} \
	chopcodes/ChangeStClipListNum.${SUFX} \
	chopcodes/ChangeStLineColor.${SUFX} \
	chopcodes/ChangeStLineWidth.${SUFX}

OPOBJS_ROOTS = \
	opcodes/Polygon.${SUFX} \
	opcodes/Polyline.${SUFX} \
	opcodes/TriangleStrip.${SUFX}

OPOBJS_NO_ROOTS = \
	opcodes/HaltN10.${SUFX} \
	opcodes/Flush.${SUFX} \
	opcodes/ReadSRAM.${SUFX} \
	opcodes/WriteSRAM.${SUFX} \
	opcodes/PutData.${SUFX} \
	opcodes/PassPacket.${SUFX} \
	opcodes/ExecuteBuffer.${SUFX} \
	opcodes/LoadClipList.${SUFX} \
	opcodes/LoadState.${SUFX} \
	opcodes/LoadLights.${SUFX} \
	opcodes/UseStateBlock.${SUFX} \
	opcodes/PolyMarker.${SUFX} \
	opcodes/SlowTriangleStrip.${SUFX} \
	opcodes/mainTriangleStrip.${SUFX} \
	opcodes/Validate.${SUFX} \
	opcodes/ValPgonInput.${SUFX} \
	opcodes/dispatch.${SUFX} \
	opcodes/LoadPick.${SUFX} \
	opcodes/MultiPolygon.${SUFX} \
	opcodes/SavePick.${SUFX} \
	opcodes/SaveState.${SUFX} \
	opcodes/FunctionTable.${SUFX} \
	opcodes/defaultPlin.${SUFX} \
	opcodes/cpvPlin.${SUFX} \
	opcodes/cppPlin.${SUFX} \
	opcodes/cpvcppPlin.${SUFX} \
	opcodes/cpvNoTerpPlin.${SUFX} \
	opcodes/NotTri.${SUFX} \
	opcodes/Pack.${SUFX} \
	opcodes/UnPack.${SUFX}

UTILOBJS= \
	util/declare.${SUFX} \
	util/wcopy.${SUFX}

MAINOBJS= \
	${IOOBJS} \
	${3DLIBOBJS} \
	${3DPRIMOBJS} \
	${MATHOBJS} \
	${OPOBJS} \
	${CHOPOBJS} \
	${UTILOBJS} \
	${VAROBJS}

MAGICOBJS= \
	${IOOBJS} \
	${3DLIBOBJS} \
	${3DPRIMOBJS} \
	${MATHOBJS} \
	${OPOBJS_NO_ROOTS} \
	${CHOPOBJS} \
	${UTILOBJS} \
	${VAROBJS}

START = \
	${HOME}/src/system/Start.${SUFX}

SYSSRCS = \
	${SYS_PATH}/PageTables.asm \
	${SYS_PATH}/Globals.asm \
	${SYS_PATH}/trap.asm \
	${SYS_PATH}/hardtrap.asm \
	${SYS_PATH}/callstack.asm \
	${SYS_PATH}/pstart.asm \
	${SYS_PATH}/TrapHandler.c \
	${SYS_PATH}/flushdata.asm \
	${SYS_PATH}/RestoreSt.asm \
	${SYS_PATH}/SaveSt.asm \
	${SYS_PATH}/brkpt.asm \
	${SYS_PATH}/HostPhys.c

MAGICSYSOBJS = \
	${SYS_PATH}/Globals.${SUFX} \
	${SYS_PATH}/trap.${SUFX} \
	${SYS_PATH}/callstack.${SUFX} \
	${SYS_PATH}/pstart.${SUFX} \
	${SYS_PATH}/TrapHandler.${SUFX} \
	${SYS_PATH}/flushdata.${SUFX} \
	${SYS_PATH}/RestoreSt.${SUFX} \
	${SYS_PATH}/SaveSt.${SUFX} \
	${SYS_PATH}/brkpt.${SUFX} \
	${SYS_PATH}/HostPhys.${SUFX}

SYSOBJS = \
	${SYS_PATH}/PageTables.${SUFX} \
	${SYS_PATH}/Globals.${SUFX} \
	${SYS_PATH}/hardtrap.${SUFX} \
	${SYS_PATH}/trap.${SUFX} \
	${SYS_PATH}/callstack.${SUFX} \
	${SYS_PATH}/pstart.${SUFX} \
	${SYS_PATH}/TrapHandler.${SUFX} \
	${SYS_PATH}/flushdata.${SUFX} \
	${SYS_PATH}/RestoreSt.${SUFX} \
	${SYS_PATH}/SaveSt.${SUFX} \
	${SYS_PATH}/brkpt.${SUFX} \
	${SYS_PATH}/HostPhys.${SUFX}


all: checkenv
	@( export TMP ; TMP=install ; make doit_all "SUFX=${SUFX}")
	make ${EFILE} "SUFX=${SUFX}"

install: checkenv
	@( export TMP ; TMP=install ; make doit_all "SUFX=${SUFX}")
	make ${EFILE} "SUFX=${SUFX}"

notest: checkenv
	@( export TMP ; TMP=install ; make doit_tools doit_ucode "SUFX=${SUFX}")
	make ${EFILE} "SUFX=${SUFX}"

clean: checkenv
	-\rm -f core *.o *.${SUFX} ${EFILE} ${XREF} ${BIN}/* ${LIB}/* ${MKFLAGS}
	@( export TMP ; TMP=clean ; make doit_all  "SUFX=${SUFX}")

checkenv:
	@${CHECK_ENV}

ucode: checkenv
	@( export TMP ; TMP=install ; make doit_ucode "SUFX=${SUFX}")
	make ${EFILE} "SUFX=${SUFX}"

uclean: checkenv
	-\rm -f ${EFILE} ${BIN}/${EFILE} {MKFLAGS}
	@( export TMP ; TMP=clean ; make doit_ucode "SUFX=${SUFX}")

debug: checkenv
	@( export TMP ; TMP=debug ; make doit_all "SUFX=${SUFX}" )
	make ${EFILE}

depend:
	@( export TMP ; TMP=depend ; make doit_all "SUFX=${SUFX}")


quick: checkenv
	make ${EFILE} "SUFX=${SUFX}"

qlink: checkenv
	make ${N_EFILE}${LINK} "SUFX=${SUFX}"


doit_test:
	cd tools/yacc  ; make $$TMP "SUFX=${SUFX}"
	cd tools/udb   ; make $$TMP "SUFX=${SUFX}"
	cd test        ; make $$TMP "SUFX=${SUFX}"

doit_tools:
	cd tools       ; make $$TMP "SUFX=${SUFX}"
	cd dev         ; make $$TMP "SUFX=${SUFX}"
	cd sim         ; make $$TMP "SUFX=${SUFX}"

doit_ucode:
	cd include     ; make $$TMP "SUFX=${SUFX}"
	cd io          ; make $$TMP "SUFX=${SUFX}"
	cd math        ; make $$TMP "SUFX=${SUFX}"
	cd 3dlib       ; make $$TMP "SUFX=${SUFX}"
	cd 3dprim      ; make $$TMP "SUFX=${SUFX}"
	cd util        ; make $$TMP "SUFX=${SUFX}"
	cd opcodes     ; make $$TMP "SUFX=${SUFX}"
	cd chopcodes   ; make $$TMP "SUFX=${SUFX}"
	cd system      ; make $$TMP "SUFX=${SUFX}"

doit_all:
	@make doit_tools "SUFX=${SUFX}"
	@make doit_ucode "SUFX=${SUFX}"
	@make doit_test "SUFX=${SUFX}"


${SYSMKFLAG}: ${SYSSRCS} system/Start.c ${INCLUDES}
	cd ${SYS_PATH} ; make "SUFX=${SUFX}"

${IOMKFLAG}: ${IOSRCS} ${INCLUDES}
	cd io ; make "SUFX=${SUFX}"

${3DMKFLAG}: ${3DLIBSRCS} ${INCLUDES}
	cd 3dlib ; make "SUFX=${SUFX}"

${3DPRIMFLAG}: ${3DPRIMSRCS} ${INCLUDES}
	cd 3dprim ; make "SUFX=${SUFX}"

${MATHMKFLAG}: ${MATHSRCS} ${INCLUDES}
	cd math ; make "SUFX=${SUFX}"

${OPMKFLAG}: ${OPSRCS} ${INCLUDES}
	cd opcodes ; make "SUFX=${SUFX}"

${CHOPMKFLAG}: ${CHOPSRCS} ${INCLUDES}
	cd chopcodes ; make "SUFX=${SUFX}"

${UTILMKFLAG}: ${UTILSRCS} ${INCLUDES}
	cd util ; make "SUFX=${SUFX}"


ds5k200.ucode: ${MKFLAGS}
	make xref magic "SUFX=${SUFX}"

xref:
	\rm -f ${XREF}
	@${XR} -p paths.link -x ${XREF} ${MAINOBJS} ${SYSOBJS} ${START}

ds5k200.ucodelink:
	\rm -f ${EFILE}
	@${LD} -o ${EFILE} -k -T 0x018f00 -d 0x004000 -M0 > map.860 -e pstart ${SYSOBJS} ${START} ${MAINOBJS}
	${UP} -f ${EFILE} -t 0x204f00 -d 0x21a000
	${INSTALL} ${EFILE}

magic:
	\rm -f ${EFILE}
	@${ML} -o ${EFILE} -x ${XREF} -ld ${LD} -as ${AS} -T 0x018f00 -d 0x004000 -r opcodes/Polygon.${SUFX} -r opcodes/Polyline.${SUFX} -r opcodes/TriangleStrip.${SUFX} ${MAGICSYSOBJS} ${START} ${MAGICOBJS} 2> linkerr
	${UP} -f ${EFILE} -t 0x204f00 -d 0x21a000
	${INSTALL} ${EFILE}
