mirror of
https://github.com/jeremysrand/a2sudoku.git
synced 2025-08-14 10:26:18 +00:00
Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
|
c99e5a9325 | ||
|
be2e901aa1 | ||
|
75f85b94e8 | ||
|
beb9d2666f | ||
|
8339c67440 | ||
|
1726987a2f | ||
|
8ca3f246f4 | ||
|
ccf77c65f1 | ||
|
e24a32f86a | ||
|
44576f49ae | ||
|
6e9118715a | ||
|
7de66a1a73 | ||
|
34d429b207 | ||
|
bdaa030309 |
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2018 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.
|
@@ -2,3 +2,7 @@ A2Sudoku
|
|||||||
========
|
========
|
||||||
|
|
||||||
This is an implementation of Sudoku written for the Apple //. It is my HackFest entry at KansasFest 2015.
|
This is an implementation of Sudoku written for the Apple //. It is my HackFest entry at KansasFest 2015.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
[Download a disk image](https://github.com/jeremysrand/a2sudoku/releases/download/2.0/a2sudoku.dsk)
|
||||||
|
BIN
a2sudoku.png
Normal file
BIN
a2sudoku.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 9.0 KiB |
@@ -3,96 +3,181 @@
|
|||||||
archiveVersion = 1;
|
archiveVersion = 1;
|
||||||
classes = {
|
classes = {
|
||||||
};
|
};
|
||||||
objectVersion = 46;
|
objectVersion = 50;
|
||||||
objects = {
|
objects = {
|
||||||
|
|
||||||
|
/* Begin PBXBuildFile section */
|
||||||
|
9DAE6F2422FD2551007BD489 /* AppleCommander.jar in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DAE6F2322FD2551007BD489 /* AppleCommander.jar */; };
|
||||||
|
9DAE6F2622FD2551007BD489 /* bastokenizer-tools-bt-0.2.0.jar in Frameworks */ = {isa = PBXBuildFile; fileRef = 9DAE6F2522FD2551007BD489 /* bastokenizer-tools-bt-0.2.0.jar */; };
|
||||||
|
9DAE6F2822FD2551007BD489 /* createDiskImage in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAE6F2722FD2551007BD489 /* createDiskImage */; };
|
||||||
|
9DAE6F2A22FD2551007BD489 /* bt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAE6F2922FD2551007BD489 /* bt */; };
|
||||||
|
9DAE6F2C22FD2551007BD489 /* DevApple.vii in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAE6F2B22FD2551007BD489 /* DevApple.vii */; };
|
||||||
|
9DAE6F2E22FD2551007BD489 /* dos33_template.dsk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAE6F2D22FD2551007BD489 /* dos33_template.dsk */; };
|
||||||
|
9DAE6F3022FD2551007BD489 /* errorFilter.sh in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAE6F2F22FD2551007BD489 /* errorFilter.sh */; };
|
||||||
|
9DAE6F3222FD2551007BD489 /* head.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAE6F3122FD2551007BD489 /* head.mk */; };
|
||||||
|
9DAE6F3422FD2551007BD489 /* prodos_template.dsk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAE6F3322FD2551007BD489 /* prodos_template.dsk */; };
|
||||||
|
9DAE6F3622FD2551007BD489 /* tail.mk in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAE6F3522FD2551007BD489 /* tail.mk */; };
|
||||||
|
9DAE6F3822FD2551007BD489 /* V2Make.scpt in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAE6F3722FD2551007BD489 /* V2Make.scpt */; };
|
||||||
|
9DAE6F3B22FD2551007BD489 /* a2sudoku.xcscheme in CopyFiles */ = {isa = PBXBuildFile; fileRef = 9DAE6F3A22FD2551007BD489 /* a2sudoku.xcscheme */; };
|
||||||
|
9DAE6F5922FD257E007BD489 /* mouseWrapper.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DAE6F4E22FD257E007BD489 /* mouseWrapper.c */; };
|
||||||
|
9DAE6F5A22FD257E007BD489 /* puzzles.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DAE6F5022FD257E007BD489 /* puzzles.c */; };
|
||||||
|
9DAE6F5B22FD257E007BD489 /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DAE6F5122FD257E007BD489 /* main.c */; };
|
||||||
|
9DAE6F5C22FD257E007BD489 /* Makefile in Sources */ = {isa = PBXBuildFile; fileRef = 9DAE6F5422FD257E007BD489 /* Makefile */; };
|
||||||
|
9DAE6F5D22FD257E007BD489 /* ui.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DAE6F5722FD257E007BD489 /* ui.c */; };
|
||||||
|
9DAE6F5E22FD257E007BD489 /* game.c in Sources */ = {isa = PBXBuildFile; fileRef = 9DAE6F5822FD257E007BD489 /* game.c */; };
|
||||||
|
/* End PBXBuildFile section */
|
||||||
|
|
||||||
|
/* Begin PBXCopyFilesBuildPhase section */
|
||||||
|
9DAE6F1A22FD2551007BD489 /* CopyFiles */ = {
|
||||||
|
isa = PBXCopyFilesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
dstPath = /usr/share/man/man1/;
|
||||||
|
dstSubfolderSpec = 0;
|
||||||
|
files = (
|
||||||
|
9DAE6F3422FD2551007BD489 /* prodos_template.dsk in CopyFiles */,
|
||||||
|
9DAE6F2A22FD2551007BD489 /* bt in CopyFiles */,
|
||||||
|
9DAE6F2E22FD2551007BD489 /* dos33_template.dsk in CopyFiles */,
|
||||||
|
9DAE6F2822FD2551007BD489 /* createDiskImage in CopyFiles */,
|
||||||
|
9DAE6F3822FD2551007BD489 /* V2Make.scpt in CopyFiles */,
|
||||||
|
9DAE6F3222FD2551007BD489 /* head.mk in CopyFiles */,
|
||||||
|
9DAE6F2C22FD2551007BD489 /* DevApple.vii in CopyFiles */,
|
||||||
|
9DAE6F3B22FD2551007BD489 /* a2sudoku.xcscheme in CopyFiles */,
|
||||||
|
9DAE6F3022FD2551007BD489 /* errorFilter.sh in CopyFiles */,
|
||||||
|
9DAE6F3622FD2551007BD489 /* tail.mk in CopyFiles */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 1;
|
||||||
|
};
|
||||||
|
/* End PBXCopyFilesBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXFileReference section */
|
/* Begin PBXFileReference section */
|
||||||
9DEE9C261B569637003E353E /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
|
9DAE6F1422FD2551007BD489 /* a2sudoku */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = a2sudoku; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
9DEE9C271B569637003E353E /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
|
9DAE6F1722FD2551007BD489 /* a2sudoku.dsk */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = a2sudoku.dsk; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
9DEE9C291B569637003E353E /* AppleCommander.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = AppleCommander.jar; path = make/AppleCommander.jar; sourceTree = "<group>"; };
|
9DAE6F1C22FD2551007BD489 /* doNotBuild */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = doNotBuild; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
9DEE9C2A1B569637003E353E /* createDiskImage */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = createDiskImage; path = make/createDiskImage; sourceTree = "<group>"; };
|
9DAE6F2322FD2551007BD489 /* AppleCommander.jar */ = {isa = PBXFileReference; lastKnownFileType = archive.jar; name = AppleCommander.jar; path = make/AppleCommander.jar; sourceTree = "<group>"; };
|
||||||
9DEE9C2B1B569637003E353E /* DevApple.vii */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = DevApple.vii; path = make/DevApple.vii; sourceTree = "<group>"; };
|
9DAE6F2522FD2551007BD489 /* 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 = "<group>"; };
|
||||||
9DEE9C2C1B569637003E353E /* dos33_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = dos33_template.dsk; path = make/dos33_template.dsk; sourceTree = "<group>"; };
|
9DAE6F2722FD2551007BD489 /* createDiskImage */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = createDiskImage; path = make/createDiskImage; sourceTree = "<group>"; };
|
||||||
9DEE9C2D1B569637003E353E /* head.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = head.mk; path = make/head.mk; sourceTree = "<group>"; };
|
9DAE6F2922FD2551007BD489 /* bt */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = bt; path = make/bt; sourceTree = "<group>"; };
|
||||||
9DEE9C2E1B569637003E353E /* prodos_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = prodos_template.dsk; path = make/prodos_template.dsk; sourceTree = "<group>"; };
|
9DAE6F2B22FD2551007BD489 /* DevApple.vii */ = {isa = PBXFileReference; lastKnownFileType = file.bplist; name = DevApple.vii; path = make/DevApple.vii; sourceTree = "<group>"; };
|
||||||
9DEE9C2F1B569637003E353E /* tail.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = tail.mk; path = make/tail.mk; sourceTree = "<group>"; };
|
9DAE6F2D22FD2551007BD489 /* dos33_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = dos33_template.dsk; path = make/dos33_template.dsk; sourceTree = "<group>"; };
|
||||||
9DEE9C301B569638003E353E /* V2Make.scpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = V2Make.scpt; path = make/V2Make.scpt; sourceTree = "<group>"; };
|
9DAE6F2F22FD2551007BD489 /* errorFilter.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; name = errorFilter.sh; path = make/errorFilter.sh; sourceTree = "<group>"; };
|
||||||
9DEE9C361B569717003E353E /* puzzles.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = puzzles.c; sourceTree = "<group>"; };
|
9DAE6F3122FD2551007BD489 /* head.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = head.mk; path = make/head.mk; sourceTree = "<group>"; };
|
||||||
9DEE9C371B569717003E353E /* puzzles.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = puzzles.h; sourceTree = "<group>"; };
|
9DAE6F3322FD2551007BD489 /* prodos_template.dsk */ = {isa = PBXFileReference; lastKnownFileType = file; name = prodos_template.dsk; path = make/prodos_template.dsk; sourceTree = "<group>"; };
|
||||||
9DEE9C381B56979C003E353E /* game.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = game.c; sourceTree = "<group>"; };
|
9DAE6F3522FD2551007BD489 /* tail.mk */ = {isa = PBXFileReference; lastKnownFileType = text; name = tail.mk; path = make/tail.mk; sourceTree = "<group>"; };
|
||||||
9DEE9C391B56979C003E353E /* game.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = game.h; sourceTree = "<group>"; };
|
9DAE6F3722FD2551007BD489 /* V2Make.scpt */ = {isa = PBXFileReference; lastKnownFileType = file; name = V2Make.scpt; path = make/V2Make.scpt; sourceTree = "<group>"; };
|
||||||
9DEE9C3A1B56CFC0003E353E /* ui.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = ui.c; sourceTree = "<group>"; };
|
9DAE6F3A22FD2551007BD489 /* a2sudoku.xcscheme */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = a2sudoku.xcscheme; path = a2sudoku.xcodeproj/xcshareddata/xcschemes/a2sudoku.xcscheme; sourceTree = SOURCE_ROOT; };
|
||||||
9DEE9C3B1B56CFC0003E353E /* ui.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ui.h; sourceTree = "<group>"; };
|
9DAE6F4A22FD2569007BD489 /* LICENSE */ = {isa = PBXFileReference; lastKnownFileType = text; path = LICENSE; sourceTree = "<group>"; };
|
||||||
9DEE9C3C1B570AED003E353E /* a2e.hi.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = a2e.hi.s; sourceTree = "<group>"; };
|
9DAE6F4B22FD2569007BD489 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
||||||
9DEE9C3D1B582C3A003E353E /* generateSudoku.pl */ = {isa = PBXFileReference; lastKnownFileType = text.script.perl; path = generateSudoku.pl; sourceTree = "<group>"; };
|
9DAE6F4C22FD2569007BD489 /* a2sudoku.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = a2sudoku.png; sourceTree = "<group>"; };
|
||||||
9DEE9C3E1B5837B0003E353E /* easy.puzzles */ = {isa = PBXFileReference; lastKnownFileType = file; path = easy.puzzles; sourceTree = "<group>"; };
|
9DAE6F4D22FD257E007BD489 /* generateSudoku.pl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = generateSudoku.pl; sourceTree = "<group>"; };
|
||||||
9DEE9C3F1B5837B0003E353E /* hard.puzzles */ = {isa = PBXFileReference; lastKnownFileType = file; path = hard.puzzles; sourceTree = "<group>"; };
|
9DAE6F4E22FD257E007BD489 /* mouseWrapper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mouseWrapper.c; sourceTree = "<group>"; };
|
||||||
9DEE9C401B5837B0003E353E /* medium.puzzles */ = {isa = PBXFileReference; lastKnownFileType = file; path = medium.puzzles; sourceTree = "<group>"; };
|
9DAE6F4F22FD257E007BD489 /* puzzles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = puzzles.h; sourceTree = "<group>"; };
|
||||||
9DEE9C411B583FE4003E353E /* puzzles.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = puzzles.txt; sourceTree = "<group>"; };
|
9DAE6F5022FD257E007BD489 /* puzzles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = puzzles.c; sourceTree = "<group>"; };
|
||||||
9DEE9C431B588B93003E353E /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = "<group>"; };
|
9DAE6F5122FD257E007BD489 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
|
||||||
|
9DAE6F5222FD257E007BD489 /* puzzles.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = puzzles.txt; sourceTree = "<group>"; };
|
||||||
|
9DAE6F5322FD257E007BD489 /* ui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ui.h; sourceTree = "<group>"; };
|
||||||
|
9DAE6F5422FD257E007BD489 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
|
||||||
|
9DAE6F5522FD257E007BD489 /* game.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = game.h; sourceTree = "<group>"; };
|
||||||
|
9DAE6F5622FD257E007BD489 /* mouseWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mouseWrapper.h; sourceTree = "<group>"; };
|
||||||
|
9DAE6F5722FD257E007BD489 /* ui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ui.c; sourceTree = "<group>"; };
|
||||||
|
9DAE6F5822FD257E007BD489 /* game.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = game.c; sourceTree = "<group>"; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
|
|
||||||
|
/* Begin PBXFrameworksBuildPhase section */
|
||||||
|
9DAE6F1922FD2551007BD489 /* Frameworks */ = {
|
||||||
|
isa = PBXFrameworksBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
9DAE6F2422FD2551007BD489 /* AppleCommander.jar in Frameworks */,
|
||||||
|
9DAE6F2622FD2551007BD489 /* bastokenizer-tools-bt-0.2.0.jar in Frameworks */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXFrameworksBuildPhase section */
|
||||||
|
|
||||||
/* Begin PBXGroup section */
|
/* Begin PBXGroup section */
|
||||||
9DEE9C1F1B569637003E353E = {
|
9DAE6F0D22FD2551007BD489 = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
9DEE9C431B588B93003E353E /* README.md */,
|
9DAE6F4C22FD2569007BD489 /* a2sudoku.png */,
|
||||||
9DEE9C251B569637003E353E /* a2sudoku */,
|
9DAE6F4A22FD2569007BD489 /* LICENSE */,
|
||||||
|
9DAE6F4B22FD2569007BD489 /* README.md */,
|
||||||
|
9DAE6F1D22FD2551007BD489 /* a2sudoku */,
|
||||||
|
9DAE6F1522FD2551007BD489 /* Products */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
9DEE9C251B569637003E353E /* a2sudoku */ = {
|
9DAE6F1522FD2551007BD489 /* Products */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
9DEE9C261B569637003E353E /* main.c */,
|
9DAE6F1422FD2551007BD489 /* a2sudoku */,
|
||||||
9DEE9C361B569717003E353E /* puzzles.c */,
|
9DAE6F1722FD2551007BD489 /* a2sudoku.dsk */,
|
||||||
9DEE9C371B569717003E353E /* puzzles.h */,
|
9DAE6F1C22FD2551007BD489 /* doNotBuild */,
|
||||||
9DEE9C381B56979C003E353E /* game.c */,
|
);
|
||||||
9DEE9C391B56979C003E353E /* game.h */,
|
name = Products;
|
||||||
9DEE9C3A1B56CFC0003E353E /* ui.c */,
|
sourceTree = "<group>";
|
||||||
9DEE9C3B1B56CFC0003E353E /* ui.h */,
|
};
|
||||||
9DEE9C3C1B570AED003E353E /* a2e.hi.s */,
|
9DAE6F1D22FD2551007BD489 /* a2sudoku */ = {
|
||||||
9DEE9C421B583FEF003E353E /* Puzzles */,
|
isa = PBXGroup;
|
||||||
9DEE9C271B569637003E353E /* Makefile */,
|
children = (
|
||||||
9DEE9C281B569637003E353E /* make */,
|
9DAE6F5822FD257E007BD489 /* game.c */,
|
||||||
|
9DAE6F5522FD257E007BD489 /* game.h */,
|
||||||
|
9DAE6F5122FD257E007BD489 /* main.c */,
|
||||||
|
9DAE6F5422FD257E007BD489 /* Makefile */,
|
||||||
|
9DAE6F4E22FD257E007BD489 /* mouseWrapper.c */,
|
||||||
|
9DAE6F5622FD257E007BD489 /* mouseWrapper.h */,
|
||||||
|
9DAE6F5722FD257E007BD489 /* ui.c */,
|
||||||
|
9DAE6F5322FD257E007BD489 /* ui.h */,
|
||||||
|
9DAE6F5F22FD258D007BD489 /* puzzles */,
|
||||||
|
9DAE6F2222FD2551007BD489 /* make */,
|
||||||
|
9DAE6F3922FD2551007BD489 /* Supporting Files */,
|
||||||
);
|
);
|
||||||
path = a2sudoku;
|
path = a2sudoku;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
9DEE9C281B569637003E353E /* make */ = {
|
9DAE6F2222FD2551007BD489 /* make */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
9DEE9C291B569637003E353E /* AppleCommander.jar */,
|
9DAE6F2322FD2551007BD489 /* AppleCommander.jar */,
|
||||||
9DEE9C2A1B569637003E353E /* createDiskImage */,
|
9DAE6F2522FD2551007BD489 /* bastokenizer-tools-bt-0.2.0.jar */,
|
||||||
9DEE9C2B1B569637003E353E /* DevApple.vii */,
|
9DAE6F2722FD2551007BD489 /* createDiskImage */,
|
||||||
9DEE9C2C1B569637003E353E /* dos33_template.dsk */,
|
9DAE6F2922FD2551007BD489 /* bt */,
|
||||||
9DEE9C2D1B569637003E353E /* head.mk */,
|
9DAE6F2B22FD2551007BD489 /* DevApple.vii */,
|
||||||
9DEE9C2E1B569637003E353E /* prodos_template.dsk */,
|
9DAE6F2D22FD2551007BD489 /* dos33_template.dsk */,
|
||||||
9DEE9C2F1B569637003E353E /* tail.mk */,
|
9DAE6F2F22FD2551007BD489 /* errorFilter.sh */,
|
||||||
9DEE9C301B569638003E353E /* V2Make.scpt */,
|
9DAE6F3122FD2551007BD489 /* head.mk */,
|
||||||
|
9DAE6F3322FD2551007BD489 /* prodos_template.dsk */,
|
||||||
|
9DAE6F3522FD2551007BD489 /* tail.mk */,
|
||||||
|
9DAE6F3722FD2551007BD489 /* V2Make.scpt */,
|
||||||
);
|
);
|
||||||
name = make;
|
name = make;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
9DEE9C421B583FEF003E353E /* Puzzles */ = {
|
9DAE6F3922FD2551007BD489 /* Supporting Files */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
9DEE9C411B583FE4003E353E /* puzzles.txt */,
|
9DAE6F3A22FD2551007BD489 /* a2sudoku.xcscheme */,
|
||||||
9DEE9C3E1B5837B0003E353E /* easy.puzzles */,
|
|
||||||
9DEE9C3F1B5837B0003E353E /* hard.puzzles */,
|
|
||||||
9DEE9C401B5837B0003E353E /* medium.puzzles */,
|
|
||||||
9DEE9C3D1B582C3A003E353E /* generateSudoku.pl */,
|
|
||||||
);
|
);
|
||||||
name = Puzzles;
|
name = "Supporting Files";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
9DAE6F5F22FD258D007BD489 /* puzzles */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
9DAE6F4D22FD257E007BD489 /* generateSudoku.pl */,
|
||||||
|
9DAE6F5022FD257E007BD489 /* puzzles.c */,
|
||||||
|
9DAE6F4F22FD257E007BD489 /* puzzles.h */,
|
||||||
|
9DAE6F5222FD257E007BD489 /* puzzles.txt */,
|
||||||
|
);
|
||||||
|
name = puzzles;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
||||||
/* Begin PBXLegacyTarget section */
|
/* Begin PBXLegacyTarget section */
|
||||||
9DEE9C241B569637003E353E /* a2sudoku */ = {
|
9DAE6F1222FD2551007BD489 /* a2sudoku */ = {
|
||||||
isa = PBXLegacyTarget;
|
isa = PBXLegacyTarget;
|
||||||
buildArgumentsString = "-C a2sudoku $(ACTION)";
|
buildArgumentsString = "-C a2sudoku $(ACTION)";
|
||||||
buildConfigurationList = 9DEE9C331B569638003E353E /* Build configuration list for PBXLegacyTarget "a2sudoku" */;
|
buildConfigurationList = 9DAE6F3E22FD2551007BD489 /* Build configuration list for PBXLegacyTarget "a2sudoku" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
);
|
);
|
||||||
buildToolPath = /usr/bin/make;
|
buildToolPath = /usr/bin/make;
|
||||||
@@ -104,56 +189,149 @@
|
|||||||
};
|
};
|
||||||
/* End PBXLegacyTarget section */
|
/* End PBXLegacyTarget section */
|
||||||
|
|
||||||
|
/* Begin PBXNativeTarget section */
|
||||||
|
9DAE6F1322FD2551007BD489 /* Binary */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 9DAE6F4122FD2551007BD489 /* Build configuration list for PBXNativeTarget "Binary" */;
|
||||||
|
buildPhases = (
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = Binary;
|
||||||
|
productName = Binary;
|
||||||
|
productReference = 9DAE6F1422FD2551007BD489 /* a2sudoku */;
|
||||||
|
productType = "com.apple.product-type.tool";
|
||||||
|
};
|
||||||
|
9DAE6F1622FD2551007BD489 /* DiskImage */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 9DAE6F4422FD2551007BD489 /* Build configuration list for PBXNativeTarget "DiskImage" */;
|
||||||
|
buildPhases = (
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = DiskImage;
|
||||||
|
productName = DiskImage;
|
||||||
|
productReference = 9DAE6F1722FD2551007BD489 /* a2sudoku.dsk */;
|
||||||
|
productType = "com.apple.product-type.tool";
|
||||||
|
};
|
||||||
|
9DAE6F1B22FD2551007BD489 /* doNotBuild */ = {
|
||||||
|
isa = PBXNativeTarget;
|
||||||
|
buildConfigurationList = 9DAE6F4722FD2551007BD489 /* Build configuration list for PBXNativeTarget "doNotBuild" */;
|
||||||
|
buildPhases = (
|
||||||
|
9DAE6F1822FD2551007BD489 /* Sources */,
|
||||||
|
9DAE6F1922FD2551007BD489 /* Frameworks */,
|
||||||
|
9DAE6F1A22FD2551007BD489 /* CopyFiles */,
|
||||||
|
);
|
||||||
|
buildRules = (
|
||||||
|
);
|
||||||
|
dependencies = (
|
||||||
|
);
|
||||||
|
name = doNotBuild;
|
||||||
|
productName = doNotBuild;
|
||||||
|
productReference = 9DAE6F1C22FD2551007BD489 /* doNotBuild */;
|
||||||
|
productType = "com.apple.product-type.tool";
|
||||||
|
};
|
||||||
|
/* End PBXNativeTarget section */
|
||||||
|
|
||||||
/* Begin PBXProject section */
|
/* Begin PBXProject section */
|
||||||
9DEE9C201B569637003E353E /* Project object */ = {
|
9DAE6F0E22FD2551007BD489 /* Project object */ = {
|
||||||
isa = PBXProject;
|
isa = PBXProject;
|
||||||
attributes = {
|
attributes = {
|
||||||
LastUpgradeCheck = 0640;
|
LastUpgradeCheck = 1030;
|
||||||
ORGANIZATIONNAME = "Jeremy Rand";
|
ORGANIZATIONNAME = "Jeremy Rand";
|
||||||
TargetAttributes = {
|
TargetAttributes = {
|
||||||
9DEE9C241B569637003E353E = {
|
9DAE6F1222FD2551007BD489 = {
|
||||||
CreatedOnToolsVersion = 6.4;
|
CreatedOnToolsVersion = 10.3;
|
||||||
|
};
|
||||||
|
9DAE6F1322FD2551007BD489 = {
|
||||||
|
CreatedOnToolsVersion = 10.3;
|
||||||
|
};
|
||||||
|
9DAE6F1622FD2551007BD489 = {
|
||||||
|
CreatedOnToolsVersion = 10.3;
|
||||||
|
};
|
||||||
|
9DAE6F1B22FD2551007BD489 = {
|
||||||
|
CreatedOnToolsVersion = 10.3;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
buildConfigurationList = 9DEE9C231B569637003E353E /* Build configuration list for PBXProject "a2sudoku" */;
|
buildConfigurationList = 9DAE6F1122FD2551007BD489 /* Build configuration list for PBXProject "a2sudoku" */;
|
||||||
compatibilityVersion = "Xcode 3.2";
|
compatibilityVersion = "Xcode 9.3";
|
||||||
developmentRegion = English;
|
developmentRegion = en;
|
||||||
hasScannedForEncodings = 0;
|
hasScannedForEncodings = 0;
|
||||||
knownRegions = (
|
knownRegions = (
|
||||||
en,
|
en,
|
||||||
);
|
);
|
||||||
mainGroup = 9DEE9C1F1B569637003E353E;
|
mainGroup = 9DAE6F0D22FD2551007BD489;
|
||||||
|
productRefGroup = 9DAE6F1522FD2551007BD489 /* Products */;
|
||||||
projectDirPath = "";
|
projectDirPath = "";
|
||||||
projectRoot = "";
|
projectRoot = "";
|
||||||
targets = (
|
targets = (
|
||||||
9DEE9C241B569637003E353E /* a2sudoku */,
|
9DAE6F1222FD2551007BD489 /* a2sudoku */,
|
||||||
|
9DAE6F1322FD2551007BD489 /* Binary */,
|
||||||
|
9DAE6F1622FD2551007BD489 /* DiskImage */,
|
||||||
|
9DAE6F1B22FD2551007BD489 /* doNotBuild */,
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
/* End PBXProject section */
|
/* End PBXProject section */
|
||||||
|
|
||||||
|
/* Begin PBXSourcesBuildPhase section */
|
||||||
|
9DAE6F1822FD2551007BD489 /* Sources */ = {
|
||||||
|
isa = PBXSourcesBuildPhase;
|
||||||
|
buildActionMask = 2147483647;
|
||||||
|
files = (
|
||||||
|
9DAE6F5922FD257E007BD489 /* mouseWrapper.c in Sources */,
|
||||||
|
9DAE6F5A22FD257E007BD489 /* puzzles.c in Sources */,
|
||||||
|
9DAE6F5C22FD257E007BD489 /* Makefile in Sources */,
|
||||||
|
9DAE6F5E22FD257E007BD489 /* game.c in Sources */,
|
||||||
|
9DAE6F5B22FD257E007BD489 /* main.c in Sources */,
|
||||||
|
9DAE6F5D22FD257E007BD489 /* ui.c in Sources */,
|
||||||
|
);
|
||||||
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
|
};
|
||||||
|
/* End PBXSourcesBuildPhase section */
|
||||||
|
|
||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
9DEE9C311B569638003E353E /* Debug */ = {
|
9DAE6F3C22FD2551007BD489 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
ENABLE_TESTABILITY = YES;
|
||||||
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GCC_DYNAMIC_NO_PIC = NO;
|
GCC_DYNAMIC_NO_PIC = NO;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
@@ -161,42 +339,55 @@
|
|||||||
"DEBUG=1",
|
"DEBUG=1",
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
);
|
);
|
||||||
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
|
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.10;
|
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||||
MTL_ENABLE_DEBUG_INFO = YES;
|
MTL_FAST_MATH = YES;
|
||||||
ONLY_ACTIVE_ARCH = YES;
|
ONLY_ACTIVE_ARCH = YES;
|
||||||
SDKROOT = macosx;
|
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
9DEE9C321B569638003E353E /* Release */ = {
|
9DAE6F3D22FD2551007BD489 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||||
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
|
CLANG_ANALYZER_NONNULL = YES;
|
||||||
|
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||||
|
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
|
||||||
CLANG_CXX_LIBRARY = "libc++";
|
CLANG_CXX_LIBRARY = "libc++";
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
CLANG_ENABLE_OBJC_ARC = YES;
|
CLANG_ENABLE_OBJC_ARC = YES;
|
||||||
|
CLANG_ENABLE_OBJC_WEAK = YES;
|
||||||
|
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
|
||||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_COMMA = YES;
|
||||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
|
||||||
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
|
||||||
|
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||||
CLANG_WARN_EMPTY_BODY = YES;
|
CLANG_WARN_EMPTY_BODY = YES;
|
||||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||||
|
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||||
CLANG_WARN_INT_CONVERSION = YES;
|
CLANG_WARN_INT_CONVERSION = YES;
|
||||||
|
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
|
||||||
|
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
|
||||||
|
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
|
||||||
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
|
||||||
|
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
|
||||||
|
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||||
|
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||||
|
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
|
||||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
ENABLE_NS_ASSERTIONS = NO;
|
ENABLE_NS_ASSERTIONS = NO;
|
||||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu99;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
GCC_NO_COMMON_BLOCKS = YES;
|
GCC_NO_COMMON_BLOCKS = YES;
|
||||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||||
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
|
||||||
@@ -204,16 +395,18 @@
|
|||||||
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
|
||||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.10;
|
|
||||||
MTL_ENABLE_DEBUG_INFO = NO;
|
MTL_ENABLE_DEBUG_INFO = NO;
|
||||||
SDKROOT = macosx;
|
MTL_FAST_MATH = YES;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
9DEE9C341B569638003E353E /* Debug */ = {
|
9DAE6F3F22FD2551007BD489 /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
DEBUGGING_SYMBOLS = YES;
|
DEBUGGING_SYMBOLS = YES;
|
||||||
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
|
DEVELOPMENT_TEAM = VD9FGCW36C;
|
||||||
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
|
GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
|
||||||
GCC_OPTIMIZATION_LEVEL = 0;
|
GCC_OPTIMIZATION_LEVEL = 0;
|
||||||
OTHER_CFLAGS = "";
|
OTHER_CFLAGS = "";
|
||||||
@@ -222,37 +415,131 @@
|
|||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
9DEE9C351B569638003E353E /* Release */ = {
|
9DAE6F4022FD2551007BD489 /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
|
DEVELOPMENT_TEAM = VD9FGCW36C;
|
||||||
OTHER_CFLAGS = "";
|
OTHER_CFLAGS = "";
|
||||||
OTHER_LDFLAGS = "";
|
OTHER_LDFLAGS = "";
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
9DAE6F4222FD2551007BD489 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = VD9FGCW36C;
|
||||||
|
PRODUCT_NAME = a2sudoku;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
9DAE6F4322FD2551007BD489 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = VD9FGCW36C;
|
||||||
|
PRODUCT_NAME = a2sudoku;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
9DAE6F4522FD2551007BD489 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = VD9FGCW36C;
|
||||||
|
PRODUCT_NAME = a2sudoku.dsk;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
9DAE6F4622FD2551007BD489 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = VD9FGCW36C;
|
||||||
|
PRODUCT_NAME = a2sudoku.dsk;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
|
9DAE6F4822FD2551007BD489 /* Debug */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = VD9FGCW36C;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = "__fastcall__=\"\"";
|
||||||
|
HEADER_SEARCH_PATHS = (
|
||||||
|
$TEMP_ROOT/a2sudoku.build/$CONFIGURATION/a2sudoku.build/DerivedSources,
|
||||||
|
/usr/local/share/cc65/include,
|
||||||
|
);
|
||||||
|
PRODUCT_NAME = doNotBuild;
|
||||||
|
};
|
||||||
|
name = Debug;
|
||||||
|
};
|
||||||
|
9DAE6F4922FD2551007BD489 /* Release */ = {
|
||||||
|
isa = XCBuildConfiguration;
|
||||||
|
buildSettings = {
|
||||||
|
CODE_SIGN_STYLE = Automatic;
|
||||||
|
DEVELOPMENT_TEAM = VD9FGCW36C;
|
||||||
|
GCC_PREPROCESSOR_DEFINITIONS = "__fastcall__=\"\"";
|
||||||
|
HEADER_SEARCH_PATHS = (
|
||||||
|
$TEMP_ROOT/a2sudoku.build/$CONFIGURATION/a2sudoku.build/DerivedSources,
|
||||||
|
/usr/local/share/cc65/include,
|
||||||
|
);
|
||||||
|
PRODUCT_NAME = doNotBuild;
|
||||||
|
};
|
||||||
|
name = Release;
|
||||||
|
};
|
||||||
/* End XCBuildConfiguration section */
|
/* End XCBuildConfiguration section */
|
||||||
|
|
||||||
/* Begin XCConfigurationList section */
|
/* Begin XCConfigurationList section */
|
||||||
9DEE9C231B569637003E353E /* Build configuration list for PBXProject "a2sudoku" */ = {
|
9DAE6F1122FD2551007BD489 /* Build configuration list for PBXProject "a2sudoku" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
9DEE9C311B569638003E353E /* Debug */,
|
9DAE6F3C22FD2551007BD489 /* Debug */,
|
||||||
9DEE9C321B569638003E353E /* Release */,
|
9DAE6F3D22FD2551007BD489 /* Release */,
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
};
|
};
|
||||||
9DEE9C331B569638003E353E /* Build configuration list for PBXLegacyTarget "a2sudoku" */ = {
|
9DAE6F3E22FD2551007BD489 /* Build configuration list for PBXLegacyTarget "a2sudoku" */ = {
|
||||||
isa = XCConfigurationList;
|
isa = XCConfigurationList;
|
||||||
buildConfigurations = (
|
buildConfigurations = (
|
||||||
9DEE9C341B569638003E353E /* Debug */,
|
9DAE6F3F22FD2551007BD489 /* Debug */,
|
||||||
9DEE9C351B569638003E353E /* Release */,
|
9DAE6F4022FD2551007BD489 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
9DAE6F4122FD2551007BD489 /* Build configuration list for PBXNativeTarget "Binary" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
9DAE6F4222FD2551007BD489 /* Debug */,
|
||||||
|
9DAE6F4322FD2551007BD489 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
9DAE6F4422FD2551007BD489 /* Build configuration list for PBXNativeTarget "DiskImage" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
9DAE6F4522FD2551007BD489 /* Debug */,
|
||||||
|
9DAE6F4622FD2551007BD489 /* Release */,
|
||||||
|
);
|
||||||
|
defaultConfigurationIsVisible = 0;
|
||||||
|
defaultConfigurationName = Release;
|
||||||
|
};
|
||||||
|
9DAE6F4722FD2551007BD489 /* Build configuration list for PBXNativeTarget "doNotBuild" */ = {
|
||||||
|
isa = XCConfigurationList;
|
||||||
|
buildConfigurations = (
|
||||||
|
9DAE6F4822FD2551007BD489 /* Debug */,
|
||||||
|
9DAE6F4922FD2551007BD489 /* Release */,
|
||||||
);
|
);
|
||||||
defaultConfigurationIsVisible = 0;
|
defaultConfigurationIsVisible = 0;
|
||||||
defaultConfigurationName = Release;
|
defaultConfigurationName = Release;
|
||||||
};
|
};
|
||||||
/* End XCConfigurationList section */
|
/* End XCConfigurationList section */
|
||||||
};
|
};
|
||||||
rootObject = 9DEE9C201B569637003E353E /* Project object */;
|
rootObject = 9DAE6F0E22FD2551007BD489 /* Project object */;
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>IDEDidComputeMac32BitWarning</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
@@ -0,0 +1,8 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>BuildSystemType</key>
|
||||||
|
<string>Original</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
BIN
a2sudoku.xcodeproj/project.xcworkspace/xcuserdata/jrand.xcuserdatad/UserInterfaceState.xcuserstate
generated
Normal file
BIN
a2sudoku.xcodeproj/project.xcworkspace/xcuserdata/jrand.xcuserdatad/UserInterfaceState.xcuserstate
generated
Normal file
Binary file not shown.
@@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Scheme
|
<Scheme
|
||||||
LastUpgradeVersion = "0640"
|
LastUpgradeVersion = "0830"
|
||||||
version = "1.3">
|
version = "1.3">
|
||||||
<BuildAction
|
<BuildAction
|
||||||
parallelizeBuildables = "YES"
|
parallelizeBuildables = "YES"
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
buildForAnalyzing = "YES">
|
buildForAnalyzing = "YES">
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "9DEE9C241B569637003E353E"
|
BlueprintIdentifier = "9D0B917C1F526C2D004D7E0B"
|
||||||
BuildableName = "a2sudoku"
|
BuildableName = "a2sudoku"
|
||||||
BlueprintName = "a2sudoku"
|
BlueprintName = "a2sudoku"
|
||||||
ReferencedContainer = "container:a2sudoku.xcodeproj">
|
ReferencedContainer = "container:a2sudoku.xcodeproj">
|
||||||
@@ -23,44 +23,77 @@
|
|||||||
</BuildActionEntries>
|
</BuildActionEntries>
|
||||||
</BuildAction>
|
</BuildAction>
|
||||||
<TestAction
|
<TestAction
|
||||||
|
buildConfiguration = "Debug"
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
shouldUseLaunchSchemeArgsEnv = "YES">
|
||||||
buildConfiguration = "Debug">
|
|
||||||
<Testables>
|
<Testables>
|
||||||
</Testables>
|
</Testables>
|
||||||
|
<AdditionalOptions>
|
||||||
|
</AdditionalOptions>
|
||||||
</TestAction>
|
</TestAction>
|
||||||
<LaunchAction
|
<LaunchAction
|
||||||
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
buildConfiguration = "Debug"
|
||||||
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
selectedDebuggerIdentifier = ""
|
||||||
|
selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
|
||||||
launchStyle = "0"
|
launchStyle = "0"
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
buildConfiguration = "Debug"
|
|
||||||
ignoresPersistentStateOnLaunch = "NO"
|
ignoresPersistentStateOnLaunch = "NO"
|
||||||
debugDocumentVersioning = "YES"
|
debugDocumentVersioning = "YES"
|
||||||
|
debugServiceExtension = "internal"
|
||||||
allowLocationSimulation = "YES">
|
allowLocationSimulation = "YES">
|
||||||
|
<PathRunnable
|
||||||
|
runnableDebuggingMode = "0"
|
||||||
|
FilePath = "/usr/bin/make">
|
||||||
|
</PathRunnable>
|
||||||
<MacroExpansion>
|
<MacroExpansion>
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "9DEE9C241B569637003E353E"
|
BlueprintIdentifier = "9D0B917C1F526C2D004D7E0B"
|
||||||
BuildableName = "a2sudoku"
|
BuildableName = "a2sudoku"
|
||||||
BlueprintName = "a2sudoku"
|
BlueprintName = "a2sudoku"
|
||||||
ReferencedContainer = "container:a2sudoku.xcodeproj">
|
ReferencedContainer = "container:a2sudoku.xcodeproj">
|
||||||
</BuildableReference>
|
</BuildableReference>
|
||||||
</MacroExpansion>
|
</MacroExpansion>
|
||||||
|
<CommandLineArguments>
|
||||||
|
<CommandLineArgument
|
||||||
|
argument = "-C"
|
||||||
|
isEnabled = "YES">
|
||||||
|
</CommandLineArgument>
|
||||||
|
<CommandLineArgument
|
||||||
|
argument = "$PROJECT_DIR/a2sudoku"
|
||||||
|
isEnabled = "YES">
|
||||||
|
</CommandLineArgument>
|
||||||
|
<CommandLineArgument
|
||||||
|
argument = "OBJECT_FILE_DIR=$OBJECT_FILE_DIR"
|
||||||
|
isEnabled = "YES">
|
||||||
|
</CommandLineArgument>
|
||||||
|
<CommandLineArgument
|
||||||
|
argument = "DERIVED_SOURCES_DIR=$DERIVED_SOURCES_DIR"
|
||||||
|
isEnabled = "YES">
|
||||||
|
</CommandLineArgument>
|
||||||
|
<CommandLineArgument
|
||||||
|
argument = "TARGET_BUILD_DIR=$TARGET_BUILD_DIR"
|
||||||
|
isEnabled = "YES">
|
||||||
|
</CommandLineArgument>
|
||||||
|
<CommandLineArgument
|
||||||
|
argument = "execute"
|
||||||
|
isEnabled = "YES">
|
||||||
|
</CommandLineArgument>
|
||||||
|
</CommandLineArguments>
|
||||||
<AdditionalOptions>
|
<AdditionalOptions>
|
||||||
</AdditionalOptions>
|
</AdditionalOptions>
|
||||||
</LaunchAction>
|
</LaunchAction>
|
||||||
<ProfileAction
|
<ProfileAction
|
||||||
|
buildConfiguration = "Release"
|
||||||
shouldUseLaunchSchemeArgsEnv = "YES"
|
shouldUseLaunchSchemeArgsEnv = "YES"
|
||||||
savedToolIdentifier = ""
|
savedToolIdentifier = ""
|
||||||
useCustomWorkingDirectory = "NO"
|
useCustomWorkingDirectory = "NO"
|
||||||
buildConfiguration = "Release"
|
|
||||||
debugDocumentVersioning = "YES">
|
debugDocumentVersioning = "YES">
|
||||||
<MacroExpansion>
|
<MacroExpansion>
|
||||||
<BuildableReference
|
<BuildableReference
|
||||||
BuildableIdentifier = "primary"
|
BuildableIdentifier = "primary"
|
||||||
BlueprintIdentifier = "9DEE9C241B569637003E353E"
|
BlueprintIdentifier = "9D0B917C1F526C2D004D7E0B"
|
||||||
BuildableName = "a2sudoku"
|
BuildableName = "a2sudoku"
|
||||||
BlueprintName = "a2sudoku"
|
BlueprintName = "a2sudoku"
|
||||||
ReferencedContainer = "container:a2sudoku.xcodeproj">
|
ReferencedContainer = "container:a2sudoku.xcodeproj">
|
@@ -4,18 +4,25 @@
|
|||||||
<dict>
|
<dict>
|
||||||
<key>SchemeUserState</key>
|
<key>SchemeUserState</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>a2sudoku.xcscheme</key>
|
<key>Binary.xcscheme_^#shared#^_</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>1</integer>
|
||||||
|
</dict>
|
||||||
|
<key>DiskImage.xcscheme_^#shared#^_</key>
|
||||||
|
<dict>
|
||||||
|
<key>orderHint</key>
|
||||||
|
<integer>2</integer>
|
||||||
|
</dict>
|
||||||
|
<key>a2sudoku.xcscheme_^#shared#^_</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>orderHint</key>
|
<key>orderHint</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
<key>doNotBuild.xcscheme_^#shared#^_</key>
|
||||||
<key>SuppressBuildableAutocreation</key>
|
|
||||||
<dict>
|
<dict>
|
||||||
<key>9DEE9C241B569637003E353E</key>
|
<key>orderHint</key>
|
||||||
<dict>
|
<integer>3</integer>
|
||||||
<key>primary</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
|
@@ -18,10 +18,6 @@ include make/head.mk
|
|||||||
# The name of your system or binary file to build goes here:
|
# The name of your system or binary file to build goes here:
|
||||||
PGM=a2sudoku
|
PGM=a2sudoku
|
||||||
|
|
||||||
# Set the config you are building for. See these pages for details:
|
|
||||||
# http://cc65.github.io/cc65/doc/apple2.html#s4
|
|
||||||
# http://cc65.github.io/cc65/doc/apple2enh.html#s4
|
|
||||||
#
|
|
||||||
# Uncomment the one you want below (the first one is the default):
|
# Uncomment the one you want below (the first one is the default):
|
||||||
# MACHINE = apple2
|
# MACHINE = apple2
|
||||||
# MACHINE = apple2-dos33
|
# MACHINE = apple2-dos33
|
||||||
@@ -34,9 +30,16 @@ MACHINE = apple2-loader
|
|||||||
# MACHINE = apple2enh-loader
|
# MACHINE = apple2enh-loader
|
||||||
# MACHINE = apple2enh-reboot
|
# MACHINE = apple2enh-reboot
|
||||||
|
|
||||||
|
# Uncomment the appropriate project type. If your entry point is
|
||||||
|
# main() in a .c file, then your project type is cc65. If your
|
||||||
|
# entry point is in an assembly file, then you project type is
|
||||||
|
# ca65:
|
||||||
|
PROJECT_TYPE = cc65
|
||||||
|
# PROJECT_TYPE = ca65
|
||||||
|
|
||||||
# Uncomment and set this to your starting address in Apple II memory
|
# Uncomment and set this to your starting address in Apple II memory
|
||||||
# if necessary:
|
# if necessary:
|
||||||
START_ADDR = 4000
|
# START_ADDR = 6000
|
||||||
|
|
||||||
# Set the default CPU to assemble for. You can change this in the
|
# Set the default CPU to assemble for. You can change this in the
|
||||||
# body of a .s file using control commands like ".PC02". Uncomment
|
# body of a .s file using control commands like ".PC02". Uncomment
|
||||||
@@ -48,26 +51,19 @@ START_ADDR = 4000
|
|||||||
# Note: You can assemble for 65816 in 16-bit mode but the C compiler
|
# Note: You can assemble for 65816 in 16-bit mode but the C compiler
|
||||||
# will only produce 8-bit code.
|
# will only produce 8-bit code.
|
||||||
|
|
||||||
# Any *.c files in your main project directory will automatically be
|
# Add any other directories where you are putting C or assembly source
|
||||||
# built. But, if you have subdirectories with C files in them, you
|
# files to this list. Note that if you are generating source files into
|
||||||
# should add them to the list of C_SRCS to build. Do that by
|
# $(GENDIR), you should add $(GENDIR) to SRCDIRS here:
|
||||||
# uncommenting the following line and changing "someSubDir" to match
|
SRCDIRS+=
|
||||||
# the subdirectory you have created. Add multiple lines like this
|
|
||||||
# for each subdirectory:
|
|
||||||
# C_SRCS += $(wildcard someSubDir/*.c)
|
|
||||||
|
|
||||||
# Any *.s files in your main project directory will automatically be
|
|
||||||
# built. But, if you have subdirectories with assembly files in them,
|
|
||||||
# you should add them to the list of ASM_SRCS to build. Do that by
|
|
||||||
# uncommenting the following line and changing "someSubDir" to match
|
|
||||||
# the subdirectory you have created. Add multiple lines like this
|
|
||||||
# for each subdirectory:
|
|
||||||
# ASM_SRCS += $(wildcard someSubDir/*.s)
|
|
||||||
|
|
||||||
# If you have a non-standard cc65 install, you may need to change
|
# If you have a non-standard cc65 install, you may need to change
|
||||||
# some of these. Uncomment the following line and change it to the
|
# some of these. Uncomment the following line and change it to the
|
||||||
# correct path to CC65_HOME if the default is not correct:
|
# correct path to CC65_HOME if the default is not correct. If you
|
||||||
# export CC65_HOME := /usr/local/lib/cc65
|
# are using cc65 v2.13.3, the default is:
|
||||||
|
# /usr/local/lib/cc65
|
||||||
|
# If you are using cc65 v2.17, the default is:
|
||||||
|
# /usr/local/share/cc65
|
||||||
|
# export CC65_HOME := /path/to/your/cc65/directory
|
||||||
#
|
#
|
||||||
# If the path to the cc65 binaries is not correct, uncomment this
|
# If the path to the cc65 binaries is not correct, uncomment this
|
||||||
# line and change it:
|
# line and change it:
|
||||||
@@ -75,7 +71,7 @@ START_ADDR = 4000
|
|||||||
|
|
||||||
# If you want to add arguments to the compile commandline, add them
|
# If you want to add arguments to the compile commandline, add them
|
||||||
# to this variable:
|
# to this variable:
|
||||||
# CFLAGS += -Os
|
CFLAGS += -Os
|
||||||
|
|
||||||
# If you want to add arguments to the assembly commandline, add them
|
# If you want to add arguments to the assembly commandline, add them
|
||||||
# to this variable:
|
# to this variable:
|
||||||
@@ -85,10 +81,181 @@ START_ADDR = 4000
|
|||||||
# this variable:
|
# this variable:
|
||||||
# LDFLAGS += -v
|
# LDFLAGS += -v
|
||||||
|
|
||||||
|
# If you want to add arguments to the BASIC tokenizer commandline,
|
||||||
|
# add them to this valiable:
|
||||||
|
# BASICFLAGS += --optimize
|
||||||
|
|
||||||
|
# If you want to link the lores graphics driver with your executable,
|
||||||
|
# uncomment the next line.
|
||||||
|
# DRIVERS += loresgr
|
||||||
|
#
|
||||||
|
# To use the lores driver, add code which looks like this to your
|
||||||
|
# project:
|
||||||
|
#
|
||||||
|
# #include "drivers/a2_lores_drv.h"
|
||||||
|
# int main(void)
|
||||||
|
# {
|
||||||
|
# tgi_install(&a2_lores_drv);
|
||||||
|
# tgi_init();
|
||||||
|
# // Use the graphics driver
|
||||||
|
# tgi_uninstall();
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Read the $CC65_HOME/include/tgi.h file to see what the
|
||||||
|
# driver interface provides. Also check out
|
||||||
|
# $CC65_HOME/include/apple2.h to see the colour definitions.
|
||||||
|
|
||||||
|
# If you want to link the hires graphics driver with your executable,
|
||||||
|
# uncomment the next line.
|
||||||
|
DRIVERS += hiresgr
|
||||||
|
#
|
||||||
|
# To use the hires driver, add code which looks like this to your
|
||||||
|
# project:
|
||||||
|
#
|
||||||
|
# #include "drivers/a2_hires_drv.h"
|
||||||
|
# int main(void)
|
||||||
|
# {
|
||||||
|
# tgi_install(&a2_hires_drv);
|
||||||
|
# tgi_init();
|
||||||
|
# // Use the graphics driver
|
||||||
|
# tgi_uninstall();
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Read the $CC65_HOME/cc65/include/tgi.h file to see what the
|
||||||
|
# driver interface provides. Also check out
|
||||||
|
# $CC65_HOME/include/apple2.h to see the colour definitions.
|
||||||
|
|
||||||
|
# If you want to link the extended memory driver with your executable,
|
||||||
|
# uncomment the next line.
|
||||||
|
# DRIVERS += auxmem
|
||||||
|
#
|
||||||
|
# To use the auxmem driver, add code which looks like this to your
|
||||||
|
# project:
|
||||||
|
#
|
||||||
|
# #include "drivers/a2_auxmem_drv.h"
|
||||||
|
# int main(void)
|
||||||
|
# {
|
||||||
|
# em_install(&a2_auxmem_drv);
|
||||||
|
# // Use the auxmem driver
|
||||||
|
# em_uninstall();
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Read the $CC65_HOME/include/em.h file to see what the
|
||||||
|
# driver interface provides.
|
||||||
|
|
||||||
|
# If you want to link the joystick driver with your executable,
|
||||||
|
# uncomment the next line.
|
||||||
|
# DRIVERS += joystick
|
||||||
|
#
|
||||||
|
# To use the joystick driver, add code which looks like this to your
|
||||||
|
# project:
|
||||||
|
#
|
||||||
|
# #include "drivers/a2_joystick_drv.h"
|
||||||
|
# int main(void)
|
||||||
|
# {
|
||||||
|
# joy_install(&a2_joystick_drv);
|
||||||
|
# // Use the joystick driver
|
||||||
|
# joy_uninstall();
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Read the $CC65_HOME/include/joystick.h file to see what the
|
||||||
|
# driver interface provides.
|
||||||
|
|
||||||
|
# If you want to link the mouse driver with your executable,
|
||||||
|
# uncomment the next line.
|
||||||
|
DRIVERS += mouse
|
||||||
|
#
|
||||||
|
# To use the mouse driver, add code which looks like this to your
|
||||||
|
# project:
|
||||||
|
#
|
||||||
|
# #include "drivers/a2_mouse_drv.h"
|
||||||
|
# int main(void)
|
||||||
|
# {
|
||||||
|
# mouse_install(&mouse_def_callbacks, &a2_mouse_drv);
|
||||||
|
# // Use the mouse driver
|
||||||
|
# mouse_uninstall();
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Read the $CC65_HOME/include/mouse.h file to see what the
|
||||||
|
# driver interface provides.
|
||||||
|
|
||||||
|
# If you want to link the serial driver with your executable,
|
||||||
|
# uncomment the next line.
|
||||||
|
# DRIVERS += serial
|
||||||
|
#
|
||||||
|
# To use the serial driver, add code which looks like this to your
|
||||||
|
# project:
|
||||||
|
#
|
||||||
|
# #include "drivers/a2_serial_drv.h"
|
||||||
|
# int main(void)
|
||||||
|
# {
|
||||||
|
# ser_install(&a2_serial_drv);
|
||||||
|
# // Use the serial driver
|
||||||
|
# ser_uninstall();
|
||||||
|
# }
|
||||||
|
#
|
||||||
|
# Read the $CC65_HOME/include/serial.h file to see what the
|
||||||
|
# driver interface provides.
|
||||||
|
|
||||||
# If you have java installed in a non-standard location, you can set
|
# If you have java installed in a non-standard location, you can set
|
||||||
# the path to it by uncommenting the following line:
|
# the path to it by uncommenting the following line:
|
||||||
# export JAVA=/usr/bin/java
|
# export JAVA=/usr/bin/java
|
||||||
|
|
||||||
|
# If you want to copy one or more files or directories to the target disk
|
||||||
|
# image, add the root directory to this variable. All files will be
|
||||||
|
# copied from the source to the target using the same path from the source.
|
||||||
|
#
|
||||||
|
# For example, if you set COPYDIRS to dir and in your project you have
|
||||||
|
# the following files:
|
||||||
|
# dir/mySystemFile
|
||||||
|
# dir/newDir/anotherFile
|
||||||
|
#
|
||||||
|
# Then, during the copy phase, mySystemFile will be copied into the root
|
||||||
|
# of the disk and anotherFile will be copied into a directory named
|
||||||
|
# newDir. The newDir directory will be created if it does not already
|
||||||
|
# exist.
|
||||||
|
#
|
||||||
|
# The name of the file to copy is checked and if it ends in:
|
||||||
|
# .as - It assumes the file is in AppleSingle format. The .as
|
||||||
|
# suffix is stripped from the name when copied to the
|
||||||
|
# disk image.
|
||||||
|
# .<char> - If the file ends with a single character which matches
|
||||||
|
# a DOS 3.3 file type (A, B, T, etc) it uses that value as
|
||||||
|
# the file type of the file copied to the disk image. The
|
||||||
|
# single character is removed from the file name.
|
||||||
|
# .<TLA> - If the file ends with a three letter alpha extension, it
|
||||||
|
# uses that TLA as the file type of the file copied to the
|
||||||
|
# disk image. The TLA is removed from the file name.
|
||||||
|
#
|
||||||
|
# If you do not provide any type information for your filenames,
|
||||||
|
# it will be copied as a binary.
|
||||||
|
#
|
||||||
|
COPYDIRS=$(GENDIR)/tocopy
|
||||||
|
|
||||||
|
# Add any rules you want to execute before any compiles or assembly
|
||||||
|
# commands are called here, if any. You can generate .c, .s or .h
|
||||||
|
# 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.
|
||||||
|
gen: $(GENDIR)/genfiles
|
||||||
|
|
||||||
|
$(GENDIR)/genfiles:
|
||||||
|
$(MKDIR) $(GENDIR)/tocopy
|
||||||
|
./generateSudoku.pl $(GENDIR)/tocopy puzzles.txt
|
||||||
|
touch $(GENDIR)/genfiles
|
||||||
|
|
||||||
|
# For any files you generated in the gen target above, you should
|
||||||
|
# add rules in genclean to remove those generated files when you
|
||||||
|
# clean your build.
|
||||||
|
genclean:
|
||||||
|
rm -rf $(GENDIR)/tocopy
|
||||||
|
rm -f $(GENDIR)/genfiles
|
||||||
|
|
||||||
# Do not change anything else below here...
|
# Do not change anything else below here...
|
||||||
include make/tail.mk
|
include make/tail.mk
|
||||||
|
2096
a2sudoku/a2e.hi.s
2096
a2sudoku/a2e.hi.s
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -104,6 +104,7 @@ sub generatePuzzle
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
my $destdir=shift;
|
||||||
|
|
||||||
while (<>) {
|
while (<>) {
|
||||||
chomp;
|
chomp;
|
||||||
@@ -124,17 +125,17 @@ while (<>) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open(FILE, ">easy.puzzles") || die "Unable to open easy.puzzles";
|
open(FILE, ">$destdir/easy.puzzles.bin") || die "Unable to open easy.puzzles.bin";
|
||||||
print FILE pack("v", $#easy + 1);
|
print FILE pack("v", $#easy + 1);
|
||||||
print FILE join("", @easy);
|
print FILE join("", @easy);
|
||||||
close (FILE);
|
close (FILE);
|
||||||
|
|
||||||
open(FILE, ">medium.puzzles") || die "Unable to open medium.puzzles";
|
open(FILE, ">$destdir/medium.puzzles.bin") || die "Unable to open medium.puzzles.bin";
|
||||||
print FILE pack("v", $#medium + 1);
|
print FILE pack("v", $#medium + 1);
|
||||||
print FILE join("", @medium);
|
print FILE join("", @medium);
|
||||||
close (FILE);
|
close (FILE);
|
||||||
|
|
||||||
open(FILE, ">hard.puzzles") || die "Unable to open hard.puzzles";
|
open(FILE, ">$destdir/hard.puzzles.bin") || die "Unable to open hard.puzzles.bin";
|
||||||
print FILE pack("v", $#hard + 1);
|
print FILE pack("v", $#hard + 1);
|
||||||
print FILE join("", @hard);
|
print FILE join("", @hard);
|
||||||
close (FILE);
|
close (FILE);
|
||||||
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
a2sudoku/make/bastokenizer-tools-bt-0.2.0.jar
Normal file
BIN
a2sudoku/make/bastokenizer-tools-bt-0.2.0.jar
Normal file
Binary file not shown.
34
a2sudoku/make/bt
Executable file
34
a2sudoku/make/bt
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -z "$JAVA" ]
|
||||||
|
then
|
||||||
|
for item in "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home" /Library/Java/JavaVirtualMachines/*/Contents/Home /usr
|
||||||
|
do
|
||||||
|
if [ -x "$item/bin/java" ]
|
||||||
|
then
|
||||||
|
JAVA="$item/bin/java"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -z "$JAVA" ]
|
||||||
|
then
|
||||||
|
echo Cannot find a path to a Java runtime.
|
||||||
|
echo Go to https://java.com/download if you do not have Java.
|
||||||
|
echo If you do have Java, you may need to uncomment the JAVA
|
||||||
|
echo line in the Makefile and set it to the path for your
|
||||||
|
echo Java runtime binary.
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
INPUTFILE=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
tr -d '©' < "$INPUTFILE" > /tmp/bt_filtered.$$
|
||||||
|
|
||||||
|
"$JAVA" -jar make/bastokenizer-tools-bt-0.2.0.jar $* /tmp/bt_filtered.$$
|
||||||
|
RESULT=$?
|
||||||
|
|
||||||
|
rm /tmp/bt_filtered.$$
|
||||||
|
exit $RESULT
|
@@ -1,8 +1,13 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
merlinStartAddr() {
|
||||||
|
awk '$1 ~ /^[oO][rR][gG]$/{print $2}' linkscript.s | sed 's/^[0$]*//'
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if [ $# -lt 5 ]
|
if [ $# -lt 5 ]
|
||||||
then
|
then
|
||||||
echo USAGE: $0 '<AppleCommander> <machine> <diskimage> <binary>'
|
echo USAGE: $0 '<AppleCommander> <machine> <diskimage> <binary> <startaddress> <otherfilesordirs...>'
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -29,16 +34,21 @@ then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
APPLECOMMANDER=$1
|
APPLECOMMANDER=$1
|
||||||
MACHINE=$2
|
shift
|
||||||
DISKIMAGE=$3
|
|
||||||
PROGRAM=$4
|
|
||||||
STARTADDR=`echo $5 | sed 's/^0*//'`
|
|
||||||
|
|
||||||
if [ ! -f "$PROGRAM" ]
|
MACHINE=$1
|
||||||
then
|
shift
|
||||||
echo "Cannot file executable $PROGRAM"
|
|
||||||
exit 1
|
DISKIMAGE=$1
|
||||||
fi
|
shift
|
||||||
|
|
||||||
|
PROGRAM=$1
|
||||||
|
shift
|
||||||
|
|
||||||
|
STARTADDR=`echo $1 | sed 's/^0*//'`
|
||||||
|
shift
|
||||||
|
|
||||||
|
SOURCEFILE=$PROGRAM
|
||||||
|
|
||||||
case "$MACHINE" in
|
case "$MACHINE" in
|
||||||
apple2)
|
apple2)
|
||||||
@@ -46,8 +56,10 @@ case "$MACHINE" in
|
|||||||
DELETELOADER=1
|
DELETELOADER=1
|
||||||
RENAMELOADER=0
|
RENAMELOADER=0
|
||||||
DELETEBASIC=0
|
DELETEBASIC=0
|
||||||
|
COPYBINARY=1
|
||||||
HASHEADER=1
|
HASHEADER=1
|
||||||
FILETYPE="bin"
|
FILETYPE="bin"
|
||||||
|
BASICFILETYPE="bas"
|
||||||
TARGETFILE=`basename $PROGRAM`
|
TARGETFILE=`basename $PROGRAM`
|
||||||
MAXFILENAMELEN=15
|
MAXFILENAMELEN=15
|
||||||
;;
|
;;
|
||||||
@@ -57,8 +69,10 @@ case "$MACHINE" in
|
|||||||
DELETELOADER=1
|
DELETELOADER=1
|
||||||
RENAMELOADER=0
|
RENAMELOADER=0
|
||||||
DELETEBASIC=0
|
DELETEBASIC=0
|
||||||
|
COPYBINARY=1
|
||||||
HASHEADER=1
|
HASHEADER=1
|
||||||
FILETYPE="bin"
|
FILETYPE="bin"
|
||||||
|
BASICFILETYPE="bas"
|
||||||
TARGETFILE=`basename $PROGRAM`
|
TARGETFILE=`basename $PROGRAM`
|
||||||
MAXFILENAMELEN=15
|
MAXFILENAMELEN=15
|
||||||
;;
|
;;
|
||||||
@@ -68,8 +82,10 @@ case "$MACHINE" in
|
|||||||
DELETELOADER=0
|
DELETELOADER=0
|
||||||
RENAMELOADER=0
|
RENAMELOADER=0
|
||||||
DELETEBASIC=0
|
DELETEBASIC=0
|
||||||
|
COPYBINARY=1
|
||||||
HASHEADER=1
|
HASHEADER=1
|
||||||
FILETYPE="bin"
|
FILETYPE="B"
|
||||||
|
BASICFILETYPE="A"
|
||||||
TARGETFILE=`basename $PROGRAM`
|
TARGETFILE=`basename $PROGRAM`
|
||||||
MAXFILENAMELEN=30
|
MAXFILENAMELEN=30
|
||||||
;;
|
;;
|
||||||
@@ -79,8 +95,10 @@ case "$MACHINE" in
|
|||||||
DELETELOADER=0
|
DELETELOADER=0
|
||||||
RENAMELOADER=0
|
RENAMELOADER=0
|
||||||
DELETEBASIC=0
|
DELETEBASIC=0
|
||||||
|
COPYBINARY=1
|
||||||
HASHEADER=1
|
HASHEADER=1
|
||||||
FILETYPE="bin"
|
FILETYPE="B"
|
||||||
|
BASICFILETYPE="A"
|
||||||
TARGETFILE=`basename $PROGRAM`
|
TARGETFILE=`basename $PROGRAM`
|
||||||
MAXFILENAMELEN=30
|
MAXFILENAMELEN=30
|
||||||
;;
|
;;
|
||||||
@@ -90,8 +108,10 @@ case "$MACHINE" in
|
|||||||
DELETELOADER=1
|
DELETELOADER=1
|
||||||
RENAMELOADER=0
|
RENAMELOADER=0
|
||||||
DELETEBASIC=1
|
DELETEBASIC=1
|
||||||
|
COPYBINARY=1
|
||||||
HASHEADER=0
|
HASHEADER=0
|
||||||
FILETYPE="sys"
|
FILETYPE="sys"
|
||||||
|
BASICFILETYPE="bas"
|
||||||
TARGETFILE=`basename $PROGRAM`.system
|
TARGETFILE=`basename $PROGRAM`.system
|
||||||
MAXFILENAMELEN=15
|
MAXFILENAMELEN=15
|
||||||
;;
|
;;
|
||||||
@@ -101,8 +121,10 @@ case "$MACHINE" in
|
|||||||
DELETELOADER=1
|
DELETELOADER=1
|
||||||
RENAMELOADER=0
|
RENAMELOADER=0
|
||||||
DELETEBASIC=1
|
DELETEBASIC=1
|
||||||
|
COPYBINARY=1
|
||||||
HASHEADER=0
|
HASHEADER=0
|
||||||
FILETYPE="sys"
|
FILETYPE="sys"
|
||||||
|
BASICFILETYPE="bas"
|
||||||
TARGETFILE=`basename $PROGRAM`.system
|
TARGETFILE=`basename $PROGRAM`.system
|
||||||
MAXFILENAMELEN=15
|
MAXFILENAMELEN=15
|
||||||
;;
|
;;
|
||||||
@@ -112,8 +134,10 @@ case "$MACHINE" in
|
|||||||
DELETELOADER=0
|
DELETELOADER=0
|
||||||
RENAMELOADER=1
|
RENAMELOADER=1
|
||||||
DELETEBASIC=1
|
DELETEBASIC=1
|
||||||
|
COPYBINARY=1
|
||||||
HASHEADER=1
|
HASHEADER=1
|
||||||
FILETYPE="bin"
|
FILETYPE="bin"
|
||||||
|
BASICFILETYPE="bas"
|
||||||
TARGETFILE=`basename $PROGRAM`
|
TARGETFILE=`basename $PROGRAM`
|
||||||
MAXFILENAMELEN=15
|
MAXFILENAMELEN=15
|
||||||
;;
|
;;
|
||||||
@@ -123,8 +147,10 @@ case "$MACHINE" in
|
|||||||
DELETELOADER=0
|
DELETELOADER=0
|
||||||
RENAMELOADER=1
|
RENAMELOADER=1
|
||||||
DELETEBASIC=1
|
DELETEBASIC=1
|
||||||
|
COPYBINARY=1
|
||||||
HASHEADER=1
|
HASHEADER=1
|
||||||
FILETYPE="bin"
|
FILETYPE="bin"
|
||||||
|
BASICFILETYPE="bas"
|
||||||
TARGETFILE=`basename $PROGRAM`
|
TARGETFILE=`basename $PROGRAM`
|
||||||
MAXFILENAMELEN=15
|
MAXFILENAMELEN=15
|
||||||
;;
|
;;
|
||||||
@@ -134,8 +160,10 @@ case "$MACHINE" in
|
|||||||
DELETELOADER=0
|
DELETELOADER=0
|
||||||
RENAMELOADER=1
|
RENAMELOADER=1
|
||||||
DELETEBASIC=1
|
DELETEBASIC=1
|
||||||
|
COPYBINARY=1
|
||||||
HASHEADER=1
|
HASHEADER=1
|
||||||
FILETYPE="bin"
|
FILETYPE="bin"
|
||||||
|
BASICFILETYPE="bas"
|
||||||
TARGETFILE=`basename $PROGRAM`
|
TARGETFILE=`basename $PROGRAM`
|
||||||
MAXFILENAMELEN=15
|
MAXFILENAMELEN=15
|
||||||
;;
|
;;
|
||||||
@@ -145,10 +173,68 @@ case "$MACHINE" in
|
|||||||
DELETELOADER=0
|
DELETELOADER=0
|
||||||
RENAMELOADER=1
|
RENAMELOADER=1
|
||||||
DELETEBASIC=1
|
DELETEBASIC=1
|
||||||
|
COPYBINARY=1
|
||||||
HASHEADER=1
|
HASHEADER=1
|
||||||
FILETYPE="bin"
|
FILETYPE="bin"
|
||||||
|
BASICFILETYPE="bas"
|
||||||
TARGETFILE=`basename $PROGRAM`
|
TARGETFILE=`basename $PROGRAM`
|
||||||
MAXFILENAMELEN=8
|
MAXFILENAMELEN=15
|
||||||
|
;;
|
||||||
|
|
||||||
|
apple2-basic)
|
||||||
|
TEMPLATE="make/prodos_template.dsk"
|
||||||
|
DELETELOADER=1
|
||||||
|
RENAMELOADER=0
|
||||||
|
DELETEBASIC=0
|
||||||
|
COPYBINARY=0
|
||||||
|
FILETYPE="bas"
|
||||||
|
BASICFILETYPE="bas"
|
||||||
|
TARGETFILE=`basename $PROGRAM`
|
||||||
|
SOURCEFILE=${PROGRAM}.tok
|
||||||
|
MAXFILENAMELEN=15
|
||||||
|
;;
|
||||||
|
|
||||||
|
apple2-dos33-basic)
|
||||||
|
TEMPLATE="make/dos33_template.dsk"
|
||||||
|
DELETELOADER=0
|
||||||
|
RENAMELOADER=0
|
||||||
|
DELETEBASIC=0
|
||||||
|
COPYBINARY=0
|
||||||
|
FILETYPE="A"
|
||||||
|
BASICFILETYPE="A"
|
||||||
|
TARGETFILE=`basename $PROGRAM`
|
||||||
|
SOURCEFILE=${PROGRAM}.tok
|
||||||
|
MAXFILENAMELEN=30
|
||||||
|
;;
|
||||||
|
|
||||||
|
apple2-merlin)
|
||||||
|
TEMPLATE="make/prodos_template.dsk"
|
||||||
|
DELETELOADER=1
|
||||||
|
RENAMELOADER=0
|
||||||
|
DELETEBASIC=0
|
||||||
|
COPYBINARY=1
|
||||||
|
HASHEADER=0
|
||||||
|
FILETYPE="bin"
|
||||||
|
BASICFILETYPE="bas"
|
||||||
|
TARGETFILE=`basename $PROGRAM`
|
||||||
|
MAXFILENAMELEN=15
|
||||||
|
|
||||||
|
STARTADDR=`merlinStartAddr`
|
||||||
|
;;
|
||||||
|
|
||||||
|
apple2-dos33-merlin)
|
||||||
|
TEMPLATE="make/dos33_template.dsk"
|
||||||
|
DELETELOADER=0
|
||||||
|
RENAMELOADER=0
|
||||||
|
DELETEBASIC=0
|
||||||
|
COPYBINARY=1
|
||||||
|
HASHEADER=0
|
||||||
|
FILETYPE="B"
|
||||||
|
BASICFILETYPE="A"
|
||||||
|
TARGETFILE=`basename $PROGRAM`
|
||||||
|
MAXFILENAMELEN=30
|
||||||
|
|
||||||
|
STARTADDR=`merlinStartAddr`
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
@@ -157,6 +243,19 @@ case "$MACHINE" in
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
STARTARG=""
|
||||||
|
if [ ! -z "$STARTADDR" ]
|
||||||
|
then
|
||||||
|
STARTARG="0x$STARTADDR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$SOURCEFILE" ]
|
||||||
|
then
|
||||||
|
echo "Cannot file executable $SOURCEFILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ ${#TARGETFILE} -gt $MAXFILENAMELEN ]
|
if [ ${#TARGETFILE} -gt $MAXFILENAMELEN ]
|
||||||
then
|
then
|
||||||
echo "The filename $TARGETFILE exceeds the max name length of the filesystem ($MAXFILENAMELEN)"
|
echo "The filename $TARGETFILE exceeds the max name length of the filesystem ($MAXFILENAMELEN)"
|
||||||
@@ -185,7 +284,7 @@ then
|
|||||||
rm -f "$DISKIMAGE"
|
rm -f "$DISKIMAGE"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
"$JAVA" -jar "$APPLECOMMANDER" -e "$DISKIMAGE" LOADER.SYSTEM | "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$LOADERFILE" sys
|
"$JAVA" -jar "$APPLECOMMANDER" -g "$DISKIMAGE" LOADER.SYSTEM | "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$LOADERFILE" sys
|
||||||
"$JAVA" -jar "$APPLECOMMANDER" -d "$DISKIMAGE" LOADER.SYSTEM
|
"$JAVA" -jar "$APPLECOMMANDER" -d "$DISKIMAGE" LOADER.SYSTEM
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -194,19 +293,81 @@ then
|
|||||||
"$JAVA" -jar "$APPLECOMMANDER" -d "$DISKIMAGE" BASIC.SYSTEM
|
"$JAVA" -jar "$APPLECOMMANDER" -d "$DISKIMAGE" BASIC.SYSTEM
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ $HASHEADER -eq 1 ]
|
if [ $COPYBINARY -eq 1 ]
|
||||||
then
|
then
|
||||||
HDR_STARTADDR=`od -t x2 -N 2 < "$PROGRAM" | head -1 | awk '{print $2}' | sed 's/^0*//'`
|
if [ "$CC65_SUPPORTS_APPLE_SINGLE" -eq 1 ]
|
||||||
|
then
|
||||||
|
"$JAVA" -jar "$APPLECOMMANDER" -as "$DISKIMAGE" "$TARGETFILE" < "$SOURCEFILE"
|
||||||
|
elif [ $HASHEADER -eq 1 ]
|
||||||
|
then
|
||||||
|
HDR_STARTADDR=`od -t x2 -N 2 < "$SOURCEFILE" | head -1 | awk '{print $2}' | sed 's/^0*//'`
|
||||||
if [ "$HDR_STARTADDR" = "$STARTADDR" ]
|
if [ "$HDR_STARTADDR" = "$STARTADDR" ]
|
||||||
then
|
then
|
||||||
dd if="$PROGRAM" bs=4 skip=1 | "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE 0x$STARTADDR
|
dd if="$SOURCEFILE" bs=4 skip=1 | "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE $STARTARG
|
||||||
else
|
else
|
||||||
"$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE 0x$STARTADDR < "$PROGRAM"
|
"$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE $STARTARG < "$SOURCEFILE"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
"$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE $STARTARG < "$SOURCEFILE"
|
||||||
fi
|
fi
|
||||||
else
|
|
||||||
"$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE < "$PROGRAM"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
"$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "easy.puzzles" "bin" < "easy.puzzles"
|
for ITEM in $*
|
||||||
"$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "hard.puzzles" "bin" < "hard.puzzles"
|
do
|
||||||
"$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "medium.puzzles" "bin" < "medium.puzzles"
|
# If this is a file matching *.tok, then this is an Applesoft BASIC file
|
||||||
|
# to copy to the disk image.
|
||||||
|
if [ -f "$ITEM" ] && echo "$ITEM" | grep '\.tok$' > /dev/null
|
||||||
|
then
|
||||||
|
DESTFILE=`basename "$ITEM" | sed 's/\.tok$//'`
|
||||||
|
"$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$DESTFILE" "$BASICFILETYPE" 0x801 < "$ITEM"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "$ITEM" ]
|
||||||
|
then
|
||||||
|
echo Unable to find directory $ITEM
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
OLDPWD=`pwd`
|
||||||
|
cd $ITEM
|
||||||
|
|
||||||
|
find . -type f -print | while read FILE
|
||||||
|
do
|
||||||
|
TRANSFERARG=-p
|
||||||
|
FILETYPE=bin
|
||||||
|
DESTFILE=`echo $FILE | sed 's/^\.\///'`
|
||||||
|
|
||||||
|
if echo $FILE | egrep '\.as$' > /dev/null
|
||||||
|
then
|
||||||
|
# If the file ends with .as, this means the input is AppleSingle format.
|
||||||
|
# Strip the .as from the end of the file name and set the args to do
|
||||||
|
# an AppleSingle transfer.
|
||||||
|
TRANSFERARG=-as
|
||||||
|
FILETYPE=""
|
||||||
|
DESTFILE=`echo $DESTFILE | sed 's/\.as$//'`
|
||||||
|
elif echo $FILE | egrep '\.[ABITSRab]$' > /dev/null
|
||||||
|
then
|
||||||
|
# If the file ends with a single character DOS 3.3 file type, then use
|
||||||
|
# that as the file type.
|
||||||
|
FILETYPE=`echo $DESTFILE | awk -F. '{print $NF}'`
|
||||||
|
DESTFILE=`echo $DESTFILE | sed 's/\.[ABITSRab]$//'`
|
||||||
|
elif echo $FILE | egrep '\.[a-zA-Z][a-zA-Z][a-zA-Z]$' > /dev/null
|
||||||
|
then
|
||||||
|
# If the file ends with a three letter extension, use that as
|
||||||
|
# the file type.
|
||||||
|
FILETYPE=`echo $DESTFILE | awk -F. '{print $NF}'`
|
||||||
|
DESTFILE=`echo $DESTFILE | sed 's/\.[a-zA-Z][a-zA-Z][a-zA-Z]$//'`
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 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 "$DISKIMAGE" "$DESTFILE" $FILETYPE
|
||||||
|
else
|
||||||
|
"$JAVA" -jar "$OLDPWD/$APPLECOMMANDER" $TRANSFERARG "$DISKIMAGE" "$DESTFILE" $FILETYPE < $FILE
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
cd "$OLDPWD"
|
||||||
|
done
|
||||||
|
59
a2sudoku/make/errorFilter.sh
Executable file
59
a2sudoku/make/errorFilter.sh
Executable file
@@ -0,0 +1,59 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PWD=`pwd`
|
||||||
|
|
||||||
|
$* 2> /tmp/errors.$$
|
||||||
|
RESULT=$?
|
||||||
|
|
||||||
|
if [ $RESULT -ne 0 ]
|
||||||
|
then
|
||||||
|
exec /usr/bin/perl -x $0 $RESULT /tmp/errors.$$ "$PWD"
|
||||||
|
fi
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
#!/usr/bin/perl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
my $result = $ARGV[0];
|
||||||
|
my $filename = $ARGV[1];
|
||||||
|
my $pwd = $ARGV[2];
|
||||||
|
|
||||||
|
open(FILE, "<$filename") || die "$0: Unable to open file, $!";
|
||||||
|
|
||||||
|
my $unresolvedRefError = undef;
|
||||||
|
|
||||||
|
while (<FILE>) {
|
||||||
|
chomp;
|
||||||
|
|
||||||
|
if (defined $unresolvedRefError) {
|
||||||
|
if (m/^ ([^(]+)\(([0-9]+)\)/) {
|
||||||
|
my $file = $1;
|
||||||
|
my $lineno = $2;
|
||||||
|
|
||||||
|
if (! -f "$pwd/$file") {
|
||||||
|
$file =~ s/\.s$/.c/;
|
||||||
|
}
|
||||||
|
|
||||||
|
$_ = "$pwd/$file:$lineno:0: error: $unresolvedRefError";
|
||||||
|
} else {
|
||||||
|
$unresolvedRefError = undef;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (m/^(Unresolved external .* referenced) in:/) {
|
||||||
|
$unresolvedRefError = $1;
|
||||||
|
$_ = "";
|
||||||
|
} elsif (m/^([^(]+)\(([0-9]+)\):(.*)$/) {
|
||||||
|
my $file = $1;
|
||||||
|
my $lineno = $2;
|
||||||
|
my $error = $3;
|
||||||
|
|
||||||
|
$_ = "$pwd/$file:$lineno:0: error: $error";
|
||||||
|
}
|
||||||
|
print STDERR "$_\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
unlink($filename);
|
||||||
|
|
||||||
|
exit($result);
|
@@ -10,21 +10,74 @@
|
|||||||
# http://www.quinndunki.com/blondihacks
|
# http://www.quinndunki.com/blondihacks
|
||||||
#
|
#
|
||||||
|
|
||||||
export CC65_HOME := /usr/local/lib/cc65
|
CC65_BIN=/usr/local/bin
|
||||||
|
|
||||||
CC65_BIN = /usr/local/bin
|
ifneq ($(wildcard /usr/local/lib/cc65),)
|
||||||
|
export CC65_HOME := /usr/local/lib/cc65
|
||||||
|
else
|
||||||
|
export CC65_HOME := /usr/local/share/cc65
|
||||||
|
endif
|
||||||
|
|
||||||
CL65=$(CC65_BIN)/cl65
|
CL65=$(CC65_BIN)/cl65
|
||||||
CA65=$(CC65_BIN)/ca65
|
CA65=$(CC65_BIN)/ca65
|
||||||
CC65=$(CC65_BIN)/cc65
|
CC65=$(CC65_BIN)/cc65
|
||||||
|
CO65=$(CC65_BIN)/co65
|
||||||
|
|
||||||
|
MERLIN_DIR=/usr/local
|
||||||
|
export MERLIN_BIN=$(MERLIN_DIR)/bin/Merlin32
|
||||||
|
export MERLIN_LIB=$(MERLIN_DIR)/lib/Merlin
|
||||||
|
MERLIN_ASM=make/merlin-asm
|
||||||
|
|
||||||
AC=make/AppleCommander.jar
|
AC=make/AppleCommander.jar
|
||||||
|
|
||||||
C_SRCS=$(wildcard *.c)
|
SRCDIRS=.
|
||||||
ASM_SRCS=$(wildcard *.s)
|
|
||||||
|
# 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
|
MACHINE=apple2
|
||||||
CPU=6502
|
CPU=6502
|
||||||
CFLAGS=
|
CFLAGS=
|
||||||
ASMFLAGS=
|
ASMFLAGS=
|
||||||
LDFLAGS=
|
LDFLAGS=
|
||||||
|
DRIVERS=
|
||||||
|
DRVDIR=$(GENDIR)/drivers
|
||||||
|
|
||||||
|
MKDIR=mkdir -p
|
||||||
|
|
||||||
|
XCODE_PATH=/Applications/Xcode.app
|
||||||
|
XCODE_INFO=$(XCODE_PATH)/Contents/Info.plist
|
||||||
|
|
||||||
|
CC65_PLUGIN_PATH=$(HOME)/Library/Developer/Xcode/Plug-ins/cc65.ideplugin
|
||||||
|
CC65_PLUGIN_INFO=$(CC65_PLUGIN_PATH)/Contents/Info.plist
|
||||||
|
|
||||||
|
XCODE_PLUGIN_COMPATIBILITY=DVTPlugInCompatibilityUUID
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: all gen genclean
|
||||||
|
|
||||||
|
all:
|
||||||
|
@make gen
|
||||||
|
@make build
|
||||||
|
|
||||||
|
Binary file not shown.
@@ -10,37 +10,72 @@
|
|||||||
# http://www.quinndunki.com/blondihacks
|
# http://www.quinndunki.com/blondihacks
|
||||||
#
|
#
|
||||||
|
|
||||||
export PATH := $(PATH):$(CC65_BIN)
|
BUILD_TYPE := $(shell if echo $(MACHINE) | grep -q -- -basic; then echo basic; elif echo $(MACHINE) | grep -q -- -merlin; then echo merlin; else echo cc65; fi)
|
||||||
|
|
||||||
CWD=$(shell pwd)
|
CWD=$(shell pwd)
|
||||||
|
|
||||||
C_OBJS=$(C_SRCS:.c=.o)
|
DISKIMAGE=$(TARGETDIR)/$(PGM).dsk
|
||||||
C_DEPS=$(C_SRCS:.c=.u)
|
|
||||||
ASM_OBJS=$(ASM_SRCS:.s=.o)
|
|
||||||
ASM_LSTS=$(ASM_SRCS:.s=.lst)
|
|
||||||
OBJS=$(C_OBJS) $(ASM_OBJS)
|
|
||||||
|
|
||||||
MAPFILE=$(PGM).map
|
|
||||||
DISKIMAGE=$(PGM).dsk
|
|
||||||
|
|
||||||
LINK_ARGS=
|
|
||||||
|
|
||||||
EXECCMD=
|
EXECCMD=
|
||||||
|
|
||||||
ALLTARGET=$(DISKIMAGE)
|
vpath $(GENDIR)
|
||||||
UNAME_S := $(shell uname -s)
|
|
||||||
ifeq ($(UNAME_S),Darwin)
|
|
||||||
ALLTARGET=execute
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifneq ($(START_ADDR),)
|
BASIC_SRCS=$(patsubst $(GENDIR)/%, %, $(patsubst ./%, %, $(wildcard $(addsuffix /*.bas, $(SRCDIRS)))))
|
||||||
# If the MACHINE is set to an option which does not support a variable start
|
BASIC_OBJS=$(patsubst %.bas, $(TARGETDIR)/%.tok, $(BASIC_SRCS))
|
||||||
# address, then error.
|
|
||||||
|
ifeq ($(BUILD_TYPE),cc65)
|
||||||
|
export PATH := $(PATH):$(CC65_BIN)
|
||||||
|
|
||||||
|
# By default, use the a2 drivers. If the machine is one of the enhanced
|
||||||
|
# targets though, use the a2e drivers.
|
||||||
|
DRV_BASE_MACHINE=a2
|
||||||
|
BASE_MACHINE = apple2
|
||||||
|
ifneq ($(filter $(MACHINE), apple2enh apple2enh-dos33 apple2enh-system apple2enh-loader apple2enh-reboot),)
|
||||||
|
DRV_BASE_MACHINE=a2e
|
||||||
|
BASE_MACHINE = apple2enh
|
||||||
|
endif
|
||||||
|
|
||||||
|
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
|
||||||
|
else
|
||||||
|
ifeq ($(PROJECT_TYPE),ca65)
|
||||||
|
MACHCONFIG += -C $(BASE_MACHINE)-asm.cfg
|
||||||
|
LDFLAGS += -u __EXEHDR__
|
||||||
|
else
|
||||||
|
MACHCONFIG += -C apple2-hgr.cfg
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
CFLAGS+=-I $(GENDIR)
|
||||||
|
ifneq ($(DRIVERS),)
|
||||||
|
SRCDIRS+=$(DRVDIR)
|
||||||
|
endif
|
||||||
|
|
||||||
|
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 $(GENDIR)/%, %, $(patsubst ./%, %, $(wildcard $(addsuffix /*.s, $(SRCDIRS)))))
|
||||||
|
ASM_OBJS=$(patsubst %.s, $(OBJDIR)/%.o, $(ASM_SRCS))
|
||||||
|
ASM_LSTS=$(patsubst %.s, $(OBJDIR)/%.lst, $(ASM_SRCS))
|
||||||
|
|
||||||
|
MAPFILE=$(TARGETDIR)/$(PGM).map
|
||||||
|
|
||||||
|
ifneq ($(START_ADDR),)
|
||||||
|
# If the MACHINE is set to an option which does not support a variable
|
||||||
|
# start address, then error.
|
||||||
ifneq ($(filter $(MACHINE), apple2-system apple2enh-system),)
|
ifneq ($(filter $(MACHINE), apple2-system apple2enh-system),)
|
||||||
$(error You cannot change start address with this machine type)
|
$(error You cannot change start address with this machine type)
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
# If not set, then use the default for the config as per cc65 documentation
|
# If not set, then use the default for the config as per cc65
|
||||||
|
# documentation
|
||||||
ifneq ($(filter $(MACHINE), apple2 apple2-dos33 apple2enh apple2enh-dos33),)
|
ifneq ($(filter $(MACHINE), apple2 apple2-dos33 apple2enh apple2enh-dos33),)
|
||||||
START_ADDR=803
|
START_ADDR=803
|
||||||
endif
|
endif
|
||||||
@@ -50,56 +85,205 @@ else
|
|||||||
ifneq ($(filter $(MACHINE), apple2-loader apple2-reboot apple2enh-loader apple2enh-reboot),)
|
ifneq ($(filter $(MACHINE), apple2-loader apple2-reboot apple2enh-loader apple2enh-reboot),)
|
||||||
START_ADDR=800
|
START_ADDR=800
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
LDFLAGS += --start-addr 0x$(START_ADDR)
|
|
||||||
|
|
||||||
ifneq ($(filter $(MACHINE), apple2 apple2enh apple2-dos33 apple2enh-dos33),)
|
LDFLAGS += --start-addr 0x$(START_ADDR)
|
||||||
|
|
||||||
|
ifneq ($(filter $(MACHINE), apple2 apple2enh apple2-dos33 apple2enh-dos33),)
|
||||||
|
EXECCMD=$(shell echo brun $(PGM) | tr '[a-z]' '[A-Z]')
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
C_OBJS=
|
||||||
|
C_DEPS=
|
||||||
|
|
||||||
|
ASM_OBJS=
|
||||||
|
ASM_LSTS=
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BUILD_TYPE),merlin)
|
||||||
|
ASM_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.s, $(SRCDIRS))))
|
||||||
|
MAPFILE=$(TARGETDIR)/_Output.txt
|
||||||
EXECCMD=$(shell echo brun $(PGM) | tr '[a-z]' '[A-Z]')
|
EXECCMD=$(shell echo brun $(PGM) | tr '[a-z]' '[A-Z]')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
MACHCONFIG= -t apple2
|
ifeq ($(BUILD_TYPE),basic)
|
||||||
|
MAPFILE=
|
||||||
ifneq ($(filter $(MACHINE), apple2enh apple2apple2enh-dos33 apple2enh-system apple2enh-loader apple2enh-reboot),)
|
EXECCMD=$(shell echo run $(PGM) | tr '[a-z]' '[A-Z]')
|
||||||
MACHCONFIG= -t apple2enh
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(filter $(MACHINE), apple2 apple2enh),)
|
OBJS=$(C_OBJS) $(ASM_OBJS)
|
||||||
MACHCONFIG += -C $(MACHINE).cfg
|
|
||||||
|
ALLTARGET=$(DISKIMAGE)
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: build execute clean cleandrivers xcodefix
|
||||||
|
|
||||||
|
build: $(ALLTARGET)
|
||||||
|
|
||||||
|
$(DISKIMAGE): $(TARGETDIR)/$(PGM) $(BASIC_OBJS)
|
||||||
|
make/createDiskImage $(AC) $(MACHINE) "$(DISKIMAGE)" "$(TARGETDIR)/$(PGM)" "$(START_ADDR)" $(BASIC_OBJS) $(COPYDIRS)
|
||||||
|
|
||||||
|
execute: $(DISKIMAGE)
|
||||||
|
osascript make/V2Make.scpt "$(TARGETDIR)" "$(PGM)" "$(CWD)/make/DevApple.vii" "$(EXECCMD)"
|
||||||
|
|
||||||
|
$(TARGETDIR)/%.tok: %.bas
|
||||||
|
$(MKDIR) `dirname $@`
|
||||||
|
make/bt $< $(BASICFLAGS) -o $@
|
||||||
|
|
||||||
|
ifneq ($(DRIVERS),)
|
||||||
|
cleandrivers:
|
||||||
|
rm -Rf "$(DRVDIR)"
|
||||||
|
|
||||||
|
else
|
||||||
|
cleandrivers:
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
.PHONY: all execute clean
|
clean: genclean cleandrivers
|
||||||
|
rm -f "$(TARGETDIR)/$(PGM)" $(OBJS) $(BASIC_OBJS) $(C_DEPS) $(MAPFILE) $(ASM_LSTS) "$(DISKIMAGE)"
|
||||||
all: $(ALLTARGET)
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(PGM)
|
|
||||||
rm -f $(OBJS)
|
|
||||||
rm -f $(C_DEPS)
|
|
||||||
rm -f $(MAPFILE)
|
|
||||||
rm -f $(ASM_LSTS)
|
|
||||||
rm -f $(DISKIMAGE)
|
|
||||||
|
|
||||||
createPackage:
|
|
||||||
pkg/createPackage
|
|
||||||
|
|
||||||
cleanMacCruft:
|
cleanMacCruft:
|
||||||
rm -rf pkg
|
rm -rf pkg
|
||||||
|
|
||||||
$(PGM): $(OBJS)
|
# Some gen phase stuff...
|
||||||
$(CL65) $(MACHCONFIG) --mapfile $(MAPFILE) $(LDFLAGS) -o $(PGM) $(OBJS)
|
gen: xcodefix $(DRIVERS)
|
||||||
|
|
||||||
$(DISKIMAGE): $(PGM)
|
xcodefix:
|
||||||
make/createDiskImage $(AC) $(MACHINE) $(DISKIMAGE) $(PGM) "$(START_ADDR)"
|
defaults write "$(CC65_PLUGIN_INFO)" $(XCODE_PLUGIN_COMPATIBILITY)s -array `defaults read "$(XCODE_INFO)" $(XCODE_PLUGIN_COMPATIBILITY)` || true
|
||||||
|
|
||||||
execute: $(DISKIMAGE)
|
|
||||||
osascript make/V2Make.scpt $(CWD) $(PGM) $(CWD)/make/DevApple.vii "$(EXECCMD)"
|
|
||||||
|
|
||||||
%.o: %.c
|
ifeq ($(BUILD_TYPE),basic)
|
||||||
$(CL65) $(MACHCONFIG) $(CFLAGS) --create-dep -c -o $@ $<
|
# Build rules for BASIC projects
|
||||||
|
|
||||||
|
$(TARGETDIR)/$(PGM): $(BASIC_OBJS)
|
||||||
|
cp $(TARGETDIR)/$(PGM).tok $(TARGETDIR)/$(PGM)
|
||||||
|
|
||||||
|
$(BASIC_OBJS): Makefile
|
||||||
|
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
ifeq ($(BUILD_TYPE),merlin)
|
||||||
|
# Build rules for Merlin projects
|
||||||
|
|
||||||
|
$(TARGETDIR)/$(PGM): $(ASM_SRCS) Makefile
|
||||||
|
$(MKDIR) $(TARGETDIR)
|
||||||
|
rm -f $(TARGETDIR)/$(PGM)
|
||||||
|
$(MERLIN_ASM) linkscript.s $(PGM) $(TARGETDIR)/$(PGM)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
ifeq ($(BUILD_TYPE),cc65)
|
||||||
|
# Build rules for cc65 projects
|
||||||
|
|
||||||
|
$(TARGETDIR)/$(PGM): $(OBJS)
|
||||||
|
$(MKDIR) `dirname $@`
|
||||||
|
make/errorFilter.sh $(CL65) $(MACHCONFIG) --mapfile $(MAPFILE) $(LDFLAGS) -o "$(TARGETDIR)/$(PGM)" $(OBJS)
|
||||||
|
|
||||||
|
$(OBJS): Makefile
|
||||||
|
|
||||||
|
$(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)
|
sed -i .bak 's/\.s:/.o:/' $(@:.o=.u)
|
||||||
rm -f $(@:.o=.u).bak
|
rm -f $(@:.o=.u).bak
|
||||||
|
|
||||||
%.o: %.s
|
$(OBJDIR)/%.o: $(GENDIR)/%.c
|
||||||
$(CL65) $(MACHCONFIG) --cpu $(CPU) $(ASMFLAGS) -l -c -o $@ $<
|
$(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 $@ $<
|
||||||
|
|
||||||
|
|
||||||
|
.PHONY: loresgr hiresgr auxmem joystick mouse serial
|
||||||
|
# Lores driver codegen
|
||||||
|
loresgr: $(DRVDIR)/a2_lores_drv.s $(DRVDIR)/a2_lores_drv.h
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_lores_drv.s: $(CC65_DRV_DIR)/tgi/$(DRV_BASE_MACHINE).lo.tgi
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
$(CO65) --code-label _a2_lores_drv -o $@ $(CC65_DRV_DIR)/tgi/$(DRV_BASE_MACHINE).lo.tgi
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_lores_drv.h:
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
echo '#include <tgi.h>' > $@
|
||||||
|
echo 'extern char a2_lores_drv;' >> $@
|
||||||
|
|
||||||
|
|
||||||
|
# Hires driver codegen
|
||||||
|
hiresgr: $(DRVDIR)/a2_hires_drv.s $(DRVDIR)/a2_hires_drv.h
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_hires_drv.s: $(CC65_DRV_DIR)/tgi/$(DRV_BASE_MACHINE).hi.tgi
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
$(CO65) --code-label _a2_hires_drv -o $@ $(CC65_DRV_DIR)/tgi/$(DRV_BASE_MACHINE).hi.tgi
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_hires_drv.h:
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
echo '#include <tgi.h>' > $@
|
||||||
|
echo 'extern char a2_hires_drv;' >> $@
|
||||||
|
|
||||||
|
|
||||||
|
# Auxmem driver codegen
|
||||||
|
auxmem: $(DRVDIR)/a2_auxmem_drv.s $(DRVDIR)/a2_auxmem_drv.h
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_auxmem_drv.s: $(CC65_DRV_DIR)/emd/$(DRV_BASE_MACHINE).auxmem.emd
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
$(CO65) --code-label _a2_auxmem_drv -o $@ $(CC65_DRV_DIR)/emd/$(DRV_BASE_MACHINE).auxmem.emd
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_auxmem_drv.h:
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
echo '#include <em.h>' > $@
|
||||||
|
echo 'extern char a2_auxmem_drv;' >> $@
|
||||||
|
|
||||||
|
|
||||||
|
# Joystick driver codegen
|
||||||
|
joystick: $(DRVDIR)/a2_joystick_drv.s $(DRVDIR)/a2_joystick_drv.h
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_joystick_drv.s: $(CC65_DRV_DIR)/joy/$(DRV_BASE_MACHINE).stdjoy.joy
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
$(CO65) --code-label _a2_joystick_drv -o $@ $(CC65_DRV_DIR)/joy/$(DRV_BASE_MACHINE).stdjoy.joy
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_joystick_drv.h:
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
echo '#include <joystick.h>' > $@
|
||||||
|
echo 'extern char a2_joystick_drv;' >> $@
|
||||||
|
|
||||||
|
|
||||||
|
# Mouse driver codegen
|
||||||
|
mouse: $(DRVDIR)/a2_mouse_drv.s $(DRVDIR)/a2_mouse_drv.h
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_mouse_drv.s: $(CC65_DRV_DIR)/mou/$(DRV_BASE_MACHINE).stdmou.mou
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
$(CO65) --code-label _a2_mouse_drv -o $@ $(CC65_DRV_DIR)/mou/$(DRV_BASE_MACHINE).stdmou.mou
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_mouse_drv.h:
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
echo '#include <mouse.h>' > $@
|
||||||
|
echo 'extern char a2_mouse_drv;' >> $@
|
||||||
|
|
||||||
|
|
||||||
|
# Serial driver codegen
|
||||||
|
serial: $(DRVDIR)/a2_serial_drv.s $(DRVDIR)/a2_serial_drv.h
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_serial_drv.s: $(CC65_DRV_DIR)/ser/$(DRV_BASE_MACHINE).ssc.ser
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
$(CO65) --code-label _a2_serial_drv -o $@ $(CC65_DRV_DIR)/ser/$(DRV_BASE_MACHINE).ssc.ser
|
||||||
|
|
||||||
|
$(DRVDIR)/a2_serial_drv.h:
|
||||||
|
mkdir -p $(DRVDIR)
|
||||||
|
echo '#include <serial.h>' > $@
|
||||||
|
echo 'extern char a2_serial_drv;' >> $@
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
-include $(C_DEPS)
|
-include $(C_DEPS)
|
||||||
|
File diff suppressed because one or more lines are too long
79
a2sudoku/mouseWrapper.c
Normal file
79
a2sudoku/mouseWrapper.c
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
//
|
||||||
|
// mouseWrapper.c
|
||||||
|
// a2sudoku
|
||||||
|
//
|
||||||
|
// Created by Jeremy Rand on 2018-06-24.
|
||||||
|
// Copyright © 2018 Jeremy Rand. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#include "mouseWrapper.h"
|
||||||
|
#include "drivers/a2_mouse_drv.h"
|
||||||
|
|
||||||
|
// Defines and macros
|
||||||
|
|
||||||
|
#define MOUSE_POS_SHIFT 4
|
||||||
|
#define MOUSE_GRID_SIZE (BOARD_SIZE << MOUSE_POS_SHIFT)
|
||||||
|
|
||||||
|
|
||||||
|
// Globals
|
||||||
|
|
||||||
|
static tMouseCallback gCursorPosCallback = NULL;
|
||||||
|
static bool gMouseInstalled = false;
|
||||||
|
static bool gMouseInPoll = false;
|
||||||
|
static struct mouse_box gMouseBox = { 0, 0, MOUSE_GRID_SIZE - 1, MOUSE_GRID_SIZE - 1 };
|
||||||
|
|
||||||
|
|
||||||
|
// Implementation
|
||||||
|
|
||||||
|
bool initMouse(tMouseCallback callback)
|
||||||
|
{
|
||||||
|
if (!gMouseInstalled) {
|
||||||
|
if (mouse_install(&mouse_def_callbacks, &a2_mouse_drv) == 0) {
|
||||||
|
gMouseInstalled = true;
|
||||||
|
|
||||||
|
mouse_setbox(&gMouseBox);
|
||||||
|
moveMouseToPos(0, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
gCursorPosCallback = callback;
|
||||||
|
|
||||||
|
return gMouseInstalled;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void shutdownMouse(void)
|
||||||
|
{
|
||||||
|
if (gMouseInstalled) {
|
||||||
|
mouse_uninstall();
|
||||||
|
gMouseInstalled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void pollMouse(void)
|
||||||
|
{
|
||||||
|
struct mouse_info mouseInfo;
|
||||||
|
|
||||||
|
if (!gMouseInstalled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mouse_info(&mouseInfo);
|
||||||
|
|
||||||
|
gMouseInPoll = true;
|
||||||
|
gCursorPosCallback(mouseInfo.pos.x >> MOUSE_POS_SHIFT,
|
||||||
|
mouseInfo.pos.y >> MOUSE_POS_SHIFT);
|
||||||
|
gMouseInPoll = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void moveMouseToPos(tPos newX, tPos newY)
|
||||||
|
{
|
||||||
|
if (!gMouseInstalled)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (gMouseInPoll)
|
||||||
|
return;
|
||||||
|
|
||||||
|
mouse_move(newX << MOUSE_POS_SHIFT, newY << MOUSE_POS_SHIFT);
|
||||||
|
}
|
30
a2sudoku/mouseWrapper.h
Normal file
30
a2sudoku/mouseWrapper.h
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
//
|
||||||
|
// mouseWrapper.h
|
||||||
|
// a2sudoku
|
||||||
|
//
|
||||||
|
// Created by Jeremy Rand on 2018-06-24.
|
||||||
|
// Copyright © 2018 Jeremy Rand. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef _GUARD_PROJECTa2sudoku_FILEmouseWrapper_
|
||||||
|
#define _GUARD_PROJECTa2sudoku_FILEmouseWrapper_
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
#include "puzzles.h"
|
||||||
|
|
||||||
|
|
||||||
|
// Typedefs
|
||||||
|
|
||||||
|
typedef void (*tMouseCallback)(tPos newX, tPos newY);
|
||||||
|
|
||||||
|
|
||||||
|
// API
|
||||||
|
|
||||||
|
extern bool initMouse(tMouseCallback callback);
|
||||||
|
extern void shutdownMouse(void);
|
||||||
|
extern void pollMouse(void);
|
||||||
|
extern void moveMouseToPos(tPos newX, tPos newY);
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* define _GUARD_PROJECTa2sudoku_FILEmouseWrapper_ */
|
@@ -50,7 +50,7 @@ tPuzzle thePuzzle;
|
|||||||
void fileReadProblem(char *filename)
|
void fileReadProblem(char *filename)
|
||||||
{
|
{
|
||||||
clrscr();
|
clrscr();
|
||||||
asm ("STA %w", 0xc051);
|
asm volatile ("STA %w", 0xc051);
|
||||||
printf("\n\nUnable to read file %s\nPress any key to quit", filename);
|
printf("\n\nUnable to read file %s\nPress any key to quit", filename);
|
||||||
cgetc();
|
cgetc();
|
||||||
exit(0);
|
exit(0);
|
||||||
|
112
a2sudoku/ui.c
112
a2sudoku/ui.c
@@ -12,15 +12,13 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <tgi.h>
|
#include <tgi.h>
|
||||||
#include <tgi/tgi-mode.h>
|
|
||||||
|
|
||||||
#include "game.h"
|
#include "game.h"
|
||||||
#include "ui.h"
|
#include "ui.h"
|
||||||
|
#include "mouseWrapper.h"
|
||||||
|
#include "drivers/a2_hires_drv.h"
|
||||||
|
|
||||||
|
#pragma code-name ("LOWCODE")
|
||||||
// Extern symbols for graphics drivers
|
|
||||||
extern char a2e_hi;
|
|
||||||
|
|
||||||
|
|
||||||
// Macros and defines
|
// Macros and defines
|
||||||
#define SQUARE_WIDTH 28
|
#define SQUARE_WIDTH 28
|
||||||
@@ -31,10 +29,10 @@ extern char a2e_hi;
|
|||||||
#define THICK_LINE_HEIGHT 3
|
#define THICK_LINE_HEIGHT 3
|
||||||
#define THIN_LINE_HEIGHT 1
|
#define THIN_LINE_HEIGHT 1
|
||||||
|
|
||||||
#define TEXT_OFFSET_X 12
|
#define TEXT_OFFSET_X 19
|
||||||
#define TEXT_OFFSET_Y 6
|
#define TEXT_OFFSET_Y 6
|
||||||
|
|
||||||
#define TEXT_UNDERLINE_OFFSET_X -2
|
#define TEXT_UNDERLINE_OFFSET_X -9
|
||||||
#define TEXT_UNDERLINE_OFFSET_Y 9
|
#define TEXT_UNDERLINE_OFFSET_Y 9
|
||||||
#define TEXT_UNDERLINE_WIDTH 8
|
#define TEXT_UNDERLINE_WIDTH 8
|
||||||
|
|
||||||
@@ -94,7 +92,7 @@ void drawGrid(void)
|
|||||||
|
|
||||||
tgi_clear();
|
tgi_clear();
|
||||||
|
|
||||||
tgi_setcolor(COLOR_WHITE);
|
tgi_setcolor(TGI_COLOR_WHITE);
|
||||||
for (pos = 0; pos <= BOARD_SIZE; pos++) {
|
for (pos = 0; pos <= BOARD_SIZE; pos++) {
|
||||||
if ((pos % SUBSQUARE_SIZE) == 0) {
|
if ((pos % SUBSQUARE_SIZE) == 0) {
|
||||||
tgi_bar(xPos, 0, xPos + THICK_LINE_WIDTH - 1, TOTAL_HEIGHT - 1);
|
tgi_bar(xPos, 0, xPos + THICK_LINE_WIDTH - 1, TOTAL_HEIGHT - 1);
|
||||||
@@ -121,6 +119,31 @@ void drawGrid(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void setCursorPos(tPos newX, tPos newY)
|
||||||
|
{
|
||||||
|
tPos oldX = cursorX;
|
||||||
|
tPos oldY = cursorY;
|
||||||
|
|
||||||
|
if (newX >= BOARD_SIZE)
|
||||||
|
newX = BOARD_SIZE - 1;
|
||||||
|
|
||||||
|
if (newY >= BOARD_SIZE)
|
||||||
|
newY = BOARD_SIZE - 1;
|
||||||
|
|
||||||
|
if ((cursorX == newX) &&
|
||||||
|
(cursorY == newY))
|
||||||
|
return;
|
||||||
|
|
||||||
|
cursorX = newX;
|
||||||
|
cursorY = newY;
|
||||||
|
|
||||||
|
refreshPos(cursorX, cursorY);
|
||||||
|
refreshPos(oldX, oldY);
|
||||||
|
|
||||||
|
moveMouseToPos(cursorX, cursorY);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void initUI(void)
|
void initUI(void)
|
||||||
{
|
{
|
||||||
static bool tgi_inited = false;
|
static bool tgi_inited = false;
|
||||||
@@ -129,11 +152,13 @@ void initUI(void)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Install drivers
|
// Install drivers
|
||||||
tgi_install(&a2e_hi);
|
tgi_install(&a2_hires_drv);
|
||||||
|
|
||||||
tgi_init();
|
tgi_init();
|
||||||
|
|
||||||
tgi_inited = true;
|
tgi_inited = true;
|
||||||
|
|
||||||
|
initMouse(setCursorPos);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -169,19 +194,20 @@ void shutdownUI(void)
|
|||||||
{
|
{
|
||||||
// Uninstall drivers
|
// Uninstall drivers
|
||||||
tgi_uninstall();
|
tgi_uninstall();
|
||||||
|
shutdownMouse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void textMode(void)
|
void textMode(void)
|
||||||
{
|
{
|
||||||
clrscr();
|
clrscr();
|
||||||
asm ("STA %w", 0xc051);
|
asm volatile ("STA %w", 0xc051);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void graphicsMode(void)
|
void graphicsMode(void)
|
||||||
{
|
{
|
||||||
asm ("STA %w", 0xc050);
|
asm volatile ("STA %w", 0xc050);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -272,8 +298,8 @@ void displayInstructions(void)
|
|||||||
"\n"
|
"\n"
|
||||||
"The goal is to get the numbers from 1 to"
|
"The goal is to get the numbers from 1 to"
|
||||||
"9 uniquely in each column, row and 3x3\n"
|
"9 uniquely in each column, row and 3x3\n"
|
||||||
"subsquare. Move the cursor with I-J-K-L"
|
"subsquare. Move the cursor with arrow\n"
|
||||||
"or the arrow keys. Press a number key\n"
|
"keys, IJKM or mouse. Press a number key"
|
||||||
"to enter a value. Press a number key\n"
|
"to enter a value. Press a number key\n"
|
||||||
"while holding shift or open apple to\n"
|
"while holding shift or open apple to\n"
|
||||||
"toggle a scratch value. Press 0 to\n"
|
"toggle a scratch value. Press 0 to\n"
|
||||||
@@ -443,7 +469,7 @@ void drawScratch(tPos x, tPos y, tScratchValues scratch)
|
|||||||
drawNine(screenX, screenY);
|
drawNine(screenX, screenY);
|
||||||
}
|
}
|
||||||
|
|
||||||
tgi_setcolor(COLOR_WHITE);
|
tgi_setcolor(TGI_COLOR_WHITE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -455,10 +481,10 @@ void updatePos(tPos x, tPos y, tSquareVal val, tScratchValues scratch, bool corr
|
|||||||
int edgeY = screenY + SQUARE_HEIGHT - 1;
|
int edgeY = screenY + SQUARE_HEIGHT - 1;
|
||||||
char buffer[2];
|
char buffer[2];
|
||||||
|
|
||||||
tgi_setcolor(COLOR_BLACK);
|
tgi_setcolor(TGI_COLOR_BLACK);
|
||||||
tgi_bar(screenX, screenY, edgeX, edgeY);
|
tgi_bar(screenX, screenY, edgeX, edgeY);
|
||||||
|
|
||||||
tgi_setcolor(COLOR_WHITE);
|
tgi_setcolor(TGI_COLOR_WHITE);
|
||||||
if (val != EMPTY_SQUARE) {
|
if (val != EMPTY_SQUARE) {
|
||||||
buffer[0] = '0' + val;
|
buffer[0] = '0' + val;
|
||||||
buffer[1] = '\0';
|
buffer[1] = '\0';
|
||||||
@@ -504,7 +530,7 @@ void youWon(void)
|
|||||||
static char line1[80];
|
static char line1[80];
|
||||||
char *line2 = "Press any key";
|
char *line2 = "Press any key";
|
||||||
time_t solutionTime = timeToSolve();
|
time_t solutionTime = timeToSolve();
|
||||||
int textHeight = tgi_textheight(line1);
|
int textHeight = 7;
|
||||||
|
|
||||||
if (solutionTime == 0xffffffff) {
|
if (solutionTime == 0xffffffff) {
|
||||||
snprintf(line1, sizeof(line1), "You solved it!");
|
snprintf(line1, sizeof(line1), "You solved it!");
|
||||||
@@ -524,10 +550,10 @@ void youWon(void)
|
|||||||
wonX = (TOTAL_WIDTH - wonWidth) / 2;
|
wonX = (TOTAL_WIDTH - wonWidth) / 2;
|
||||||
wonY = (TOTAL_HEIGHT - wonHeight) / 2;
|
wonY = (TOTAL_HEIGHT - wonHeight) / 2;
|
||||||
|
|
||||||
tgi_setcolor(COLOR_BLACK);
|
tgi_setcolor(TGI_COLOR_BLACK);
|
||||||
tgi_bar(wonX, wonY, wonX + wonWidth, wonY + wonHeight);
|
tgi_bar(wonX, wonY, wonX + wonWidth, wonY + wonHeight);
|
||||||
|
|
||||||
tgi_setcolor(COLOR_WHITE);
|
tgi_setcolor(TGI_COLOR_WHITE);
|
||||||
tgi_outtextxy((TOTAL_WIDTH - line1Width) / 2, wonY + (textHeight * 2), line1);
|
tgi_outtextxy((TOTAL_WIDTH - line1Width) / 2, wonY + (textHeight * 2), line1);
|
||||||
tgi_outtextxy((TOTAL_WIDTH - line2Width) / 2, wonY + (textHeight * 4), line2);
|
tgi_outtextxy((TOTAL_WIDTH - line2Width) / 2, wonY + (textHeight * 4), line2);
|
||||||
|
|
||||||
@@ -595,13 +621,10 @@ bool playGame(void)
|
|||||||
graphicsMode();
|
graphicsMode();
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
pollMouse();
|
||||||
|
|
||||||
|
if (kbhit()) {
|
||||||
bool shouldNotBeep = true;
|
bool shouldNotBeep = true;
|
||||||
|
|
||||||
if (isPuzzleSolved()) {
|
|
||||||
youWon();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
ch = cgetc();
|
ch = cgetc();
|
||||||
|
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
@@ -645,13 +668,9 @@ bool playGame(void)
|
|||||||
case 'I':
|
case 'I':
|
||||||
case 0x0B: // Only defined with apple2enh targts, CH_CURS_UP:
|
case 0x0B: // Only defined with apple2enh targts, CH_CURS_UP:
|
||||||
if (cursorY != 0) {
|
if (cursorY != 0) {
|
||||||
cursorY--;
|
setCursorPos(cursorX, cursorY - 1);
|
||||||
refreshPos(cursorX, cursorY);
|
|
||||||
refreshPos(cursorX, cursorY + 1);
|
|
||||||
} else {
|
} else {
|
||||||
cursorY = BOARD_SIZE - 1;
|
setCursorPos(cursorX, BOARD_SIZE - 1);
|
||||||
refreshPos(cursorX, cursorY);
|
|
||||||
refreshPos(cursorX, 0);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -659,13 +678,9 @@ bool playGame(void)
|
|||||||
case 'J':
|
case 'J':
|
||||||
case CH_CURS_LEFT:
|
case CH_CURS_LEFT:
|
||||||
if (cursorX != 0) {
|
if (cursorX != 0) {
|
||||||
cursorX--;
|
setCursorPos(cursorX - 1, cursorY);
|
||||||
refreshPos(cursorX, cursorY);
|
|
||||||
refreshPos(cursorX + 1, cursorY);
|
|
||||||
} else {
|
} else {
|
||||||
cursorX = BOARD_SIZE - 1;
|
setCursorPos(BOARD_SIZE - 1, cursorY);
|
||||||
refreshPos(cursorX, cursorY);
|
|
||||||
refreshPos(0, cursorY);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -673,13 +688,9 @@ bool playGame(void)
|
|||||||
case 'K':
|
case 'K':
|
||||||
case CH_CURS_RIGHT:
|
case CH_CURS_RIGHT:
|
||||||
if (cursorX < BOARD_SIZE - 1) {
|
if (cursorX < BOARD_SIZE - 1) {
|
||||||
cursorX++;
|
setCursorPos(cursorX + 1, cursorY);
|
||||||
refreshPos(cursorX, cursorY);
|
|
||||||
refreshPos(cursorX - 1, cursorY);
|
|
||||||
} else {
|
} else {
|
||||||
cursorX = 0;
|
setCursorPos(0, cursorY);
|
||||||
refreshPos(cursorX, cursorY);
|
|
||||||
refreshPos(BOARD_SIZE - 1, cursorY);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -687,13 +698,9 @@ bool playGame(void)
|
|||||||
case 'M':
|
case 'M':
|
||||||
case 0x0A: // Only defined with apple2enh targts, CH_CURS_DOWN:
|
case 0x0A: // Only defined with apple2enh targts, CH_CURS_DOWN:
|
||||||
if (cursorY < BOARD_SIZE - 1) {
|
if (cursorY < BOARD_SIZE - 1) {
|
||||||
cursorY++;
|
setCursorPos(cursorX, cursorY + 1);
|
||||||
refreshPos(cursorX, cursorY);
|
|
||||||
refreshPos(cursorX, cursorY - 1);
|
|
||||||
} else {
|
} else {
|
||||||
cursorY = 0;
|
setCursorPos(cursorX, 0);
|
||||||
refreshPos(cursorX, cursorY);
|
|
||||||
refreshPos(cursorX, BOARD_SIZE - 1);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -778,9 +785,16 @@ bool playGame(void)
|
|||||||
shouldNotBeep = false;
|
shouldNotBeep = false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!shouldNotBeep) {
|
if (!shouldNotBeep) {
|
||||||
printf("\007");
|
printf("\007");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isPuzzleSolved()) {
|
||||||
|
youWon();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
Reference in New Issue
Block a user