diff --git a/Makefile b/Makefile
index cb543cd..ab229c9 100644
--- a/Makefile
+++ b/Makefile
@@ -33,6 +33,11 @@ PGM=___PACKAGENAME___
# MACHINE = apple2enh-system
# MACHINE = apple2enh-loader
# MACHINE = apple2enh-reboot
+#
+# These are special machine definitions beyond those defined in cc65
+# which are used for BASIC projects:
+# MACHINE = apple2-basic
+# MACHINE = apple2-dos33-basic
# Uncomment and set this to your starting address in Apple II memory
# if necessary:
@@ -73,6 +78,10 @@ SRCDIRS+=
# this variable:
# 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
diff --git a/make/bastokenizer-tools-bt-0.2.0.jar b/make/bastokenizer-tools-bt-0.2.0.jar
new file mode 100644
index 0000000..93aa68f
Binary files /dev/null and b/make/bastokenizer-tools-bt-0.2.0.jar differ
diff --git a/make/bt b/make/bt
new file mode 100755
index 0000000..1890cb8
--- /dev/null
+++ b/make/bt
@@ -0,0 +1,25 @@
+#!/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
+
+exec "$JAVA" -jar make/bastokenizer-tools-bt-0.2.0.jar $*
diff --git a/make/createDiskImage b/make/createDiskImage
index 25e1c47..5b274a5 100755
--- a/make/createDiskImage
+++ b/make/createDiskImage
@@ -43,11 +43,7 @@ shift
STARTADDR=`echo $1 | sed 's/^0*//'`
shift
-if [ ! -f "$PROGRAM" ]
-then
- echo "Cannot file executable $PROGRAM"
- exit 1
-fi
+SOURCEFILE=$PROGRAM
case "$MACHINE" in
apple2)
@@ -55,6 +51,7 @@ case "$MACHINE" in
DELETELOADER=1
RENAMELOADER=0
DELETEBASIC=0
+ COPYBINARY=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
@@ -66,6 +63,7 @@ case "$MACHINE" in
DELETELOADER=1
RENAMELOADER=0
DELETEBASIC=0
+ COPYBINARY=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
@@ -77,6 +75,7 @@ case "$MACHINE" in
DELETELOADER=0
RENAMELOADER=0
DELETEBASIC=0
+ COPYBINARY=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
@@ -88,6 +87,7 @@ case "$MACHINE" in
DELETELOADER=0
RENAMELOADER=0
DELETEBASIC=0
+ COPYBINARY=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
@@ -99,6 +99,7 @@ case "$MACHINE" in
DELETELOADER=1
RENAMELOADER=0
DELETEBASIC=1
+ COPYBINARY=1
HASHEADER=0
FILETYPE="sys"
TARGETFILE=`basename $PROGRAM`.system
@@ -110,6 +111,7 @@ case "$MACHINE" in
DELETELOADER=1
RENAMELOADER=0
DELETEBASIC=1
+ COPYBINARY=1
HASHEADER=0
FILETYPE="sys"
TARGETFILE=`basename $PROGRAM`.system
@@ -121,6 +123,7 @@ case "$MACHINE" in
DELETELOADER=0
RENAMELOADER=1
DELETEBASIC=1
+ COPYBINARY=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
@@ -132,6 +135,7 @@ case "$MACHINE" in
DELETELOADER=0
RENAMELOADER=1
DELETEBASIC=1
+ COPYBINARY=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
@@ -143,6 +147,7 @@ case "$MACHINE" in
DELETELOADER=0
RENAMELOADER=1
DELETEBASIC=1
+ COPYBINARY=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
@@ -154,18 +159,50 @@ case "$MACHINE" in
DELETELOADER=0
RENAMELOADER=1
DELETEBASIC=1
+ COPYBINARY=1
HASHEADER=1
FILETYPE="bin"
TARGETFILE=`basename $PROGRAM`
MAXFILENAMELEN=15
;;
+ apple2-basic)
+ TEMPLATE="make/prodos_template.dsk"
+ DELETELOADER=1
+ RENAMELOADER=0
+ DELETEBASIC=0
+ COPYBINARY=0
+ FILETYPE="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"
+ TARGETFILE=`basename $PROGRAM`
+ SOURCEFILE=${PROGRAM}.tok
+ MAXFILENAMELEN=30
+ ;;
+
*)
echo "Invalid machine type $MACHINE"
exit 1
;;
esac
+if [ ! -f "$SOURCEFILE" ]
+then
+ echo "Cannot file executable $SOURCEFILE"
+ exit 1
+fi
+
+
if [ ${#TARGETFILE} -gt $MAXFILENAMELEN ]
then
echo "The filename $TARGETFILE exceeds the max name length of the filesystem ($MAXFILENAMELEN)"
@@ -203,29 +240,39 @@ then
"$JAVA" -jar "$APPLECOMMANDER" -d "$DISKIMAGE" BASIC.SYSTEM
fi
-if [ $HASHEADER -eq 1 ]
+if [ $COPYBINARY -eq 1 ]
then
- HDR_STARTADDR=`od -t x2 -N 2 < "$PROGRAM" | head -1 | awk '{print $2}' | sed 's/^0*//'`
- if [ "$HDR_STARTADDR" = "$STARTADDR" ]
+ if [ $HASHEADER -eq 1 ]
then
- dd if="$PROGRAM" bs=4 skip=1 | "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE 0x$STARTADDR
- else
- "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE 0x$STARTADDR < "$PROGRAM"
+ HDR_STARTADDR=`od -t x2 -N 2 < "$SOURCEFILE" | head -1 | awk '{print $2}' | sed 's/^0*//'`
+ if [ "$HDR_STARTADDR" = "$STARTADDR" ]
+ then
+ dd if="$SOURCEFILE" bs=4 skip=1 | "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE 0x$STARTADDR
+ else
+ "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE 0x$STARTADDR < "$SOURCEFILE"
+ fi
+ else
+ "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE < "$SOURCEFILE"
fi
-else
- "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$TARGETFILE" $FILETYPE < "$PROGRAM"
fi
-for DIR in $*
+for ITEM in $*
do
- if [ ! -d "$DIR" ]
+ if [ -f "$ITEM" ] && echo "$ITEM" | grep '\.tok$' > /dev/null
then
- echo Unable to find directory $DIR
+ DESTFILE=`echo "$ITEM" | sed 's/\.tok$//'`
+ "$JAVA" -jar "$APPLECOMMANDER" -p "$DISKIMAGE" "$DESTFILE" $FILETYPE 0x801 < "$ITEM"
+ continue
+ fi
+
+ if [ ! -d "$ITEM" ]
+ then
+ echo Unable to find directory $ITEM
exit 1
fi
OLDPWD=`pwd`
- cd $DIR
+ cd $ITEM
find . -type f -print | while read FILE
do
diff --git a/make/tail.mk b/make/tail.mk
index 4d72c06..2596abd 100644
--- a/make/tail.mk
+++ b/make/tail.mk
@@ -26,7 +26,10 @@ ASM_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.s, $(SRCDIRS))))
ASM_OBJS=$(ASM_SRCS:.s=.o)
ASM_LSTS=$(ASM_SRCS:.s=.lst)
-OBJS=$(C_OBJS) $(ASM_OBJS)
+BASIC_SRCS=$(patsubst ./%, %, $(wildcard $(addsuffix /*.bas, $(SRCDIRS))))
+BASIC_OBJS=$(BASIC_SRCS:.bas=.tok)
+
+OBJS=$(C_OBJS) $(ASM_OBJS) $(BASIC_OBJS)
MAPFILE=$(PGM).map
DISKIMAGE=$(PGM).dsk
@@ -40,7 +43,7 @@ ALLTARGET=$(DISKIMAGE)
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 apple2-basic apple2-dos33-basic),)
$(error You cannot change start address with this machine type)
endif
else
@@ -54,6 +57,9 @@ else
ifneq ($(filter $(MACHINE), apple2-loader apple2-reboot apple2enh-loader apple2enh-reboot),)
START_ADDR=800
endif
+ ifneq ($(filter $(MACHINE), apple2-basic apple2-dos33-basic),)
+ START_ADDR=801
+ endif
endif
LDFLAGS += --start-addr 0x$(START_ADDR)
@@ -61,6 +67,10 @@ ifneq ($(filter $(MACHINE), apple2 apple2enh apple2-dos33 apple2enh-dos33),)
EXECCMD=$(shell echo brun $(PGM) | tr '[a-z]' '[A-Z]')
endif
+ifneq ($(filter $(MACHINE), apple2-basic apple2-dos33-basic),)
+ EXECCMD=$(shell echo run $(PGM) | tr '[a-z]' '[A-Z]')
+endif
+
# By default, use the a2 drivers. If the machine is one of the enhanced
# targets though, use the a2e drivers.
DRV_BASE_MACHINE=a2
@@ -94,11 +104,17 @@ clean: genclean
cleanMacCruft:
rm -rf pkg
+ifneq ($(filter $(MACHINE), apple2-basic apple2-dos33-basic),)
+$(PGM): $(OBJS)
+
+else
$(PGM): $(OBJS)
make/errorFilter.sh $(CL65) $(MACHCONFIG) --mapfile $(MAPFILE) $(LDFLAGS) -o "$(PGM)" $(OBJS)
+endif
+
$(DISKIMAGE): $(PGM)
- make/createDiskImage $(AC) $(MACHINE) "$(DISKIMAGE)" "$(PGM)" "$(START_ADDR)" $(COPYDIRS)
+ make/createDiskImage $(AC) $(MACHINE) "$(DISKIMAGE)" "$(PGM)" "$(START_ADDR)" $(BASIC_OBJS) $(COPYDIRS)
execute: $(DISKIMAGE)
osascript make/V2Make.scpt "$(CWD)" "$(PGM)" "$(CWD)/make/DevApple.vii" "$(EXECCMD)"
@@ -111,6 +127,9 @@ execute: $(DISKIMAGE)
%.o: %.s
make/errorFilter.sh $(CL65) $(MACHCONFIG) --cpu $(CPU) $(ASMFLAGS) -l -c -o $@ $<
+%.tok: %.bas
+ make/bt $(BASICFLAGS) -o $@ $<
+
$(OBJS): Makefile
diff --git a/pkg/Plug-ins/cc65.ideplugin/Contents/Resources/cc65.xcplugindata b/pkg/Plug-ins/cc65.ideplugin/Contents/Resources/cc65.xcplugindata
index b1d74b7..ed24aec 100755
--- a/pkg/Plug-ins/cc65.ideplugin/Contents/Resources/cc65.xcplugindata
+++ b/pkg/Plug-ins/cc65.ideplugin/Contents/Resources/cc65.xcplugindata
@@ -77,6 +77,77 @@
version
1.0
+ Xcode.FileDataType.Basic.Applesoft
+
+ id
+ Xcode.FileDataType.Basic.Applesoft
+ localizedDescription
+ Applesoft BASIC Source
+ name
+ File type for Applesoft BASIC
+ point
+ Xcode.FileDataType
+ typeConformedTo
+
+
+ typeIdentifier
+ public.source-code
+
+
+ typeIdentifier
+ com.rand-family.xcode.applesoft
+ version
+ 1.0
+
+ Xcode.FileDataTypeDetector.Basic.Applesoft
+
+ detectedTypeIdentifier
+ com.rand-family.xcode.applesoft
+ id
+ Xcode.FileDataTypeDetector.Basic.Applesoft
+ matchesExtension
+ bas
+ point
+ Xcode.FileDataTypeDetector
+
+ Xcode.SourceCodeLanguage.Applesoft
+
+ commentSyntax
+
+
+ prefix
+ REM
+
+
+ conformsTo
+
+
+ identifier
+ Xcode.SourceCodeLanguage.Generic
+
+
+ fileDataType
+
+
+ identifier
+ com.rand-family.xcode.applesoft
+
+
+ id
+ Xcode.SourceCodeLanguage.Applesoft
+ languageName
+ Applesoft BASIC
+ languageSpecification
+ xcode.lang.basic.applesoft
+ name
+ Applesoft BASIC
+ point
+ Xcode.SourceCodeLanguage
+ supportsIndentation
+ false
+ version
+ 1.0
+
diff --git a/pkg/Specifications/applesoft.xclangspec b/pkg/Specifications/applesoft.xclangspec
new file mode 100644
index 0000000..88b5ea9
--- /dev/null
+++ b/pkg/Specifications/applesoft.xclangspec
@@ -0,0 +1,181 @@
+// Applesoft BASIC language specs
+(
+
+/****************************************************************************/
+// MARK: Keywords
+/****************************************************************************/
+
+ {
+ Identifier = "xcode.lang.basic.applesoft.identifier";
+ Syntax = {
+ CaseSensitive = NO;
+ StartChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ Chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+ Type = "xcode.syntax.identifier";
+ };
+ },
+
+ {
+ Identifier = "xcode.lang.basic.applesoft.keyword";
+ Syntax = {
+ CaseSensitive = NO;
+ StartChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ Chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$";
+ Words = (
+ "NEW",
+ "CLEAR",
+ "LIST",
+ "RUN",
+ "LOAD",
+ "SAVE",
+
+ "DIM",
+
+ "AND",
+ "OR",
+ "NOT",
+
+ "ABS",
+ "SGN",
+ "INT",
+ "SQR",
+ "SIN",
+ "COS",
+ "TAN",
+ "ATN",
+ "EXP",
+ "LOG",
+ "RND",
+ "DEF",
+
+ "LEN",
+ "LEFT$",
+ "MID$",
+ "RIGHT$",
+ "STR$",
+ "VAL",
+ "CHR$",
+ "ASC",
+
+ "GOTO",
+ "ON",
+ "IF",
+ "THEN",
+ "FOR",
+ "TO",
+ "STEP",
+ "NEXT",
+ "GOSUB",
+ "RETURN",
+ "POP",
+ "ONERR",
+ "RESUME",
+ "STOP",
+ "CONT",
+ "END",
+
+ "PEEK",
+ "POKE",
+ "CALL",
+ "USR",
+ "HIMEM",
+ "LOMEM",
+ "FRE",
+ "TRACE",
+ "NOTRACE",
+
+ "GR",
+ "COLOR",
+ "PLOT",
+ "HLIN",
+ "VLIN",
+ "SCRN",
+ "HGR",
+ "HGR2",
+ "HCOLOR",
+ "HPLOT",
+ "DRAW",
+ "AT",
+ "XDRAW",
+ "SCALE",
+ "ROT",
+
+ "IN#",
+ "INPUT",
+ "GET",
+ "READ",
+ "DATA",
+ "RESTORE",
+ "PDL",
+ "PR#",
+ "PRINT",
+ "TEXT",
+ "HOME",
+ "HTAB",
+ "VTAB",
+ "INVERSE",
+ "NORMAL",
+ "FLASH"
+ );
+ Type = "xcode.syntax.keyword";
+ AltType = "xcode.syntax.identifier";
+ };
+ },
+
+/****************************************************************************/
+// MARK: Simple Syntax Coloring
+/****************************************************************************/
+
+ {
+ Identifier = "xcode.lang.basic.applesoft";
+ Description = "Applesoft BASIC Coloring";
+ BasedOn = "xcode.lang.simpleColoring";
+ IncludeInMenu = YES;
+ Name = "Applesoft BASIC";
+ Syntax = {
+ Tokenizer = "xcode.lang.basic.applesoft.lexer";
+ IncludeRules = (
+ "xcode.lang.basic.applesoft.codeblock",
+ );
+ Type = "xcode.syntax.plain";
+ };
+ },
+ {
+ Identifier = "xcode.lang.basic.applesoft.lexer";
+ Syntax = {
+ IncludeRules = (
+ "xcode.lang.basic.applesoft.comment.rem",
+ "xcode.lang.string",
+ "xcode.lang.character",
+ "xcode.lang.number",
+ "xcode.lang.basic.applesoft.keyword",
+ "xcode.lang.basic.applesoft.identifier",
+ );
+ };
+ },
+
+ {
+ Identifier = "xcode.lang.basic.applesoft.comment.rem";
+ Syntax = {
+ Start = "REM";
+ End = "\n";
+ IncludeRules = ( "xcode.lang.url", "xcode.lang.url.mail", "xcode.lang.comment.mark" );
+ Type = "xcode.syntax.comment";
+ };
+ },
+
+ {
+ Identifier = "xcode.lang.basic.applesoft.codeblock";
+ Syntax = {
+ Tokenizer = "xcode.lang.applesoft.lexer.lexer";
+ Start = "{";
+ End = "}";
+ Recursive = YES;
+ Foldable = YES;
+ Type = "xcode.syntax.definition.function";
+ IncludeRules = (
+ );
+ };
+ },
+
+)
diff --git a/pkg/Templates/Apple II/Apple II Asm Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II Asm Project.xctemplate/TemplateInfo.plist
index b616654..9d9cfd8 100644
--- a/pkg/Templates/Apple II/Apple II Asm Project.xctemplate/TemplateInfo.plist
+++ b/pkg/Templates/Apple II/Apple II Asm Project.xctemplate/TemplateInfo.plist
@@ -7,7 +7,9 @@
main.s
Makefile
make/AppleCommander.jar
+ make/bastokenizer-tools-bt-0.2.0.jar
make/createDiskImage
+ make/bt
make/DevApple.vii
make/dos33_template.dsk
make/errorFilter.sh
@@ -80,6 +82,13 @@
Path
make/createDiskImage
+ make/bt
+
+ Group
+ make
+ Path
+ make/bt
+
make/AppleCommander.jar
Path
@@ -87,6 +96,13 @@
Group
make
+ make/bastokenizer-tools-bt-0.2.0.jar
+
+ Path
+ make/bastokenizer-tools-bt-0.2.0.jar
+ Group
+ make
+
Makefile
Path
diff --git a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist
new file mode 100644
index 0000000..a160fc1
--- /dev/null
+++ b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/TemplateInfo.plist
@@ -0,0 +1,208 @@
+
+
+
+
+ Nodes
+
+ ___PACKAGENAME___.bas
+ Makefile
+ make/AppleCommander.jar
+ make/bastokenizer-tools-bt-0.2.0.jar
+ make/createDiskImage
+ make/bt
+ make/DevApple.vii
+ make/dos33_template.dsk
+ make/errorFilter.sh
+ make/head.mk
+ make/prodos_template.dsk
+ make/tail.mk
+ make/V2Make.scpt
+ ../___PACKAGENAME___.xcodeproj/xcshareddata/xcschemes/___PACKAGENAME___.xcscheme
+
+ Definitions
+
+ ___PACKAGENAME___.bas
+
+ Path
+ ___PACKAGENAME___.bas
+
+ make/V2Make.scpt
+
+ Group
+ make
+ Path
+ make/V2Make.scpt
+
+ make/errorFilter.sh
+
+ Group
+ make
+ Path
+ make/errorFilter.sh
+
+ make/tail.mk
+
+ Group
+ make
+ Path
+ make/tail.mk
+
+ make/prodos_template.dsk
+
+ Group
+ make
+ Path
+ make/prodos_template.dsk
+
+ make/head.mk
+
+ Group
+ make
+ Path
+ make/head.mk
+
+ make/dos33_template.dsk
+
+ Group
+ make
+ Path
+ make/dos33_template.dsk
+
+ make/DevApple.vii
+
+ Group
+ make
+ Path
+ make/DevApple.vii
+
+ make/createDiskImage
+
+ Group
+ make
+ Path
+ make/createDiskImage
+
+ make/bt
+
+ Group
+ make
+ Path
+ make/bt
+
+ make/AppleCommander.jar
+
+ Path
+ make/AppleCommander.jar
+ Group
+ make
+
+ make/bastokenizer-tools-bt-0.2.0.jar
+
+ Path
+ make/bastokenizer-tools-bt-0.2.0.jar
+ Group
+ make
+
+ Makefile
+
+ Path
+ Makefile
+
+ ../___PACKAGENAME___.xcodeproj/xcshareddata/xcschemes/___PACKAGENAME___.xcscheme
+
+ Group
+
+ Supporting Files
+
+ Path
+ ___PACKAGENAME___.xcscheme
+
+
+ Kind
+ Xcode.Xcode3.ProjectTemplateUnitKind
+ Identifier
+ com.halcyontouch.apple2BasicBuildSystem
+ Ancestors
+
+ com.apple.dt.unit.externalBuildSystem
+
+ Concrete
+
+ Description
+ This template creates an Apple II Basic code project. The project starts with a single Applesoft file which you can modify.
+ Options
+
+ Targets
+
+
+ TargetType
+ Legacy
+ TargetIdentifier
+ com.apple.dt.cocoaLegacyTarget
+ BuildToolPath
+ ___VARIABLE_buildToolPath___
+ BuildToolArgsString
+ -C ___PACKAGENAME___ $(ACTION)
+ SharedSettings
+
+ OTHER_CFLAGS
+
+ OTHER_LDFLAGS
+
+
+ Configurations
+
+ Debug
+
+ DEBUGGING_SYMBOLS
+ YES
+ GCC_GENERATE_DEBUGGING_SYMBOLS
+ YES
+ GCC_OPTIMIZATION_LEVEL
+ 0
+
+ Release
+
+
+
+
+ ProductType
+ com.apple.product-type.tool
+ TargetIdentifier
+ com.apple.dt.commandLineToolTarget
+ Name
+ doNotBuild
+ SharedSettings
+
+ PRODUCT_NAME
+ doNotBuild
+ GCC_PREPROCESSOR_DEFINITIONS
+ __fastcall__=""
+ HEADER_SEARCH_PATHS
+ /usr/local/lib/cc65/include
+
+ BuildPhases
+
+
+ Class
+ Sources
+
+
+ Class
+ Frameworks
+
+
+ Class
+ CopyFiles
+ DstPath
+ /usr/share/man/man1/
+ DstSubfolderSpec
+ 0
+ RunOnlyForDeploymentPostprocessing
+ YES
+
+
+
+
+
+
diff --git a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/___PACKAGENAME___.bas b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/___PACKAGENAME___.bas
new file mode 100644
index 0000000..21103eb
--- /dev/null
+++ b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/___PACKAGENAME___.bas
@@ -0,0 +1,6 @@
+10 REM ___FILENAME___
+20 REM ___PROJECTNAME___
+30 REM Created by ___FULLUSERNAME___ on ___DATE___.
+40 REM ___COPYRIGHT___
+
+100 PRINT "HELLO, WORLD!"
diff --git a/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/___PACKAGENAME___.xcscheme b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/___PACKAGENAME___.xcscheme
new file mode 100644
index 0000000..61815a2
--- /dev/null
+++ b/pkg/Templates/Apple II/Apple II Basic Project.xctemplate/___PACKAGENAME___.xcscheme
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pkg/Templates/Apple II/Apple II C Project.xctemplate/TemplateInfo.plist b/pkg/Templates/Apple II/Apple II C Project.xctemplate/TemplateInfo.plist
index bc163ad..890834d 100644
--- a/pkg/Templates/Apple II/Apple II C Project.xctemplate/TemplateInfo.plist
+++ b/pkg/Templates/Apple II/Apple II C Project.xctemplate/TemplateInfo.plist
@@ -7,7 +7,9 @@
main.c
Makefile
make/AppleCommander.jar
+ make/bastokenizer-tools-bt-0.2.0.jar
make/createDiskImage
+ make/bt
make/DevApple.vii
make/dos33_template.dsk
make/errorFilter.sh
@@ -80,6 +82,13 @@
Path
make/createDiskImage
+ make/bt
+
+ Group
+ make
+ Path
+ make/bt
+
make/AppleCommander.jar
Path
@@ -87,6 +96,13 @@
Group
make
+ make/bastokenizer-tools-bt-0.2.0.jar
+
+ Path
+ make/bastokenizer-tools-bt-0.2.0.jar
+ Group
+ make
+
Makefile
Path
diff --git a/pkg/Templates/File Templates/Apple II/Basic File.xctemplate/TemplateInfo.plist b/pkg/Templates/File Templates/Apple II/Basic File.xctemplate/TemplateInfo.plist
new file mode 100644
index 0000000..8ffbf82
--- /dev/null
+++ b/pkg/Templates/File Templates/Apple II/Basic File.xctemplate/TemplateInfo.plist
@@ -0,0 +1,20 @@
+
+
+
+
+ AllowedTypes
+
+ com.rand-family.xcode.applesoft
+
+ DefaultCompletionName
+ File
+ Description
+ An Applesoft BASIC source file.
+ Kind
+ Xcode.IDEKit.TextSubstitutionFileTemplateKind
+ MainTemplateFile
+ ___FILEBASENAME___.bas
+ Summary
+ An Applesoft BASIC source file
+
+
diff --git a/pkg/Templates/File Templates/Apple II/Basic File.xctemplate/___FILEBASENAME___.bas b/pkg/Templates/File Templates/Apple II/Basic File.xctemplate/___FILEBASENAME___.bas
new file mode 100755
index 0000000..b8f53ef
--- /dev/null
+++ b/pkg/Templates/File Templates/Apple II/Basic File.xctemplate/___FILEBASENAME___.bas
@@ -0,0 +1,5 @@
+10 REM ___FILENAME___
+20 REM ___PROJECTNAME___
+30 REM Created by ___FULLUSERNAME___ on ___DATE___.
+40 REM ___COPYRIGHT___
+
diff --git a/pkg/createPackage b/pkg/createPackage
index 53977c2..23041a1 100755
--- a/pkg/createPackage
+++ b/pkg/createPackage
@@ -14,6 +14,9 @@ cp main.c $TMPDIR/Templates/'Apple II/Apple II C Project.xctemplate/'
cp -R make $TMPDIR/Templates/'Apple II/Apple II Asm Project.xctemplate/'
cp Makefile $TMPDIR/Templates/'Apple II/Apple II Asm Project.xctemplate/'
+cp -R make $TMPDIR/Templates/'Apple II/Apple II Basic Project.xctemplate/'
+sed 's/^# MACHINE = apple2-basic/MACHINE = apple2-basic/' < Makefile > $TMPDIR/Templates/'Apple II/Apple II Basic Project.xctemplate'/Makefile
+
pkgbuild --root $TMPDIR --version 2.0 --identifier com.halcyontouch.Apple2Template.pkg --install-location /Library/Developer/Xcode/ --scripts pkg/scripts/ AppleXcodeTemplate.pkg
productbuild --distribution pkg/Distribution.xml --resource ./pkg temp.pkg
rm AppleXcodeTemplate.pkg