From 5331adb06a25531433dccbe914b8eaee4df93f23 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Fri, 9 Aug 2019 22:58:08 -0400 Subject: [PATCH] Update to the latest build engine. --- CurtaSim.xcodeproj/project.pbxproj | 362 +++++++++++------- .../UserInterfaceState.xcuserstate | Bin 33695 -> 19116 bytes .../xcshareddata/xcschemes/CurtaSim.xcscheme | 12 + .../xcschemes/xcschememanagement.plist | 14 +- CurtaSim/Makefile | 6 +- CurtaSim/make/DevApple.vii | Bin 6608 -> 6604 bytes CurtaSim/make/V2Make.scpt | Bin 4900 -> 4754 bytes CurtaSim/make/createDiskImage | 8 +- CurtaSim/make/errorFilter.sh | 4 +- CurtaSim/make/head.mk | 33 +- CurtaSim/make/tail.mk | 110 +++--- 11 files changed, 356 insertions(+), 193 deletions(-) diff --git a/CurtaSim.xcodeproj/project.pbxproj b/CurtaSim.xcodeproj/project.pbxproj index 14bcd3c..5185066 100644 --- a/CurtaSim.xcodeproj/project.pbxproj +++ b/CurtaSim.xcodeproj/project.pbxproj @@ -7,141 +7,149 @@ objects = { /* Begin PBXBuildFile section */ - 9D24616C20D8B2AE00227E1D /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 9D24616B20D8B2AE00227E1D /* Makefile */; }; - 9D24616F20D8B2AE00227E1D /* AppleCommander.jar in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D24616E20D8B2AE00227E1D /* AppleCommander.jar */; }; - 9D24617120D8B2AE00227E1D /* createDiskImage in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D24617020D8B2AE00227E1D /* createDiskImage */; }; - 9D24617320D8B2AE00227E1D /* DevApple.vii in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D24617220D8B2AE00227E1D /* DevApple.vii */; }; - 9D24617520D8B2AE00227E1D /* dos33_template.dsk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D24617420D8B2AE00227E1D /* dos33_template.dsk */; }; - 9D24617720D8B2AE00227E1D /* head.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D24617620D8B2AE00227E1D /* head.mk */; }; - 9D24617920D8B2AE00227E1D /* prodos_template.dsk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D24617820D8B2AE00227E1D /* prodos_template.dsk */; }; - 9D24617B20D8B2AE00227E1D /* tail.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D24617A20D8B2AE00227E1D /* tail.mk */; }; - 9D24617D20D8B2AE00227E1D /* V2Make.scpt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D24617C20D8B2AE00227E1D /* V2Make.scpt */; }; - 9D24618020D8B2AE00227E1D /* CurtaSim.xcscheme in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9D24617F20D8B2AE00227E1D /* CurtaSim.xcscheme */; }; - 9D24619220D8B30C00227E1D /* curtaModel.c in Sources */ = {isa = PBXBuildFile; fileRef = 9D24618B20D8B30B00227E1D /* curtaModel.c */; }; - 9D24619320D8B30C00227E1D /* joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = 9D24618E20D8B30C00227E1D /* joystick.c */; }; - 9D24619420D8B30C00227E1D /* curta.c in Sources */ = {isa = PBXBuildFile; fileRef = 9D24618F20D8B30C00227E1D /* curta.c */; }; - 9D24619520D8B30C00227E1D /* curtaUI.c in Sources */ = {isa = PBXBuildFile; fileRef = 9D24619120D8B30C00227E1D /* curtaUI.c */; }; - 9D3A3EC421783BEA00BE74C7 /* bastokenizer-tools-bt-0.2.0.jar in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D3A3EC321783BEA00BE74C7 /* bastokenizer-tools-bt-0.2.0.jar */; }; + 9DAEA04822FE69490067692F /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 9DAEA04722FE69490067692F /* Makefile */; }; + 9DAEA04B22FE69490067692F /* AppleCommander.jar in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DAEA04A22FE69490067692F /* AppleCommander.jar */; }; + 9DAEA04D22FE69490067692F /* bastokenizer-tools-bt-0.2.0.jar in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DAEA04C22FE69490067692F /* bastokenizer-tools-bt-0.2.0.jar */; }; + 9DAEA04F22FE69490067692F /* createDiskImage in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAEA04E22FE69490067692F /* createDiskImage */; }; + 9DAEA05122FE69490067692F /* bt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAEA05022FE69490067692F /* bt */; }; + 9DAEA05322FE69490067692F /* DevApple.vii in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAEA05222FE69490067692F /* DevApple.vii */; }; + 9DAEA05522FE69490067692F /* dos33_template.dsk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAEA05422FE69490067692F /* dos33_template.dsk */; }; + 9DAEA05722FE69490067692F /* errorFilter.sh in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAEA05622FE69490067692F /* errorFilter.sh */; }; + 9DAEA05922FE69490067692F /* head.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAEA05822FE69490067692F /* head.mk */; }; + 9DAEA05B22FE69490067692F /* prodos_template.dsk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAEA05A22FE69490067692F /* prodos_template.dsk */; }; + 9DAEA05D22FE69490067692F /* tail.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAEA05C22FE69490067692F /* tail.mk */; }; + 9DAEA05F22FE69490067692F /* V2Make.scpt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAEA05E22FE69490067692F /* V2Make.scpt */; }; + 9DAEA06222FE69490067692F /* CurtaSim.xcscheme in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAEA06122FE69490067692F /* CurtaSim.xcscheme */; }; + 9DAEA07B22FE696C0067692F /* curtaModel.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DAEA07422FE696C0067692F /* curtaModel.c */; }; + 9DAEA07C22FE696C0067692F /* curta.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DAEA07622FE696C0067692F /* curta.c */; }; + 9DAEA07D22FE696C0067692F /* curtaUI.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DAEA07822FE696C0067692F /* curtaUI.c */; }; + 9DAEA07E22FE696C0067692F /* joystick.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DAEA07A22FE696C0067692F /* joystick.c */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ - 9D24616420D8B2AE00227E1D /* CopyFiles */ = { + 9DAEA04122FE69490067692F /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = /usr/share/man/man1/; dstSubfolderSpec = 0; files = ( - 9D24617120D8B2AE00227E1D /* createDiskImage in CopyFiles */, - 9D24617320D8B2AE00227E1D /* DevApple.vii in CopyFiles */, - 9D24617520D8B2AE00227E1D /* dos33_template.dsk in CopyFiles */, - 9D24617B20D8B2AE00227E1D /* tail.mk in CopyFiles */, - 9D24617D20D8B2AE00227E1D /* V2Make.scpt in CopyFiles */, - 9D24617920D8B2AE00227E1D /* prodos_template.dsk in CopyFiles */, - 9D24617720D8B2AE00227E1D /* head.mk in CopyFiles */, - 9D24618020D8B2AE00227E1D /* CurtaSim.xcscheme in CopyFiles */, + 9DAEA05B22FE69490067692F /* prodos_template.dsk in CopyFiles */, + 9DAEA05122FE69490067692F /* bt in CopyFiles */, + 9DAEA05522FE69490067692F /* dos33_template.dsk in CopyFiles */, + 9DAEA04F22FE69490067692F /* createDiskImage in CopyFiles */, + 9DAEA05F22FE69490067692F /* V2Make.scpt in CopyFiles */, + 9DAEA05922FE69490067692F /* head.mk in CopyFiles */, + 9DAEA05322FE69490067692F /* DevApple.vii in CopyFiles */, + 9DAEA06222FE69490067692F /* CurtaSim.xcscheme in CopyFiles */, + 9DAEA05722FE69490067692F /* errorFilter.sh in CopyFiles */, + 9DAEA05D22FE69490067692F /* tail.mk in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 1; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 9D24616620D8B2AE00227E1D /* doNotBuild */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = doNotBuild; sourceTree = BUILT_PRODUCTS_DIR; }; - 9D24616B20D8B2AE00227E1D /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 9D24616E20D8B2AE00227E1D /* AppleCommander.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = AppleCommander.jar; path = make/AppleCommander.jar; sourceTree = ""; }; - 9D24617020D8B2AE00227E1D /* createDiskImage */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = createDiskImage; path = make/createDiskImage; sourceTree = ""; }; - 9D24617220D8B2AE00227E1D /* DevApple.vii */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = DevApple.vii; path = make/DevApple.vii; sourceTree = ""; }; - 9D24617420D8B2AE00227E1D /* dos33_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = dos33_template.dsk; path = make/dos33_template.dsk; sourceTree = ""; }; - 9D24617620D8B2AE00227E1D /* head.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = head.mk; path = make/head.mk; sourceTree = ""; }; - 9D24617820D8B2AE00227E1D /* prodos_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = prodos_template.dsk; path = make/prodos_template.dsk; sourceTree = ""; }; - 9D24617A20D8B2AE00227E1D /* tail.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = tail.mk; path = make/tail.mk; sourceTree = ""; }; - 9D24617C20D8B2AE00227E1D /* V2Make.scpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = V2Make.scpt; path = make/V2Make.scpt; sourceTree = ""; }; - 9D24617F20D8B2AE00227E1D /* CurtaSim.xcscheme */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = CurtaSim.xcscheme; path = CurtaSim.xcodeproj/xcshareddata/xcschemes/CurtaSim.xcscheme; sourceTree = SOURCE_ROOT; }; - 9D24618920D8B2C000227E1D /* curta.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = curta.png; sourceTree = ""; }; - 9D24618A20D8B2C000227E1D /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 9D24618B20D8B30B00227E1D /* curtaModel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = curtaModel.c; sourceTree = ""; }; - 9D24618C20D8B30B00227E1D /* curtaUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = curtaUI.h; sourceTree = ""; }; - 9D24618D20D8B30B00227E1D /* curtaModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = curtaModel.h; sourceTree = ""; }; - 9D24618E20D8B30C00227E1D /* joystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = joystick.c; sourceTree = ""; }; - 9D24618F20D8B30C00227E1D /* curta.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = curta.c; sourceTree = ""; }; - 9D24619020D8B30C00227E1D /* joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = joystick.h; sourceTree = ""; }; - 9D24619120D8B30C00227E1D /* curtaUI.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = curtaUI.c; sourceTree = ""; }; - 9D3A3EC221783BEA00BE74C7 /* bt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = bt; path = make/bt; sourceTree = ""; }; - 9D3A3EC321783BEA00BE74C7 /* bastokenizer-tools-bt-0.2.0.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = "bastokenizer-tools-bt-0.2.0.jar"; path = "make/bastokenizer-tools-bt-0.2.0.jar"; sourceTree = ""; }; - 9D45ABB620E1E564008C3F16 /* errorFilter.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = errorFilter.sh; path = make/errorFilter.sh; sourceTree = ""; }; - 9D65A1BF20DCA472004268B7 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + 9DAEA03B22FE69490067692F /* CurtaSim */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CurtaSim; sourceTree = BUILT_PRODUCTS_DIR; }; + 9DAEA03E22FE69490067692F /* CurtaSim.dsk */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = CurtaSim.dsk; sourceTree = BUILT_PRODUCTS_DIR; }; + 9DAEA04322FE69490067692F /* doNotBuild */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = doNotBuild; sourceTree = BUILT_PRODUCTS_DIR; }; + 9DAEA04722FE69490067692F /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + 9DAEA04A22FE69490067692F /* AppleCommander.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = AppleCommander.jar; path = make/AppleCommander.jar; sourceTree = ""; }; + 9DAEA04C22FE69490067692F /* bastokenizer-tools-bt-0.2.0.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = "bastokenizer-tools-bt-0.2.0.jar"; path = "make/bastokenizer-tools-bt-0.2.0.jar"; sourceTree = ""; }; + 9DAEA04E22FE69490067692F /* createDiskImage */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = createDiskImage; path = make/createDiskImage; sourceTree = ""; }; + 9DAEA05022FE69490067692F /* bt */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = bt; path = make/bt; sourceTree = ""; }; + 9DAEA05222FE69490067692F /* DevApple.vii */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = DevApple.vii; path = make/DevApple.vii; sourceTree = ""; }; + 9DAEA05422FE69490067692F /* dos33_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = dos33_template.dsk; path = make/dos33_template.dsk; sourceTree = ""; }; + 9DAEA05622FE69490067692F /* errorFilter.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = errorFilter.sh; path = make/errorFilter.sh; sourceTree = ""; }; + 9DAEA05822FE69490067692F /* head.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = head.mk; path = make/head.mk; sourceTree = ""; }; + 9DAEA05A22FE69490067692F /* prodos_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = prodos_template.dsk; path = make/prodos_template.dsk; sourceTree = ""; }; + 9DAEA05C22FE69490067692F /* tail.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = tail.mk; path = make/tail.mk; sourceTree = ""; }; + 9DAEA05E22FE69490067692F /* V2Make.scpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = V2Make.scpt; path = make/V2Make.scpt; sourceTree = ""; }; + 9DAEA06122FE69490067692F /* CurtaSim.xcscheme */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = CurtaSim.xcscheme; path = CurtaSim.xcodeproj/xcshareddata/xcschemes/CurtaSim.xcscheme; sourceTree = SOURCE_ROOT; }; + 9DAEA07122FE695D0067692F /* curta.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = curta.png; sourceTree = ""; }; + 9DAEA07222FE695D0067692F /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 9DAEA07322FE695E0067692F /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; + 9DAEA07422FE696C0067692F /* curtaModel.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = curtaModel.c; sourceTree = ""; }; + 9DAEA07522FE696C0067692F /* curtaUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = curtaUI.h; sourceTree = ""; }; + 9DAEA07622FE696C0067692F /* curta.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = curta.c; sourceTree = ""; }; + 9DAEA07722FE696C0067692F /* joystick.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = joystick.h; sourceTree = ""; }; + 9DAEA07822FE696C0067692F /* curtaUI.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = curtaUI.c; sourceTree = ""; }; + 9DAEA07922FE696C0067692F /* curtaModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = curtaModel.h; sourceTree = ""; }; + 9DAEA07A22FE696C0067692F /* joystick.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = joystick.c; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 9D24616320D8B2AE00227E1D /* Frameworks */ = { + 9DAEA04022FE69490067692F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9D24616F20D8B2AE00227E1D /* AppleCommander.jar in Frameworks */, - 9D3A3EC421783BEA00BE74C7 /* bastokenizer-tools-bt-0.2.0.jar in Frameworks */, + 9DAEA04B22FE69490067692F /* AppleCommander.jar in Frameworks */, + 9DAEA04D22FE69490067692F /* bastokenizer-tools-bt-0.2.0.jar in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 9D24615C20D8B2AE00227E1D = { + 9DAEA03422FE69490067692F = { isa = PBXGroup; children = ( - 9D24618920D8B2C000227E1D /* curta.png */, - 9D24618A20D8B2C000227E1D /* README.md */, - 9D65A1BF20DCA472004268B7 /* LICENSE */, - 9D24616820D8B2AE00227E1D /* CurtaSim */, - 9D24616720D8B2AE00227E1D /* Products */, + 9DAEA07122FE695D0067692F /* curta.png */, + 9DAEA07322FE695E0067692F /* LICENSE */, + 9DAEA07222FE695D0067692F /* README.md */, + 9DAEA04422FE69490067692F /* CurtaSim */, + 9DAEA03C22FE69490067692F /* Products */, ); sourceTree = ""; }; - 9D24616720D8B2AE00227E1D /* Products */ = { + 9DAEA03C22FE69490067692F /* Products */ = { isa = PBXGroup; children = ( - 9D24616620D8B2AE00227E1D /* doNotBuild */, + 9DAEA03B22FE69490067692F /* CurtaSim */, + 9DAEA03E22FE69490067692F /* CurtaSim.dsk */, + 9DAEA04322FE69490067692F /* doNotBuild */, ); name = Products; sourceTree = ""; }; - 9D24616820D8B2AE00227E1D /* CurtaSim */ = { + 9DAEA04422FE69490067692F /* CurtaSim */ = { isa = PBXGroup; children = ( - 9D24618F20D8B30C00227E1D /* curta.c */, - 9D24618B20D8B30B00227E1D /* curtaModel.c */, - 9D24618D20D8B30B00227E1D /* curtaModel.h */, - 9D24619120D8B30C00227E1D /* curtaUI.c */, - 9D24618C20D8B30B00227E1D /* curtaUI.h */, - 9D24618E20D8B30C00227E1D /* joystick.c */, - 9D24619020D8B30C00227E1D /* joystick.h */, - 9D24616B20D8B2AE00227E1D /* Makefile */, - 9D24616D20D8B2AE00227E1D /* make */, - 9D24617E20D8B2AE00227E1D /* Supporting Files */, + 9DAEA04722FE69490067692F /* Makefile */, + 9DAEA07622FE696C0067692F /* curta.c */, + 9DAEA07422FE696C0067692F /* curtaModel.c */, + 9DAEA07922FE696C0067692F /* curtaModel.h */, + 9DAEA07822FE696C0067692F /* curtaUI.c */, + 9DAEA07522FE696C0067692F /* curtaUI.h */, + 9DAEA07A22FE696C0067692F /* joystick.c */, + 9DAEA07722FE696C0067692F /* joystick.h */, + 9DAEA04922FE69490067692F /* make */, + 9DAEA06022FE69490067692F /* Supporting Files */, ); path = CurtaSim; sourceTree = ""; }; - 9D24616D20D8B2AE00227E1D /* make */ = { + 9DAEA04922FE69490067692F /* make */ = { isa = PBXGroup; children = ( - 9D24616E20D8B2AE00227E1D /* AppleCommander.jar */, - 9D3A3EC321783BEA00BE74C7 /* bastokenizer-tools-bt-0.2.0.jar */, - 9D3A3EC221783BEA00BE74C7 /* bt */, - 9D24617020D8B2AE00227E1D /* createDiskImage */, - 9D24617220D8B2AE00227E1D /* DevApple.vii */, - 9D24617420D8B2AE00227E1D /* dos33_template.dsk */, - 9D45ABB620E1E564008C3F16 /* errorFilter.sh */, - 9D24617620D8B2AE00227E1D /* head.mk */, - 9D24617820D8B2AE00227E1D /* prodos_template.dsk */, - 9D24617A20D8B2AE00227E1D /* tail.mk */, - 9D24617C20D8B2AE00227E1D /* V2Make.scpt */, + 9DAEA04A22FE69490067692F /* AppleCommander.jar */, + 9DAEA04C22FE69490067692F /* bastokenizer-tools-bt-0.2.0.jar */, + 9DAEA04E22FE69490067692F /* createDiskImage */, + 9DAEA05022FE69490067692F /* bt */, + 9DAEA05222FE69490067692F /* DevApple.vii */, + 9DAEA05422FE69490067692F /* dos33_template.dsk */, + 9DAEA05622FE69490067692F /* errorFilter.sh */, + 9DAEA05822FE69490067692F /* head.mk */, + 9DAEA05A22FE69490067692F /* prodos_template.dsk */, + 9DAEA05C22FE69490067692F /* tail.mk */, + 9DAEA05E22FE69490067692F /* V2Make.scpt */, ); name = make; sourceTree = ""; }; - 9D24617E20D8B2AE00227E1D /* Supporting Files */ = { + 9DAEA06022FE69490067692F /* Supporting Files */ = { isa = PBXGroup; children = ( - 9D24617F20D8B2AE00227E1D /* CurtaSim.xcscheme */, + 9DAEA06122FE69490067692F /* CurtaSim.xcscheme */, ); name = "Supporting Files"; sourceTree = ""; @@ -149,10 +157,10 @@ /* End PBXGroup section */ /* Begin PBXLegacyTarget section */ - 9D24616120D8B2AE00227E1D /* CurtaSim */ = { + 9DAEA03922FE69490067692F /* CurtaSim */ = { isa = PBXLegacyTarget; buildArgumentsString = "-C CurtaSim $(ACTION)"; - buildConfigurationList = 9D24618320D8B2AE00227E1D /* Build configuration list for PBXLegacyTarget "CurtaSim" */; + buildConfigurationList = 9DAEA06522FE69490067692F /* Build configuration list for PBXLegacyTarget "CurtaSim" */; buildPhases = ( ); buildToolPath = /usr/bin/make; @@ -165,13 +173,41 @@ /* End PBXLegacyTarget section */ /* Begin PBXNativeTarget section */ - 9D24616520D8B2AE00227E1D /* doNotBuild */ = { + 9DAEA03A22FE69490067692F /* Binary */ = { isa = PBXNativeTarget; - buildConfigurationList = 9D24618620D8B2AE00227E1D /* Build configuration list for PBXNativeTarget "doNotBuild" */; + buildConfigurationList = 9DAEA06822FE69490067692F /* Build configuration list for PBXNativeTarget "Binary" */; buildPhases = ( - 9D24616220D8B2AE00227E1D /* Sources */, - 9D24616320D8B2AE00227E1D /* Frameworks */, - 9D24616420D8B2AE00227E1D /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Binary; + productName = Binary; + productReference = 9DAEA03B22FE69490067692F /* CurtaSim */; + productType = "com.apple.product-type.tool"; + }; + 9DAEA03D22FE69490067692F /* DiskImage */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9DAEA06B22FE69490067692F /* Build configuration list for PBXNativeTarget "DiskImage" */; + buildPhases = ( + ); + buildRules = ( + ); + dependencies = ( + ); + name = DiskImage; + productName = DiskImage; + productReference = 9DAEA03E22FE69490067692F /* CurtaSim.dsk */; + productType = "com.apple.product-type.tool"; + }; + 9DAEA04222FE69490067692F /* doNotBuild */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9DAEA06E22FE69490067692F /* Build configuration list for PBXNativeTarget "doNotBuild" */; + buildPhases = ( + 9DAEA03F22FE69490067692F /* Sources */, + 9DAEA04022FE69490067692F /* Frameworks */, + 9DAEA04122FE69490067692F /* CopyFiles */, ); buildRules = ( ); @@ -179,61 +215,69 @@ ); name = doNotBuild; productName = doNotBuild; - productReference = 9D24616620D8B2AE00227E1D /* doNotBuild */; + productReference = 9DAEA04322FE69490067692F /* doNotBuild */; productType = "com.apple.product-type.tool"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - 9D24615D20D8B2AE00227E1D /* Project object */ = { + 9DAEA03522FE69490067692F /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0940; + LastUpgradeCheck = 1030; ORGANIZATIONNAME = "Jeremy Rand"; TargetAttributes = { - 9D24616120D8B2AE00227E1D = { - CreatedOnToolsVersion = 9.4.1; + 9DAEA03922FE69490067692F = { + CreatedOnToolsVersion = 10.3; }; - 9D24616520D8B2AE00227E1D = { - CreatedOnToolsVersion = 9.4.1; + 9DAEA03A22FE69490067692F = { + CreatedOnToolsVersion = 10.3; + }; + 9DAEA03D22FE69490067692F = { + CreatedOnToolsVersion = 10.3; + }; + 9DAEA04222FE69490067692F = { + CreatedOnToolsVersion = 10.3; }; }; }; - buildConfigurationList = 9D24616020D8B2AE00227E1D /* Build configuration list for PBXProject "CurtaSim" */; + buildConfigurationList = 9DAEA03822FE69490067692F /* Build configuration list for PBXProject "CurtaSim" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 9D24615C20D8B2AE00227E1D; - productRefGroup = 9D24616720D8B2AE00227E1D /* Products */; + mainGroup = 9DAEA03422FE69490067692F; + productRefGroup = 9DAEA03C22FE69490067692F /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 9D24616120D8B2AE00227E1D /* CurtaSim */, - 9D24616520D8B2AE00227E1D /* doNotBuild */, + 9DAEA03922FE69490067692F /* CurtaSim */, + 9DAEA03A22FE69490067692F /* Binary */, + 9DAEA03D22FE69490067692F /* DiskImage */, + 9DAEA04222FE69490067692F /* doNotBuild */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 9D24616220D8B2AE00227E1D /* Sources */ = { + 9DAEA03F22FE69490067692F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9D24616C20D8B2AE00227E1D /* Makefile in Sources */, - 9D24619220D8B30C00227E1D /* curtaModel.c in Sources */, - 9D24619520D8B30C00227E1D /* curtaUI.c in Sources */, - 9D24619320D8B30C00227E1D /* joystick.c in Sources */, - 9D24619420D8B30C00227E1D /* curta.c in Sources */, + 9DAEA07C22FE696C0067692F /* curta.c in Sources */, + 9DAEA04822FE69490067692F /* Makefile in Sources */, + 9DAEA07E22FE696C0067692F /* joystick.c in Sources */, + 9DAEA07B22FE696C0067692F /* curtaModel.c in Sources */, + 9DAEA07D22FE696C0067692F /* curtaUI.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ - 9D24618120D8B2AE00227E1D /* Debug */ = { + 9DAEA06322FE69490067692F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -283,12 +327,13 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; }; name = Debug; }; - 9D24618220D8B2AE00227E1D /* Release */ = { + 9DAEA06422FE69490067692F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -333,10 +378,11 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; }; name = Release; }; - 9D24618420D8B2AE00227E1D /* Debug */ = { + 9DAEA06622FE69490067692F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; @@ -351,7 +397,7 @@ }; name = Debug; }; - 9D24618520D8B2AE00227E1D /* Release */ = { + 9DAEA06722FE69490067692F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; @@ -363,24 +409,66 @@ }; name = Release; }; - 9D24618720D8B2AE00227E1D /* Debug */ = { + 9DAEA06922FE69490067692F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VD9FGCW36C; + PRODUCT_NAME = CurtaSim; + }; + name = Debug; + }; + 9DAEA06A22FE69490067692F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VD9FGCW36C; + PRODUCT_NAME = CurtaSim; + }; + name = Release; + }; + 9DAEA06C22FE69490067692F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VD9FGCW36C; + PRODUCT_NAME = CurtaSim.dsk; + }; + name = Debug; + }; + 9DAEA06D22FE69490067692F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VD9FGCW36C; + PRODUCT_NAME = CurtaSim.dsk; + }; + name = Release; + }; + 9DAEA06F22FE69490067692F /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = VD9FGCW36C; GCC_PREPROCESSOR_DEFINITIONS = "__fastcall__=\"\""; - HEADER_SEARCH_PATHS = /usr/local/lib/cc65/include; + HEADER_SEARCH_PATHS = ( + $TEMP_ROOT/CurtaSim.build/$CONFIGURATION/CurtaSim.build/DerivedSources, + /usr/local/share/cc65/include, + ); PRODUCT_NAME = doNotBuild; }; name = Debug; }; - 9D24618820D8B2AE00227E1D /* Release */ = { + 9DAEA07022FE69490067692F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; DEVELOPMENT_TEAM = VD9FGCW36C; GCC_PREPROCESSOR_DEFINITIONS = "__fastcall__=\"\""; - HEADER_SEARCH_PATHS = /usr/local/lib/cc65/include; + HEADER_SEARCH_PATHS = ( + $TEMP_ROOT/CurtaSim.build/$CONFIGURATION/CurtaSim.build/DerivedSources, + /usr/local/share/cc65/include, + ); PRODUCT_NAME = doNotBuild; }; name = Release; @@ -388,34 +476,52 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 9D24616020D8B2AE00227E1D /* Build configuration list for PBXProject "CurtaSim" */ = { + 9DAEA03822FE69490067692F /* Build configuration list for PBXProject "CurtaSim" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9D24618120D8B2AE00227E1D /* Debug */, - 9D24618220D8B2AE00227E1D /* Release */, + 9DAEA06322FE69490067692F /* Debug */, + 9DAEA06422FE69490067692F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9D24618320D8B2AE00227E1D /* Build configuration list for PBXLegacyTarget "CurtaSim" */ = { + 9DAEA06522FE69490067692F /* Build configuration list for PBXLegacyTarget "CurtaSim" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9D24618420D8B2AE00227E1D /* Debug */, - 9D24618520D8B2AE00227E1D /* Release */, + 9DAEA06622FE69490067692F /* Debug */, + 9DAEA06722FE69490067692F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9D24618620D8B2AE00227E1D /* Build configuration list for PBXNativeTarget "doNotBuild" */ = { + 9DAEA06822FE69490067692F /* Build configuration list for PBXNativeTarget "Binary" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9D24618720D8B2AE00227E1D /* Debug */, - 9D24618820D8B2AE00227E1D /* Release */, + 9DAEA06922FE69490067692F /* Debug */, + 9DAEA06A22FE69490067692F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9DAEA06B22FE69490067692F /* Build configuration list for PBXNativeTarget "DiskImage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9DAEA06C22FE69490067692F /* Debug */, + 9DAEA06D22FE69490067692F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9DAEA06E22FE69490067692F /* Build configuration list for PBXNativeTarget "doNotBuild" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9DAEA06F22FE69490067692F /* Debug */, + 9DAEA07022FE69490067692F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = 9D24615D20D8B2AE00227E1D /* Project object */; + rootObject = 9DAEA03522FE69490067692F /* Project object */; } diff --git a/CurtaSim.xcodeproj/project.xcworkspace/xcuserdata/jrand.xcuserdatad/UserInterfaceState.xcuserstate b/CurtaSim.xcodeproj/project.xcworkspace/xcuserdata/jrand.xcuserdatad/UserInterfaceState.xcuserstate index e87d6c7a2f65cffc6502369027cdb3cd03a35753..ed7419cc0b65f11bd02dd32674468e50e26a3968 100644 GIT binary patch delta 8930 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 literal 33695 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 f0HevFh7?1gq0CUzeZPW>e + + + + + + diff --git a/CurtaSim.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist b/CurtaSim.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist index bfcd141..747d66b 100644 --- a/CurtaSim.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/CurtaSim.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,15 +4,25 @@ SchemeUserState + Binary.xcscheme_^#shared#^_ + + orderHint + 1 + CurtaSim.xcscheme_^#shared#^_ orderHint 0 - doNotBuild.xcscheme + DiskImage.xcscheme_^#shared#^_ orderHint - 1 + 2 + + doNotBuild.xcscheme_^#shared#^_ + + orderHint + 3 diff --git a/CurtaSim/Makefile b/CurtaSim/Makefile index f1a3ca0..d700eff 100644 --- a/CurtaSim/Makefile +++ b/CurtaSim/Makefile @@ -52,7 +52,8 @@ START_ADDR = 4000 # will only produce 8-bit code. # Add any other directories where you are putting C or assembly source -# files to this list: +# files to this list. Note that if you are generating source files into +# $(GENDIR), you should add $(GENDIR) to SRCDIRS here: SRCDIRS+= # If you have a non-standard cc65 install, you may need to change @@ -236,6 +237,9 @@ COPYDIRS= # files for example. You can generate data files. Whatever you # might need. # +# You should generate these files in the $(GENDIR) directory or +# within a subdirectory under $(GENDIR) which you create yourself. +# # All of your commands associated with a rule _must_ start with a tab # character. Xcode makes it a bit tough to type a tab character by # default. Press option-tab within Xcode to insert a tab character. diff --git a/CurtaSim/make/DevApple.vii b/CurtaSim/make/DevApple.vii index 5800e339be40e2aefd64476f0327c8c99bd58159..77265f49007ba68f9ceded81bea5d08b07ed67eb 100644 GIT binary patch delta 214 zcmca$e8zY}5o7bl;wV1G*^|%lDQeE%wtdH(ox66=Ubc7N{sRjREj)7c*zq}YPAph3 z`}CQG=Qf=`a^d2o1y^QYoxDL*e6v3PK6cgy5hVtO&0oY;GDbIwHH)>1wTpF%b&K_i z^@~jun=Cd(Y?|0~v6*7C#pa657h5Q{NNlm#QnBS?E5ufbtr1%%wn1!@*k-Y<3}C>- z2%#CSL1`!@wtez1iRtp+Bz{QzmE@2Vl$4iLmei6omUNZ$kqncJm&}pOlPs9LK~kQv F2mpQIO}PL7 delta 218 zcmX?Oe8G4^5o7zt;wV1GIg`)vDQa%pzGLT{UAyNXwTiWib&7S1 z^@{b2O%$6fHdSnz*bK3mVzb5Oip>{WD7IK^iP%!HN&Jyyl;n{Vl~k5gm(-Iqm-Lhjkc^T{mMoAgk}R3L JMpB-!3;^`)PNV<; diff --git a/CurtaSim/make/V2Make.scpt b/CurtaSim/make/V2Make.scpt index 66dcbbbc2488c1621f812f0f77adc9e0860f0861..d760e2e8903ea45157397a8e4480a01cde5366fd 100644 GIT binary patch delta 465 zcmYjL%}T>S7@XLP*hZwi=_MBnBDyz`-n2!ET2M-*AR^oRv|D2mH;Gj*eFyUj1y6$D zGx!QU7JLKGo}3h+&63^koB3wGnN(l5Kc>ZkFKL7aW&g5ZB&dCtiUL>q^*J^ zj0aY;LB5j7((R#Tr&#{hu9Qwv>039~6zz!GQ55;gmWc|3xV9j(rg?C-i4t0nu%Qqj zL5LUwSZJbwGOEi`v5+p6`!b49fg$jDx&BrdPa)8ui3`nJV8~a}+F^apCB1pC@yx!# zsYm`k*G6-NK$lTMPP_lSrY4_pI4v1a60akrOJ29h-eV6Qd7HsUU4khMQrr>p2-&=! z@PY@P1S9l`r;Ik@(KI_|rx+m*ctIpzo>G;}5Lp6g@NDR3}xZT?$gHx{-J@Z#rq_?UG4C>9)hTkWyoki7A;R&Bs7Xp^OW= zH-DkvN>KbSE(`txm*UFHFoFp7UEbr|d+xd1!~5{``q}4iowfGGdh@+=(ERAEH_w#^ zkK2#XM(d$4T*GyYfx72fhPvxIrfOMkUmfm<=1B1`;n(>4v;wehK{7AmxmSg9?iF&H zB|%t}G7?f~RZrK4y}_FxI6j`AzfGs*X}{-de4@Q6xxcYR;H{acKW9-nnic(B{5&~ ztcs@{a@Xu07HECJRTo#dyBxbD@8ca_Z%peVnZ`*diD;4~^(-vOilcp-PWTT4vNNA+ VX;n62^HA|hzd#GhubZ1szX8)5ocRC% diff --git a/CurtaSim/make/createDiskImage b/CurtaSim/make/createDiskImage index 55e428a..30531ec 100755 --- a/CurtaSim/make/createDiskImage +++ b/CurtaSim/make/createDiskImage @@ -7,7 +7,7 @@ merlinStartAddr() { if [ $# -lt 5 ] then - echo USAGE: $0 ' ' + echo USAGE: $0 ' ' exit 1 fi @@ -318,7 +318,7 @@ do # to copy to the disk image. if [ -f "$ITEM" ] && echo "$ITEM" | grep '\.tok$' > /dev/null then - DESTFILE=`echo "$ITEM" | sed 's/\.tok$//'` + DESTFILE=`basename "$ITEM" | sed 's/\.tok$//'` "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$DESTFILE" "$BASICFILETYPE" 0x801 < "$ITEM" continue fi @@ -363,9 +363,9 @@ do # If the file type is text, convert the line feeds to carriage return if [ $FILETYPE = txt ] || [ $FILETYPE = T ] then - tr '\n' '\r' < $FILE | "$JAVA" -jar "$OLDPWD/$APPLECOMMANDER" $TRANSFERARG "$OLDPWD/$DISKIMAGE" "$DESTFILE" $FILETYPE + tr '\n' '\r' < $FILE | "$JAVA" -jar "$OLDPWD/$APPLECOMMANDER" $TRANSFERARG "$DISKIMAGE" "$DESTFILE" $FILETYPE else - "$JAVA" -jar "$OLDPWD/$APPLECOMMANDER" $TRANSFERARG "$OLDPWD/$DISKIMAGE" "$DESTFILE" $FILETYPE < $FILE + "$JAVA" -jar "$OLDPWD/$APPLECOMMANDER" $TRANSFERARG "$DISKIMAGE" "$DESTFILE" $FILETYPE < $FILE fi done diff --git a/CurtaSim/make/errorFilter.sh b/CurtaSim/make/errorFilter.sh index 30259c1..b041ac2 100755 --- a/CurtaSim/make/errorFilter.sh +++ b/CurtaSim/make/errorFilter.sh @@ -35,7 +35,7 @@ while () { $file =~ s/\.s$/.c/; } - $_ = "$pwd/$file:$lineno:0: Error: $unresolvedRefError"; + $_ = "$pwd/$file:$lineno:0: error: $unresolvedRefError"; } else { $unresolvedRefError = undef; } @@ -49,7 +49,7 @@ while () { my $lineno = $2; my $error = $3; - $_ = "$pwd/$file:$lineno:0:$error"; + $_ = "$pwd/$file:$lineno:0: error: $error"; } print STDERR "$_\n"; } diff --git a/CurtaSim/make/head.mk b/CurtaSim/make/head.mk index 28ebc58..4fcc688 100644 --- a/CurtaSim/make/head.mk +++ b/CurtaSim/make/head.mk @@ -24,20 +24,47 @@ CC65=$(CC65_BIN)/cc65 CO65=$(CC65_BIN)/co65 MERLIN_DIR=/usr/local -MERLIN_BIN=$(MERLIN_DIR)/bin/Merlin32 -MERLIN_LIB=$(MERLIN_DIR)/lib/Merlin +export MERLIN_BIN=$(MERLIN_DIR)/bin/Merlin32 +export MERLIN_LIB=$(MERLIN_DIR)/lib/Merlin +MERLIN_ASM=make/merlin-asm AC=make/AppleCommander.jar SRCDIRS=. +# Check for Xcode build variables for the locations of build outputs and fall back +# to the current directory if not set. +ifeq ($(OBJECT_FILE_DIR),) + OBJDIR=. +else + export OBJECT_FILE_DIR + OBJDIR=$(OBJECT_FILE_DIR) +endif + +ifeq ($(DERIVED_SOURCES_DIR),) + GENDIR=. +else + export DERIVED_SOURCES_DIR + GENDIR=$(DERIVED_SOURCES_DIR) +endif + +ifeq ($(TARGET_BUILD_DIR),) + TARGETDIR=. +else + export TARGET_BUILD_DIR + TARGETDIR=$(TARGET_BUILD_DIR) +endif + + MACHINE=apple2 CPU=6502 CFLAGS= ASMFLAGS= LDFLAGS= DRIVERS= -DRVDIR=drivers +DRVDIR=$(GENDIR)/drivers + +MKDIR=mkdir -p XCODE_PATH=/Applications/Xcode.app XCODE_INFO=$(XCODE_PATH)/Contents/Info.plist diff --git a/CurtaSim/make/tail.mk b/CurtaSim/make/tail.mk index fd961e5..3d6256c 100644 --- a/CurtaSim/make/tail.mk +++ b/CurtaSim/make/tail.mk @@ -14,12 +14,14 @@ BUILD_TYPE := $(shell if echo $(MACHINE) | grep -q -- -basic; then echo basic; e CWD=$(shell pwd) -DISKIMAGE=$(PGM).dsk +DISKIMAGE=$(TARGETDIR)/$(PGM).dsk EXECCMD= -BASIC_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.bas, $(SRCDIRS)))) -BASIC_OBJS=$(BASIC_SRCS:.bas=.tok) +vpath $(GENDIR) + +BASIC_SRCS=$(patsubst $(GENDIR)/%, %, $(patsubst ./%, %, $(wildcard $(addsuffix /*.bas, $(SRCDIRS))))) +BASIC_OBJS=$(patsubst %.bas, $(TARGETDIR)/%.tok, $(BASIC_SRCS)) ifeq ($(BUILD_TYPE),cc65) export PATH := $(PATH):$(CC65_BIN) @@ -33,50 +35,37 @@ ifeq ($(BUILD_TYPE),cc65) BASE_MACHINE = apple2enh endif - CC65_VERSION := $(shell $(CC65) --version 2>&1 | grep '^cc65 V') + export CC65_SUPPORTS_APPLE_SINGLE=1 + CC65_CREATE_DEP_ARG=--create-dep $(@:.o=.u) + CC65_LIST_ARG=-l $(@:.o=.lst) + CC65_DRV_DIR=$(CC65_HOME)/target/$(BASE_MACHINE)/drv - ifeq ($(CC65_VERSION),cc65 V2.13.3) - export CC65_SUPPORTS_APPLE_SINGLE=0 - CC65_CREATE_DEP_ARG=--create-dep - CC65_LIST_ARG=-l - CC65_DRV_DIR=$(CC65_HOME) - - MACHCONFIG= -t $(BASE_MACHINE) - ifeq ($(filter $(MACHINE), apple2 apple2enh),) - MACHCONFIG += -C $(MACHINE).cfg - endif + MACHCONFIG= -t $(BASE_MACHINE) + ifneq ($(filter $(MACHINE), apple2-system apple2enh-system),) + MACHCONFIG += -C $(BASE_MACHINE)-system.cfg else - export CC65_SUPPORTS_APPLE_SINGLE=1 - CC65_CREATE_DEP_ARG=--create-dep $(@:.o=.u) - CC65_LIST_ARG=-l $(@:.o=.lst) - CC65_DRV_DIR=$(CC65_HOME)/target/$(BASE_MACHINE)/drv - - MACHCONFIG= -t $(BASE_MACHINE) - ifneq ($(filter $(MACHINE), apple2-system apple2enh-system),) - MACHCONFIG += -C $(BASE_MACHINE)-system.cfg + ifeq ($(PROJECT_TYPE),ca65) + MACHCONFIG += -C $(BASE_MACHINE)-asm.cfg + LDFLAGS += -u __EXEHDR__ else - ifeq ($(PROJECT_TYPE),ca65) - MACHCONFIG += -C $(BASE_MACHINE)-asm.cfg - LDFLAGS += -u __EXEHDR__ - else - MACHCONFIG += -C $(BASE_MACHINE).cfg - endif - endif + MACHCONFIG += -C $(BASE_MACHINE).cfg + endif endif + CFLAGS+=-I $(GENDIR) ifneq ($(DRIVERS),) SRCDIRS+=$(DRVDIR) endif - C_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.c, $(SRCDIRS)))) - C_OBJS=$(C_SRCS:.c=.o) - C_DEPS=$(C_SRCS:.c=.u) + C_SRCS=$(patsubst $(GENDIR)/%, %, $(patsubst ./%, %, $(wildcard $(addsuffix /*.c, $(SRCDIRS))))) + C_OBJS=$(patsubst %.c, $(OBJDIR)/%.o, $(C_SRCS)) + C_DEPS=$(patsubst %.c, $(OBJDIR)/%.u, $(C_SRCS)) - ASM_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.s, $(SRCDIRS)))) - ASM_OBJS=$(ASM_SRCS:.s=.o) - ASM_LSTS=$(ASM_SRCS:.s=.lst) + ASM_SRCS=$(patsubst $(GENDIR)/%, %, $(patsubst ./%, %, $(wildcard $(addsuffix /*.s, $(SRCDIRS))))) + ASM_OBJS=$(patsubst %.s, $(OBJDIR)/%.o, $(ASM_SRCS)) + ASM_LSTS=$(patsubst %.s, $(OBJDIR)/%.lst, $(ASM_SRCS)) - MAPFILE=$(PGM).map + MAPFILE=$(TARGETDIR)/$(PGM).map ifneq ($(START_ADDR),) # If the MACHINE is set to an option which does not support a variable @@ -113,7 +102,7 @@ endif ifeq ($(BUILD_TYPE),merlin) ASM_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.s, $(SRCDIRS)))) - MAPFILE=_Output.txt + MAPFILE=$(TARGETDIR)/_Output.txt EXECCMD=$(shell echo brun $(PGM) | tr '[a-z]' '[A-Z]') endif @@ -122,7 +111,7 @@ ifeq ($(BUILD_TYPE),basic) EXECCMD=$(shell echo run $(PGM) | tr '[a-z]' '[A-Z]') endif -OBJS=$(C_OBJS) $(ASM_OBJS) $(BASIC_OBJS) +OBJS=$(C_OBJS) $(ASM_OBJS) ALLTARGET=$(DISKIMAGE) @@ -131,13 +120,14 @@ ALLTARGET=$(DISKIMAGE) build: $(ALLTARGET) -$(DISKIMAGE): $(PGM) - make/createDiskImage $(AC) $(MACHINE) "$(DISKIMAGE)" "$(PGM)" "$(START_ADDR)" $(BASIC_OBJS) $(COPYDIRS) +$(DISKIMAGE): $(TARGETDIR)/$(PGM) $(BASIC_OBJS) + make/createDiskImage $(AC) $(MACHINE) "$(DISKIMAGE)" "$(TARGETDIR)/$(PGM)" "$(START_ADDR)" $(BASIC_OBJS) $(COPYDIRS) execute: $(DISKIMAGE) - osascript make/V2Make.scpt "$(CWD)" "$(PGM)" "$(CWD)/make/DevApple.vii" "$(EXECCMD)" + osascript make/V2Make.scpt "$(TARGETDIR)" "$(PGM)" "$(CWD)/make/DevApple.vii" "$(EXECCMD)" -%.tok: %.bas +$(TARGETDIR)/%.tok: %.bas + $(MKDIR) `dirname $@` make/bt $< $(BASICFLAGS) -o $@ ifneq ($(DRIVERS),) @@ -150,7 +140,7 @@ cleandrivers: endif clean: genclean cleandrivers - rm -f "$(PGM)" $(OBJS) $(C_DEPS) $(MAPFILE) $(ASM_LSTS) "$(DISKIMAGE)" + rm -f "$(TARGETDIR)/$(PGM)" $(OBJS) $(BASIC_OBJS) $(C_DEPS) $(MAPFILE) $(ASM_LSTS) "$(DISKIMAGE)" cleanMacCruft: rm -rf pkg @@ -165,10 +155,10 @@ xcodefix: ifeq ($(BUILD_TYPE),basic) # Build rules for BASIC projects -$(PGM): $(OBJS) - cp $(PGM).tok $(PGM) +$(TARGETDIR)/$(PGM): $(BASIC_OBJS) + cp $(TARGETDIR)/$(PGM).tok $(TARGETDIR)/$(PGM) -$(OBJS): Makefile +$(BASIC_OBJS): Makefile endif @@ -177,9 +167,10 @@ endif ifeq ($(BUILD_TYPE),merlin) # Build rules for Merlin projects -$(PGM): $(ASM_SRCS) Makefile - $(MERLIN_BIN) -V $(MERLIN_LIB) linkscript.s - rm -f _FileInformation.txt +$(TARGETDIR)/$(PGM): $(ASM_SRCS) Makefile + $(MKDIR) $(TARGETDIR) + rm -f $(TARGETDIR)/$(PGM) + $(MERLIN_ASM) linkscript.s $(PGM) $(TARGETDIR)/$(PGM) endif @@ -187,17 +178,30 @@ endif ifeq ($(BUILD_TYPE),cc65) # Build rules for cc65 projects -$(PGM): $(OBJS) - make/errorFilter.sh $(CL65) $(MACHCONFIG) --mapfile $(MAPFILE) $(LDFLAGS) -o "$(PGM)" $(OBJS) +$(TARGETDIR)/$(PGM): $(OBJS) + $(MKDIR) `dirname $@` + make/errorFilter.sh $(CL65) $(MACHCONFIG) --mapfile $(MAPFILE) $(LDFLAGS) -o "$(TARGETDIR)/$(PGM)" $(OBJS) $(OBJS): Makefile -%.o: %.c +$(OBJDIR)/%.o: %.c + $(MKDIR) `dirname $@` make/errorFilter.sh $(CL65) $(MACHCONFIG) $(CFLAGS) $(CC65_CREATE_DEP_ARG) -c -o $@ $< sed -i .bak 's/\.s:/.o:/' $(@:.o=.u) rm -f $(@:.o=.u).bak -%.o: %.s +$(OBJDIR)/%.o: $(GENDIR)/%.c + $(MKDIR) `dirname $@` + make/errorFilter.sh $(CL65) $(MACHCONFIG) $(CFLAGS) $(CC65_CREATE_DEP_ARG) -c -o $@ $< + sed -i .bak 's/\.s:/.o:/' $(@:.o=.u) + rm -f $(@:.o=.u).bak + +$(OBJDIR)/%.o: %.s + $(MKDIR) `dirname $@` + make/errorFilter.sh $(CL65) $(MACHCONFIG) --cpu $(CPU) $(ASMFLAGS) $(CC65_LIST_ARG) -c -o $@ $< + +$(OBJDIR)/%.o: $(GENDIR)/%.s + $(MKDIR) `dirname $@` make/errorFilter.sh $(CL65) $(MACHCONFIG) --cpu $(CPU) $(ASMFLAGS) $(CC65_LIST_ARG) -c -o $@ $<