First commit

This commit is contained in:
Olivier Guinart 2016-12-28 15:12:02 -08:00
parent 240b66fcc7
commit e18c3baaec
6 changed files with 186 additions and 1 deletions

11
HelloWorld.s Normal file
View File

@ -0,0 +1,11 @@
; Uses S-C Assembler variant.
* This is also a valid comment...
org $800
main ldy #$00
start_loop lda HelloWorld,y
beq end_loop
jsr $fded ; ROM routine, COUT, y is preserved
iny
bne start_loop
end_loop rts
HelloWorld ASC "HELLO WORLD!"00

22
HelloWorld.sln Normal file
View File

@ -0,0 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Express 2013 for Windows Desktop
VisualStudioVersion = 12.0.31101.0
MinimumVisualStudioVersion = 10.0.40219.1
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "HelloWorld", "HelloWorld.vcxproj", "{BAF4B8D0-B039-479F-911C-2EC80FAEA2DD}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{BAF4B8D0-B039-479F-911C-2EC80FAEA2DD}.Debug|Win32.ActiveCfg = Debug|Win32
{BAF4B8D0-B039-479F-911C-2EC80FAEA2DD}.Debug|Win32.Build.0 = Debug|Win32
{BAF4B8D0-B039-479F-911C-2EC80FAEA2DD}.Release|Win32.ActiveCfg = Release|Win32
{BAF4B8D0-B039-479F-911C-2EC80FAEA2DD}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

81
HelloWorld.vcxproj Normal file
View File

@ -0,0 +1,81 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{BAF4B8D0-B039-479F-911C-2EC80FAEA2DD}</ProjectGuid>
<Keyword>MakeFileProj</Keyword>
<SccProjectName>SAK</SccProjectName>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v120</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<NMakeOutput>$(PRG)</NMakeOutput>
<NMakePreprocessorDefinitions>
</NMakePreprocessorDefinitions>
<ExecutablePath>$(MERLIN32WIN);$(PATH);</ExecutablePath>
<IncludePath />
<ReferencePath />
<LibraryPath>$(MERLIN32LIBS);</LibraryPath>
<LibraryWPath />
<SourcePath />
<ExcludePath />
<NMakeBuildCommandLine>nmake.exe</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>nmake.exe all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>nmake.ex clean</NMakeCleanCommandLine>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<NMakeOutput>$(PRG)</NMakeOutput>
<NMakePreprocessorDefinitions>
</NMakePreprocessorDefinitions>
<ExecutablePath>$(MERLIN32WIN);$(PATH);</ExecutablePath>
<IncludePath />
<ReferencePath />
<LibraryPath>$(MERLIN32LIBS);</LibraryPath>
<LibraryWPath />
<SourcePath />
<ExcludePath />
<NMakeBuildCommandLine>nmake.exe</NMakeBuildCommandLine>
<NMakeReBuildCommandLine>nmake.exe all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine>nmake.ex clean</NMakeCleanCommandLine>
</PropertyGroup>
<ItemDefinitionGroup>
</ItemDefinitionGroup>
<ItemGroup>
<None Include="HelloWorld.s" />
<None Include="MAKEFILE" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

66
MAKEFILE Normal file
View File

@ -0,0 +1,66 @@
# Program name
PRG=HelloWorld
# System target
SYSTEM=apple2enh
# The test below allows to keep working on this in different environments\computers
!if "$(COMPUTERNAME)" == "M"
# That's the location where I have programs such as AppleWin, or a DOS blank disk image
MyAppleFolder="C:\Users\Olivier\OneDrive\Apple"
!else
# Work environment...
MyAppleFolder="D:\Apple"
# This was running on GSPort @ work
GSPORT=$(MyAppleFolder)\sport_0.31\gsport.exe
!endif
# Misc. vars
# https://github.com/AppleWin/AppleWin
APPLEWIN=$(MyAppleFolder)\AppleWin\Applewin.exe
# http://www.brutaldeluxe.fr/products/crossdevtools/merlin/
MERLIN32ROOT=$(MyAppleFolder)\Merlin32_v1.0
MERLIN32LIBS=$(MERLIN32ROOT)\Library
MERLIN32WIN=$(MERLIN32ROOT)\Windows
MERLIN32EXE=$(MERLIN32WIN)\merlin32.exe
# http://applecommander.sourceforge.net/
APPLECOMMANDER=$(MyAppleFolder)\AppleCommander-1.3.5-ac.jar
ACJAR=java.exe -jar $(APPLECOMMANDER)
$(PRG): $(PRG).s
@Echo ***************************************************************
@Echo *** On compile l'exécutable / Compile program
@Echo ***************************************************************
$(MERLIN32EXE) -V $(MERLIN32LIBS) $(PRG).s
GetFloppyAndCopyDSK:
@Echo ***************************************************************
@Echo *** On copie la disquette vierge à partir du répertoire parent
@Echo *** et on copie dessus les fichiers executables et autres
@Echo *** Copying blank disk image and copying the program on it
@Echo ***************************************************************
copy /Y $(MyAppleFolder)\prodos.dsk .\$(PRG).dsk
$(ACJAR) -p $(PRG).dsk $(PRG) bin 2048 < $(PRG)
LaunchAppleWin:
@Echo ***************************************************************
@Echo *** On lance le tout dans AppleWin / Launch AppleWin
@Echo ***************************************************************
$(APPLEWIN) -d1 $(PRG).dsk
LaunchGSPort:
@Echo ***************************************************************
@Echo *** On lance le tout dans GSPORT / Launch GSPort (not used here)
@Echo ***************************************************************
#$(GSPORT) -d1 $(PRG).dsk
$(GSPORT)
clean:
@Echo ***************************************************************
@Echo *** On efface les fichiers programme, objet et backup
@Echo *** Clean files
@Echo ***************************************************************
del _FileInformation.txt $(PRG)_Output.txt $(PRG).dsk $(PRG)
all: clean $(PRG) GetFloppyAndCopyDSK LaunchAppleWin

BIN
Merlin32BuildSolution.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 272 KiB

View File

@ -1,2 +1,7 @@
# Merlin32BuildSolution
Visual Studio makefile solution to build with Merlin32
Visual Studio makefile solution to build Apple II projects with Merlin32.
![](https://github.com/OlivierGuinart/Merlin32BuildSolution/blob/master/Merlin32BuildSolution.gif)
This is a boilerplate VS solution to jumpstart Merlin32 projects development. The most important file is MAKEFILE: this is where you set your paths to your local tools, e.g. AppleWin, prodos.dsk, Merlin32, AppleCommander, GSPort, etc...