diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..07af73b --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/AssemblyTest.xcodeproj/xcuserdata/ + +/AssemblyTest.xcodeproj/project.xcworkspace/xcuserdata/ diff --git a/AppleCommander.jar b/AppleCommander.jar new file mode 100644 index 0000000..f74e7cb Binary files /dev/null and b/AppleCommander.jar differ diff --git a/AssemblyTest.xcodeproj/project.pbxproj b/AssemblyTest.xcodeproj/project.pbxproj new file mode 100644 index 0000000..c0ae517 --- /dev/null +++ b/AssemblyTest.xcodeproj/project.pbxproj @@ -0,0 +1,188 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXFileReference section */ + 70D435A4199EE3A2001BFD9B /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + 70D435A5199EE47A001BFD9B /* x.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = x.s; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXGroup section */ + 70D43599199EE38E001BFD9B = { + isa = PBXGroup; + children = ( + 70D435A4199EE3A2001BFD9B /* Makefile */, + 70D435A5199EE47A001BFD9B /* x.s */, + ); + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXLegacyTarget section */ + 70D4359E199EE38E001BFD9B /* AssemblyTest */ = { + isa = PBXLegacyTarget; + buildArgumentsString = "$(ACTION)"; + buildConfigurationList = 70D435A1199EE38E001BFD9B /* Build configuration list for PBXLegacyTarget "AssemblyTest" */; + buildPhases = ( + ); + buildToolPath = /usr/bin/make; + dependencies = ( + ); + name = AssemblyTest; + passBuildSettingsInEnvironment = 1; + productName = AssemblyTest; + }; +/* End PBXLegacyTarget section */ + +/* Begin PBXProject section */ + 70D4359A199EE38E001BFD9B /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0600; + ORGANIZATIONNAME = "One Girl, One Laptop Productions"; + TargetAttributes = { + 70D4359E199EE38E001BFD9B = { + CreatedOnToolsVersion = 6.0; + }; + }; + }; + buildConfigurationList = 70D4359D199EE38E001BFD9B /* Build configuration list for PBXProject "AssemblyTest" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 70D43599199EE38E001BFD9B; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 70D4359E199EE38E001BFD9B /* AssemblyTest */, + ); + }; +/* End PBXProject section */ + +/* Begin XCBuildConfiguration section */ + 70D4359F199EE38E001BFD9B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = macosx; + }; + name = Debug; + }; + 70D435A0199EE38E001BFD9B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MACOSX_DEPLOYMENT_TARGET = 10.10; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = macosx; + }; + name = Release; + }; + 70D435A2199EE38E001BFD9B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEBUGGING_SYMBOLS = YES; + GCC_GENERATE_DEBUGGING_SYMBOLS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 70D435A3199EE38E001BFD9B /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + OTHER_CFLAGS = ""; + OTHER_LDFLAGS = ""; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 70D4359D199EE38E001BFD9B /* Build configuration list for PBXProject "AssemblyTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 70D4359F199EE38E001BFD9B /* Debug */, + 70D435A0199EE38E001BFD9B /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 70D435A1199EE38E001BFD9B /* Build configuration list for PBXLegacyTarget "AssemblyTest" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 70D435A2199EE38E001BFD9B /* Debug */, + 70D435A3199EE38E001BFD9B /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 70D4359A199EE38E001BFD9B /* Project object */; +} diff --git a/AssemblyTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/AssemblyTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..f11c351 --- /dev/null +++ b/AssemblyTest.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bd108fa --- /dev/null +++ b/Makefile @@ -0,0 +1,39 @@ +# +# Makefile +# AssemblyTest +# +# Part of a sample build pipeline for Apple ][ software development +# +# Created by Quinn Dunki on 8/15/14. +# One Girl, One Laptop Productions +# http://www.quinndunki.com +# http://www.quinndunki.com/blondihacks +# + +CL65=cl65 + +# You may need to change this to where your AppleCommander is installed: +AC=AppleCommander.jar + +# Change this to your desired starting address in Apple ][ memory: +ADDR=6000 + +# Put the name of your sourcefile here: +PGM=x + +all: $(PGM) + +install: $(PGM) + +clean: + rm -f $(PGM) + rm -f $(PGM).o + rm -f $(PGM).lst + +$(PGM): + @PATH=$(PATH):/usr/local/bin; $(CL65) -t apple2enh -l$(PGM).lst --start-addr $(ADDR) $(PGM).s + java -jar $(AC) -d $(PGM).dsk $(PGM) + java -jar $(AC) -p $(PGM).dsk $(PGM) BIN 0x$(ADDR) < $(PGM) + rm -f $(PGM) + rm -f $(PGM).o + osascript V2Make.scpt $(PROJECT_DIR) $(PGM) diff --git a/README.md b/README.md index 68a050f..004d77c 100644 --- a/README.md +++ b/README.md @@ -2,3 +2,8 @@ Apple2BuildPipeline =================== A build pipeline (with sample project) for making Apple ][ software on OS X. + +If you have Virtual ][ installed and running, just hit Cmd-B in Xcode to see this pipeline in action. + +For complete instructions and information on how it works, go to: +http://quinndunki.com/blondihacks/?p=1904 diff --git a/V2Make.scpt b/V2Make.scpt new file mode 100644 index 0000000..9d6e530 Binary files /dev/null and b/V2Make.scpt differ diff --git a/x.dsk b/x.dsk new file mode 100644 index 0000000..50c61d2 Binary files /dev/null and b/x.dsk differ diff --git a/x.s b/x.s new file mode 100644 index 0000000..8174c36 --- /dev/null +++ b/x.s @@ -0,0 +1,46 @@ +; +; x.s +; AssemblyTest +; +; Part of a sample build pipeline for Apple ][ software development +; +; Created by Quinn Dunki on 8/15/14. +; One Girl, One Laptop Productions +; http://www.quinndunki.com +; http://www.quinndunki.com/blondihacks +; + + +.org $6000 + +; Reserved locations + +INVERSE = $32 + + +; Constants + +CHAR_NORMAL = $ff +CHAR_INVERSE = $3f +CHAR_FLASH = $7f + + +; ROM entry points + +COUT = $fded + + + +; Main + +main: + lda #CHAR_FLASH + sta INVERSE + +loop: + lda #'X' + $80 + jsr COUT + jmp loop ; OMG so many Xs + + +