From cb1b1c8cfeb830335e6a7f6ec323e3e819968079 Mon Sep 17 00:00:00 2001 From: Jeremy Rand Date: Fri, 9 Aug 2019 21:49:48 -0400 Subject: [PATCH] Update the project to the latest build engine. --- LICENSE | 21 + apple2048.xcodeproj/project.pbxproj | 372 +++++++++++------- .../UserInterfaceState.xcuserstate | Bin 35172 -> 21192 bytes .../xcshareddata/xcschemes/apple2048.xcscheme | 12 + .../xcschemes/xcschememanagement.plist | 14 +- apple2048/Makefile | 6 +- apple2048/make/DevApple.vii | Bin 6608 -> 6608 bytes apple2048/make/V2Make.scpt | Bin 4906 -> 4758 bytes apple2048/make/createDiskImage | 8 +- apple2048/make/errorFilter.sh | 4 +- apple2048/make/head.mk | 33 +- apple2048/make/tail.mk | 110 +++--- 12 files changed, 383 insertions(+), 197 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..37bcdf1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2019 Jeremy Rand + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/apple2048.xcodeproj/project.pbxproj b/apple2048.xcodeproj/project.pbxproj index d0f2ac1..0903b73 100644 --- a/apple2048.xcodeproj/project.pbxproj +++ b/apple2048.xcodeproj/project.pbxproj @@ -7,144 +7,154 @@ objects = { /* Begin PBXBuildFile section */ - 9D3A3E8B2178357A00BE74C7 /* bastokenizer-tools-bt-0.2.0.jar in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D3A3E892178357A00BE74C7 /* bastokenizer-tools-bt-0.2.0.jar */; }; - 9DD54F6820DA0A230088D191 /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 9DD54F6720DA0A230088D191 /* Makefile */; }; - 9DD54F6B20DA0A230088D191 /* AppleCommander.jar in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DD54F6A20DA0A230088D191 /* AppleCommander.jar */; }; - 9DD54F6D20DA0A230088D191 /* createDiskImage in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD54F6C20DA0A230088D191 /* createDiskImage */; }; - 9DD54F6F20DA0A230088D191 /* DevApple.vii in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD54F6E20DA0A230088D191 /* DevApple.vii */; }; - 9DD54F7120DA0A230088D191 /* dos33_template.dsk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD54F7020DA0A230088D191 /* dos33_template.dsk */; }; - 9DD54F7320DA0A230088D191 /* head.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD54F7220DA0A230088D191 /* head.mk */; }; - 9DD54F7520DA0A230088D191 /* prodos_template.dsk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD54F7420DA0A230088D191 /* prodos_template.dsk */; }; - 9DD54F7720DA0A230088D191 /* tail.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD54F7620DA0A230088D191 /* tail.mk */; }; - 9DD54F7920DA0A230088D191 /* V2Make.scpt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD54F7820DA0A230088D191 /* V2Make.scpt */; }; - 9DD54F7C20DA0A230088D191 /* apple2048.xcscheme in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD54F7B20DA0A230088D191 /* apple2048.xcscheme */; }; - 9DD54F9020DA0A4A0088D191 /* textpage.s in Sources */ = {isa = PBXBuildFile; fileRef = 9DD54F8720DA0A4A0088D191 /* textpage.s */; }; - 9DD54F9120DA0A4A0088D191 /* game.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DD54F8820DA0A4A0088D191 /* game.c */; }; - 9DD54F9220DA0A4A0088D191 /* apple2048.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DD54F8920DA0A4A0088D191 /* apple2048.c */; }; - 9DD54F9320DA0A4A0088D191 /* anim.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DD54F8B20DA0A4A0088D191 /* anim.c */; }; - 9DD54F9420DA0A4A0088D191 /* ui.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DD54F8D20DA0A4A0088D191 /* ui.c */; }; + 9DD31A2E22FE58C400F65886 /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 9DD31A2D22FE58C400F65886 /* Makefile */; }; + 9DD31A3122FE58C400F65886 /* AppleCommander.jar in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DD31A3022FE58C400F65886 /* AppleCommander.jar */; }; + 9DD31A3322FE58C400F65886 /* bastokenizer-tools-bt-0.2.0.jar in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DD31A3222FE58C400F65886 /* bastokenizer-tools-bt-0.2.0.jar */; }; + 9DD31A3522FE58C400F65886 /* createDiskImage in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD31A3422FE58C400F65886 /* createDiskImage */; }; + 9DD31A3722FE58C400F65886 /* bt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD31A3622FE58C400F65886 /* bt */; }; + 9DD31A3922FE58C400F65886 /* DevApple.vii in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD31A3822FE58C400F65886 /* DevApple.vii */; }; + 9DD31A3B22FE58C400F65886 /* dos33_template.dsk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD31A3A22FE58C400F65886 /* dos33_template.dsk */; }; + 9DD31A3D22FE58C400F65886 /* errorFilter.sh in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD31A3C22FE58C400F65886 /* errorFilter.sh */; }; + 9DD31A3F22FE58C400F65886 /* head.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD31A3E22FE58C400F65886 /* head.mk */; }; + 9DD31A4122FE58C400F65886 /* prodos_template.dsk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD31A4022FE58C400F65886 /* prodos_template.dsk */; }; + 9DD31A4322FE58C400F65886 /* tail.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD31A4222FE58C400F65886 /* tail.mk */; }; + 9DD31A4522FE58C400F65886 /* V2Make.scpt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD31A4422FE58C400F65886 /* V2Make.scpt */; }; + 9DD31A4822FE58C400F65886 /* apple2048.xcscheme in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DD31A4722FE58C400F65886 /* apple2048.xcscheme */; }; + 9DD31A6222FE592E00F65886 /* ui.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DD31A5F22FE592E00F65886 /* ui.c */; }; + 9DD31A6322FE592E00F65886 /* game.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DD31A6022FE592E00F65886 /* game.c */; }; + 9DD31A6422FE592E00F65886 /* anim.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DD31A5E22FE592E00F65886 /* anim.c */; }; + 9DD31A6522FE592E00F65886 /* apple2048.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DD31A6122FE592E00F65886 /* apple2048.c */; }; + 9DD31A6622FE592E00F65886 /* textpage.s in Sources */ = {isa = PBXBuildFile; fileRef = 9DD31A5C22FE592E00F65886 /* textpage.s */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ - 9DD54F6020DA0A230088D191 /* CopyFiles */ = { + 9DD31A2722FE58C400F65886 /* CopyFiles */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = /usr/share/man/man1/; dstSubfolderSpec = 0; files = ( - 9DD54F7C20DA0A230088D191 /* apple2048.xcscheme in CopyFiles */, - 9DD54F6D20DA0A230088D191 /* createDiskImage in CopyFiles */, - 9DD54F6F20DA0A230088D191 /* DevApple.vii in CopyFiles */, - 9DD54F7120DA0A230088D191 /* dos33_template.dsk in CopyFiles */, - 9DD54F7720DA0A230088D191 /* tail.mk in CopyFiles */, - 9DD54F7920DA0A230088D191 /* V2Make.scpt in CopyFiles */, - 9DD54F7520DA0A230088D191 /* prodos_template.dsk in CopyFiles */, - 9DD54F7320DA0A230088D191 /* head.mk in CopyFiles */, + 9DD31A4122FE58C400F65886 /* prodos_template.dsk in CopyFiles */, + 9DD31A3722FE58C400F65886 /* bt in CopyFiles */, + 9DD31A3B22FE58C400F65886 /* dos33_template.dsk in CopyFiles */, + 9DD31A3522FE58C400F65886 /* createDiskImage in CopyFiles */, + 9DD31A4822FE58C400F65886 /* apple2048.xcscheme in CopyFiles */, + 9DD31A4522FE58C400F65886 /* V2Make.scpt in CopyFiles */, + 9DD31A3F22FE58C400F65886 /* head.mk in CopyFiles */, + 9DD31A3922FE58C400F65886 /* DevApple.vii in CopyFiles */, + 9DD31A3D22FE58C400F65886 /* errorFilter.sh in CopyFiles */, + 9DD31A4322FE58C400F65886 /* tail.mk in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 1; }; /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 9D3A3E892178357A00BE74C7 /* 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 = ""; }; - 9D3A3E8A2178357A00BE74C7 /* bt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; name = bt; path = make/bt; sourceTree = ""; }; - 9D45ABB420E1E477008C3F16 /* errorFilter.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = errorFilter.sh; path = make/errorFilter.sh; sourceTree = ""; }; - 9DD54F6220DA0A230088D191 /* doNotBuild */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = doNotBuild; sourceTree = BUILT_PRODUCTS_DIR; }; - 9DD54F6720DA0A230088D191 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; - 9DD54F6A20DA0A230088D191 /* AppleCommander.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = AppleCommander.jar; path = make/AppleCommander.jar; sourceTree = ""; }; - 9DD54F6C20DA0A230088D191 /* createDiskImage */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = createDiskImage; path = make/createDiskImage; sourceTree = ""; }; - 9DD54F6E20DA0A230088D191 /* DevApple.vii */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = DevApple.vii; path = make/DevApple.vii; sourceTree = ""; }; - 9DD54F7020DA0A230088D191 /* dos33_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = dos33_template.dsk; path = make/dos33_template.dsk; sourceTree = ""; }; - 9DD54F7220DA0A230088D191 /* head.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = head.mk; path = make/head.mk; sourceTree = ""; }; - 9DD54F7420DA0A230088D191 /* prodos_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = prodos_template.dsk; path = make/prodos_template.dsk; sourceTree = ""; }; - 9DD54F7620DA0A230088D191 /* tail.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = tail.mk; path = make/tail.mk; sourceTree = ""; }; - 9DD54F7820DA0A230088D191 /* V2Make.scpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = V2Make.scpt; path = make/V2Make.scpt; sourceTree = ""; }; - 9DD54F7B20DA0A230088D191 /* apple2048.xcscheme */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = apple2048.xcscheme; path = apple2048.xcodeproj/xcshareddata/xcschemes/apple2048.xcscheme; sourceTree = SOURCE_ROOT; }; - 9DD54F8520DA0A3B0088D191 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - 9DD54F8620DA0A3C0088D191 /* apple2048.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple2048.png; sourceTree = ""; }; - 9DD54F8720DA0A4A0088D191 /* textpage.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = textpage.s; sourceTree = ""; }; - 9DD54F8820DA0A4A0088D191 /* game.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = game.c; sourceTree = ""; }; - 9DD54F8920DA0A4A0088D191 /* apple2048.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = apple2048.c; sourceTree = ""; }; - 9DD54F8A20DA0A4A0088D191 /* textpage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = textpage.h; sourceTree = ""; }; - 9DD54F8B20DA0A4A0088D191 /* anim.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = anim.c; sourceTree = ""; }; - 9DD54F8C20DA0A4A0088D191 /* ui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui.h; sourceTree = ""; }; - 9DD54F8D20DA0A4A0088D191 /* ui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui.c; sourceTree = ""; }; - 9DD54F8E20DA0A4A0088D191 /* game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = game.h; sourceTree = ""; }; - 9DD54F8F20DA0A4A0088D191 /* anim.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = anim.h; sourceTree = ""; }; + 9DD31A2122FE58C400F65886 /* apple2048 */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = apple2048; sourceTree = BUILT_PRODUCTS_DIR; }; + 9DD31A2422FE58C400F65886 /* apple2048.dsk */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = apple2048.dsk; sourceTree = BUILT_PRODUCTS_DIR; }; + 9DD31A2922FE58C400F65886 /* doNotBuild */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = doNotBuild; sourceTree = BUILT_PRODUCTS_DIR; }; + 9DD31A2D22FE58C400F65886 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + 9DD31A3022FE58C400F65886 /* AppleCommander.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = AppleCommander.jar; path = make/AppleCommander.jar; sourceTree = ""; }; + 9DD31A3222FE58C400F65886 /* 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 = ""; }; + 9DD31A3422FE58C400F65886 /* createDiskImage */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = createDiskImage; path = make/createDiskImage; sourceTree = ""; }; + 9DD31A3622FE58C400F65886 /* bt */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = bt; path = make/bt; sourceTree = ""; }; + 9DD31A3822FE58C400F65886 /* DevApple.vii */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = DevApple.vii; path = make/DevApple.vii; sourceTree = ""; }; + 9DD31A3A22FE58C400F65886 /* dos33_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = dos33_template.dsk; path = make/dos33_template.dsk; sourceTree = ""; }; + 9DD31A3C22FE58C400F65886 /* errorFilter.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = errorFilter.sh; path = make/errorFilter.sh; sourceTree = ""; }; + 9DD31A3E22FE58C400F65886 /* head.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = head.mk; path = make/head.mk; sourceTree = ""; }; + 9DD31A4022FE58C400F65886 /* prodos_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = prodos_template.dsk; path = make/prodos_template.dsk; sourceTree = ""; }; + 9DD31A4222FE58C400F65886 /* tail.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = tail.mk; path = make/tail.mk; sourceTree = ""; }; + 9DD31A4422FE58C400F65886 /* V2Make.scpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = V2Make.scpt; path = make/V2Make.scpt; sourceTree = ""; }; + 9DD31A4722FE58C400F65886 /* apple2048.xcscheme */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = apple2048.xcscheme; path = apple2048.xcodeproj/xcshareddata/xcschemes/apple2048.xcscheme; sourceTree = SOURCE_ROOT; }; + 9DD31A5722FE591B00F65886 /* apple2048.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple2048.png; sourceTree = ""; }; + 9DD31A5822FE591B00F65886 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + 9DD31A5922FE592E00F65886 /* ui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ui.h; sourceTree = ""; }; + 9DD31A5A22FE592E00F65886 /* textpage.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = textpage.h; sourceTree = ""; }; + 9DD31A5B22FE592E00F65886 /* anim.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = anim.h; sourceTree = ""; }; + 9DD31A5C22FE592E00F65886 /* textpage.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = textpage.s; sourceTree = ""; }; + 9DD31A5D22FE592E00F65886 /* game.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game.h; sourceTree = ""; }; + 9DD31A5E22FE592E00F65886 /* anim.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = anim.c; sourceTree = ""; }; + 9DD31A5F22FE592E00F65886 /* ui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ui.c; sourceTree = ""; }; + 9DD31A6022FE592E00F65886 /* game.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = game.c; sourceTree = ""; }; + 9DD31A6122FE592E00F65886 /* apple2048.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = apple2048.c; sourceTree = ""; }; + 9DD31A6722FE59FE00F65886 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 9DD54F5F20DA0A230088D191 /* Frameworks */ = { + 9DD31A2622FE58C400F65886 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9DD54F6B20DA0A230088D191 /* AppleCommander.jar in Frameworks */, - 9D3A3E8B2178357A00BE74C7 /* bastokenizer-tools-bt-0.2.0.jar in Frameworks */, + 9DD31A3122FE58C400F65886 /* AppleCommander.jar in Frameworks */, + 9DD31A3322FE58C400F65886 /* bastokenizer-tools-bt-0.2.0.jar in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 9DD54F5820DA0A230088D191 = { + 9DD31A1A22FE58C400F65886 = { isa = PBXGroup; children = ( - 9DD54F8620DA0A3C0088D191 /* apple2048.png */, - 9DD54F8520DA0A3B0088D191 /* README.md */, - 9DD54F6420DA0A230088D191 /* apple2048 */, - 9DD54F6320DA0A230088D191 /* Products */, + 9DD31A5722FE591B00F65886 /* apple2048.png */, + 9DD31A5822FE591B00F65886 /* README.md */, + 9DD31A6722FE59FE00F65886 /* LICENSE */, + 9DD31A2A22FE58C400F65886 /* apple2048 */, + 9DD31A2222FE58C400F65886 /* Products */, ); sourceTree = ""; }; - 9DD54F6320DA0A230088D191 /* Products */ = { + 9DD31A2222FE58C400F65886 /* Products */ = { isa = PBXGroup; children = ( - 9DD54F6220DA0A230088D191 /* doNotBuild */, + 9DD31A2122FE58C400F65886 /* apple2048 */, + 9DD31A2422FE58C400F65886 /* apple2048.dsk */, + 9DD31A2922FE58C400F65886 /* doNotBuild */, ); name = Products; sourceTree = ""; }; - 9DD54F6420DA0A230088D191 /* apple2048 */ = { + 9DD31A2A22FE58C400F65886 /* apple2048 */ = { isa = PBXGroup; children = ( - 9DD54F6720DA0A230088D191 /* Makefile */, - 9DD54F8B20DA0A4A0088D191 /* anim.c */, - 9DD54F8F20DA0A4A0088D191 /* anim.h */, - 9DD54F8920DA0A4A0088D191 /* apple2048.c */, - 9DD54F8820DA0A4A0088D191 /* game.c */, - 9DD54F8E20DA0A4A0088D191 /* game.h */, - 9DD54F8A20DA0A4A0088D191 /* textpage.h */, - 9DD54F8720DA0A4A0088D191 /* textpage.s */, - 9DD54F8D20DA0A4A0088D191 /* ui.c */, - 9DD54F8C20DA0A4A0088D191 /* ui.h */, - 9DD54F6920DA0A230088D191 /* make */, - 9DD54F7A20DA0A230088D191 /* Supporting Files */, + 9DD31A2D22FE58C400F65886 /* Makefile */, + 9DD31A5E22FE592E00F65886 /* anim.c */, + 9DD31A5B22FE592E00F65886 /* anim.h */, + 9DD31A6122FE592E00F65886 /* apple2048.c */, + 9DD31A6022FE592E00F65886 /* game.c */, + 9DD31A5D22FE592E00F65886 /* game.h */, + 9DD31A5A22FE592E00F65886 /* textpage.h */, + 9DD31A5C22FE592E00F65886 /* textpage.s */, + 9DD31A5F22FE592E00F65886 /* ui.c */, + 9DD31A5922FE592E00F65886 /* ui.h */, + 9DD31A2F22FE58C400F65886 /* make */, + 9DD31A4622FE58C400F65886 /* Supporting Files */, ); path = apple2048; sourceTree = ""; }; - 9DD54F6920DA0A230088D191 /* make */ = { + 9DD31A2F22FE58C400F65886 /* make */ = { isa = PBXGroup; children = ( - 9DD54F6A20DA0A230088D191 /* AppleCommander.jar */, - 9D3A3E892178357A00BE74C7 /* bastokenizer-tools-bt-0.2.0.jar */, - 9D3A3E8A2178357A00BE74C7 /* bt */, - 9DD54F6C20DA0A230088D191 /* createDiskImage */, - 9DD54F6E20DA0A230088D191 /* DevApple.vii */, - 9DD54F7020DA0A230088D191 /* dos33_template.dsk */, - 9D45ABB420E1E477008C3F16 /* errorFilter.sh */, - 9DD54F7220DA0A230088D191 /* head.mk */, - 9DD54F7420DA0A230088D191 /* prodos_template.dsk */, - 9DD54F7620DA0A230088D191 /* tail.mk */, - 9DD54F7820DA0A230088D191 /* V2Make.scpt */, + 9DD31A3022FE58C400F65886 /* AppleCommander.jar */, + 9DD31A3222FE58C400F65886 /* bastokenizer-tools-bt-0.2.0.jar */, + 9DD31A3422FE58C400F65886 /* createDiskImage */, + 9DD31A3622FE58C400F65886 /* bt */, + 9DD31A3822FE58C400F65886 /* DevApple.vii */, + 9DD31A3A22FE58C400F65886 /* dos33_template.dsk */, + 9DD31A3C22FE58C400F65886 /* errorFilter.sh */, + 9DD31A3E22FE58C400F65886 /* head.mk */, + 9DD31A4022FE58C400F65886 /* prodos_template.dsk */, + 9DD31A4222FE58C400F65886 /* tail.mk */, + 9DD31A4422FE58C400F65886 /* V2Make.scpt */, ); name = make; sourceTree = ""; }; - 9DD54F7A20DA0A230088D191 /* Supporting Files */ = { + 9DD31A4622FE58C400F65886 /* Supporting Files */ = { isa = PBXGroup; children = ( - 9DD54F7B20DA0A230088D191 /* apple2048.xcscheme */, + 9DD31A4722FE58C400F65886 /* apple2048.xcscheme */, ); name = "Supporting Files"; sourceTree = ""; @@ -152,10 +162,10 @@ /* End PBXGroup section */ /* Begin PBXLegacyTarget section */ - 9DD54F5D20DA0A230088D191 /* apple2048 */ = { + 9DD31A1F22FE58C400F65886 /* apple2048 */ = { isa = PBXLegacyTarget; buildArgumentsString = "-C apple2048 $(ACTION)"; - buildConfigurationList = 9DD54F7F20DA0A230088D191 /* Build configuration list for PBXLegacyTarget "apple2048" */; + buildConfigurationList = 9DD31A4B22FE58C400F65886 /* Build configuration list for PBXLegacyTarget "apple2048" */; buildPhases = ( ); buildToolPath = /usr/bin/make; @@ -168,13 +178,41 @@ /* End PBXLegacyTarget section */ /* Begin PBXNativeTarget section */ - 9DD54F6120DA0A230088D191 /* doNotBuild */ = { + 9DD31A2022FE58C400F65886 /* Binary */ = { isa = PBXNativeTarget; - buildConfigurationList = 9DD54F8220DA0A230088D191 /* Build configuration list for PBXNativeTarget "doNotBuild" */; + buildConfigurationList = 9DD31A4E22FE58C400F65886 /* Build configuration list for PBXNativeTarget "Binary" */; buildPhases = ( - 9DD54F5E20DA0A230088D191 /* Sources */, - 9DD54F5F20DA0A230088D191 /* Frameworks */, - 9DD54F6020DA0A230088D191 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Binary; + productName = Binary; + productReference = 9DD31A2122FE58C400F65886 /* apple2048 */; + productType = "com.apple.product-type.tool"; + }; + 9DD31A2322FE58C400F65886 /* DiskImage */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9DD31A5122FE58C400F65886 /* Build configuration list for PBXNativeTarget "DiskImage" */; + buildPhases = ( + ); + buildRules = ( + ); + dependencies = ( + ); + name = DiskImage; + productName = DiskImage; + productReference = 9DD31A2422FE58C400F65886 /* apple2048.dsk */; + productType = "com.apple.product-type.tool"; + }; + 9DD31A2822FE58C400F65886 /* doNotBuild */ = { + isa = PBXNativeTarget; + buildConfigurationList = 9DD31A5422FE58C400F65886 /* Build configuration list for PBXNativeTarget "doNotBuild" */; + buildPhases = ( + 9DD31A2522FE58C400F65886 /* Sources */, + 9DD31A2622FE58C400F65886 /* Frameworks */, + 9DD31A2722FE58C400F65886 /* CopyFiles */, ); buildRules = ( ); @@ -182,62 +220,70 @@ ); name = doNotBuild; productName = doNotBuild; - productReference = 9DD54F6220DA0A230088D191 /* doNotBuild */; + productReference = 9DD31A2922FE58C400F65886 /* doNotBuild */; productType = "com.apple.product-type.tool"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - 9DD54F5920DA0A230088D191 /* Project object */ = { + 9DD31A1B22FE58C400F65886 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0940; + LastUpgradeCheck = 1030; ORGANIZATIONNAME = "Jeremy Rand"; TargetAttributes = { - 9DD54F5D20DA0A230088D191 = { - CreatedOnToolsVersion = 9.4.1; + 9DD31A1F22FE58C400F65886 = { + CreatedOnToolsVersion = 10.3; }; - 9DD54F6120DA0A230088D191 = { - CreatedOnToolsVersion = 9.4.1; + 9DD31A2022FE58C400F65886 = { + CreatedOnToolsVersion = 10.3; + }; + 9DD31A2322FE58C400F65886 = { + CreatedOnToolsVersion = 10.3; + }; + 9DD31A2822FE58C400F65886 = { + CreatedOnToolsVersion = 10.3; }; }; }; - buildConfigurationList = 9DD54F5C20DA0A230088D191 /* Build configuration list for PBXProject "apple2048" */; + buildConfigurationList = 9DD31A1E22FE58C400F65886 /* Build configuration list for PBXProject "apple2048" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, ); - mainGroup = 9DD54F5820DA0A230088D191; - productRefGroup = 9DD54F6320DA0A230088D191 /* Products */; + mainGroup = 9DD31A1A22FE58C400F65886; + productRefGroup = 9DD31A2222FE58C400F65886 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - 9DD54F5D20DA0A230088D191 /* apple2048 */, - 9DD54F6120DA0A230088D191 /* doNotBuild */, + 9DD31A1F22FE58C400F65886 /* apple2048 */, + 9DD31A2022FE58C400F65886 /* Binary */, + 9DD31A2322FE58C400F65886 /* DiskImage */, + 9DD31A2822FE58C400F65886 /* doNotBuild */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 9DD54F5E20DA0A230088D191 /* Sources */ = { + 9DD31A2522FE58C400F65886 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9DD54F9320DA0A4A0088D191 /* anim.c in Sources */, - 9DD54F9420DA0A4A0088D191 /* ui.c in Sources */, - 9DD54F9220DA0A4A0088D191 /* apple2048.c in Sources */, - 9DD54F9120DA0A4A0088D191 /* game.c in Sources */, - 9DD54F6820DA0A230088D191 /* Makefile in Sources */, - 9DD54F9020DA0A4A0088D191 /* textpage.s in Sources */, + 9DD31A6422FE592E00F65886 /* anim.c in Sources */, + 9DD31A6322FE592E00F65886 /* game.c in Sources */, + 9DD31A2E22FE58C400F65886 /* Makefile in Sources */, + 9DD31A6622FE592E00F65886 /* textpage.s in Sources */, + 9DD31A6522FE592E00F65886 /* apple2048.c in Sources */, + 9DD31A6222FE592E00F65886 /* ui.c in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ - 9DD54F7D20DA0A230088D191 /* Debug */ = { + 9DD31A4922FE58C400F65886 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -287,12 +333,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; }; - 9DD54F7E20DA0A230088D191 /* Release */ = { + 9DD31A4A22FE58C400F65886 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -337,10 +384,11 @@ GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; }; name = Release; }; - 9DD54F8020DA0A230088D191 /* Debug */ = { + 9DD31A4C22FE58C400F65886 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; @@ -355,7 +403,7 @@ }; name = Debug; }; - 9DD54F8120DA0A230088D191 /* Release */ = { + 9DD31A4D22FE58C400F65886 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CODE_SIGN_STYLE = Automatic; @@ -367,24 +415,66 @@ }; name = Release; }; - 9DD54F8320DA0A230088D191 /* Debug */ = { + 9DD31A4F22FE58C400F65886 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VD9FGCW36C; + PRODUCT_NAME = apple2048; + }; + name = Debug; + }; + 9DD31A5022FE58C400F65886 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VD9FGCW36C; + PRODUCT_NAME = apple2048; + }; + name = Release; + }; + 9DD31A5222FE58C400F65886 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VD9FGCW36C; + PRODUCT_NAME = apple2048.dsk; + }; + name = Debug; + }; + 9DD31A5322FE58C400F65886 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = VD9FGCW36C; + PRODUCT_NAME = apple2048.dsk; + }; + name = Release; + }; + 9DD31A5522FE58C400F65886 /* 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/apple2048.build/$CONFIGURATION/apple2048.build/DerivedSources, + /usr/local/share/cc65/include, + ); PRODUCT_NAME = doNotBuild; }; name = Debug; }; - 9DD54F8420DA0A230088D191 /* Release */ = { + 9DD31A5622FE58C400F65886 /* 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/apple2048.build/$CONFIGURATION/apple2048.build/DerivedSources, + /usr/local/share/cc65/include, + ); PRODUCT_NAME = doNotBuild; }; name = Release; @@ -392,34 +482,52 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 9DD54F5C20DA0A230088D191 /* Build configuration list for PBXProject "apple2048" */ = { + 9DD31A1E22FE58C400F65886 /* Build configuration list for PBXProject "apple2048" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9DD54F7D20DA0A230088D191 /* Debug */, - 9DD54F7E20DA0A230088D191 /* Release */, + 9DD31A4922FE58C400F65886 /* Debug */, + 9DD31A4A22FE58C400F65886 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9DD54F7F20DA0A230088D191 /* Build configuration list for PBXLegacyTarget "apple2048" */ = { + 9DD31A4B22FE58C400F65886 /* Build configuration list for PBXLegacyTarget "apple2048" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9DD54F8020DA0A230088D191 /* Debug */, - 9DD54F8120DA0A230088D191 /* Release */, + 9DD31A4C22FE58C400F65886 /* Debug */, + 9DD31A4D22FE58C400F65886 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 9DD54F8220DA0A230088D191 /* Build configuration list for PBXNativeTarget "doNotBuild" */ = { + 9DD31A4E22FE58C400F65886 /* Build configuration list for PBXNativeTarget "Binary" */ = { isa = XCConfigurationList; buildConfigurations = ( - 9DD54F8320DA0A230088D191 /* Debug */, - 9DD54F8420DA0A230088D191 /* Release */, + 9DD31A4F22FE58C400F65886 /* Debug */, + 9DD31A5022FE58C400F65886 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9DD31A5122FE58C400F65886 /* Build configuration list for PBXNativeTarget "DiskImage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9DD31A5222FE58C400F65886 /* Debug */, + 9DD31A5322FE58C400F65886 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 9DD31A5422FE58C400F65886 /* Build configuration list for PBXNativeTarget "doNotBuild" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 9DD31A5522FE58C400F65886 /* Debug */, + 9DD31A5622FE58C400F65886 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; - rootObject = 9DD54F5920DA0A230088D191 /* Project object */; + rootObject = 9DD31A1B22FE58C400F65886 /* Project object */; } diff --git a/apple2048.xcodeproj/project.xcworkspace/xcuserdata/jrand.xcuserdatad/UserInterfaceState.xcuserstate b/apple2048.xcodeproj/project.xcworkspace/xcuserdata/jrand.xcuserdatad/UserInterfaceState.xcuserstate index 0f138389fcaa26364faabf739c4595b241c96ae8..f5873bcb3bb483d45beddf7009c4b1c25c8c063c 100644 GIT binary patch delta 10286 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 B98v%P literal 35172 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 + + + + + + diff --git a/apple2048.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist b/apple2048.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist index 928937f..fd8e1bd 100644 --- a/apple2048.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/apple2048.xcodeproj/xcuserdata/jrand.xcuserdatad/xcschemes/xcschememanagement.plist @@ -4,15 +4,25 @@ SchemeUserState + Binary.xcscheme_^#shared#^_ + + orderHint + 1 + + DiskImage.xcscheme_^#shared#^_ + + orderHint + 2 + apple2048.xcscheme_^#shared#^_ orderHint 0 - doNotBuild.xcscheme + doNotBuild.xcscheme_^#shared#^_ orderHint - 1 + 3 diff --git a/apple2048/Makefile b/apple2048/Makefile index 37d1ab6..d812ffc 100644 --- a/apple2048/Makefile +++ b/apple2048/Makefile @@ -52,7 +52,8 @@ CPU = 65816 # 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/apple2048/make/DevApple.vii b/apple2048/make/DevApple.vii index 5432bb5cd7ff471c46c66d1f2617510a28dbebfc..e6ceda80e0fee9fda4ff78da97806dbe473ca7f2 100644 GIT binary patch delta 14 Vcmca$e8G4F3qRwg&8+;Vxd1B#1sMPU delta 14 Vcmca$e8G4F3qRwW&8+;Vxd1AG1p@#8 diff --git a/apple2048/make/V2Make.scpt b/apple2048/make/V2Make.scpt index 9d6b1e826da201f27dce11ebd7afb18eb289e405..a27cc9d58c1788b07894d64fd02846037c0614f9 100644 GIT binary patch delta 490 zcmYjM%}N4M7(J64QO8Q5MJqQ65p^RX!d)dHl~4;Sh=}Vr>gX^t%}?q|YU2Y8^aMc= z1VvBL3q&iSH)!3eGlQV_a_{}V`<-*X^Su-wSKhwT3FRpn{-lq>-*hru%Pi!TL(D3VbG(cU zs*uoNz=97O9@;3Nf--U_&QiscIumY4$3Y&7z{gqkIWhc(K#d|gT;2j5zLL@n#wTo2 zk8>9T=4GPpcucl+Vurvat=L5Cle$YzglP~hX;AWC677(sV+)(u#xB-lL?8VjZYkZ1 z=jf5zA*G8Jf4kf|E75#D-vI)OMz;1D8I+6SQ`(E#2ejeG14Jh4%v)L9LwUz&5hJAN xVbXgZ54cd9fonDmQ(r0xA!?rPdZOb>t04~ThGDhB&s5gg5PfzoDOMm(=qXT2zb-)?eObYKlVppKv+GL)+eM*sb0cQ-idz7ICLeQowfGWoi@&2M!MZCFWtA+^h?0#tOO-K#msY zNKkX{BSVTqOc ' + 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/apple2048/make/errorFilter.sh b/apple2048/make/errorFilter.sh index 30259c1..b041ac2 100755 --- a/apple2048/make/errorFilter.sh +++ b/apple2048/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/apple2048/make/head.mk b/apple2048/make/head.mk index 28ebc58..4fcc688 100644 --- a/apple2048/make/head.mk +++ b/apple2048/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/apple2048/make/tail.mk b/apple2048/make/tail.mk index fd961e5..3d6256c 100644 --- a/apple2048/make/tail.mk +++ b/apple2048/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 $@ $<