Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
github: [gungwald]
custom: ["https://www.paypal.me/gungwald", "https://cash.app/$BillChatfield", "https://www.venmo.com/u/Bill-Chatfield"]
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@
/examples/6809/test.obj
/examples/melps-740/test.obj
/examples/4004/*.obj
.*.swp
/build/
32 changes: 31 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,34 @@ iterative constructs in the source code. Using these dramatically reduces the nu
needed in your code and makes the logic much easier to understand. The generated code automatically
uses the shortest branch/jump sequence needed. More documentation for about this is available here:

http://www.obelisk.me.uk/dev65/
http://www.obelisk.me.uk/dev65/

## Requirements

Runtime: Java 1.6 or greater
Compile: Java 1.6 to Java 11

Although the sources are written to Java 1.4, there is a 3rd party jar file that requires Java 1.6 at
runtime. So you must have Java 1.6 or greater to run it. It doesn't matter if you have the JRE or JDK.

Additionally, IzPack, the installer component, requires at least Java 1.6.

To support the oldest possible Java at runtime, the compile step specifies Java 1.6 bytecode for the
output. This will be the format of the class files in dev65.jar. This means that Java 1.6 will be
required to run the code. But, at most Java 11 is require to perform the compile step because it is
the last version to be able to generate bytecode as old as Java 1.6.

Why is support being provided for a version of Java as old as 1.6? Why not only support the latest
version of Java? To answer that, ask yourself why you want an assembler for a CPU as old as the 6502.
Additionally, the latest version of Java is only available for the latest versions of Linux, Mac,
and Windows on 64-bit AMD/Intel hardware. If you have older hardware, non-Intel hardware, and/or
an older operating system, you can't run the lastest version of Java. So, supporting the oldest
version of Java possible expands the types of systems this software will run on. To achieve,
"Write once, run anywhere" an older version of Java is required. For example,
it would be preferrable to support these older system which were supported until the most recent code
was added:

Mac G3 - can run MacOS 10.3 at most - Java 1.4 at most
Mac G4 - can run MacOS 10.4 at most - Java 1.5 at most
Solaris 8 - Java 1.5 at most

69 changes: 69 additions & 0 deletions build-installer.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="iso-8859-1" standalone="yes" ?>

<installation version="1.0">

<!--
<izpack:installation version="5.0"
xmlns:izpack="http://izpack.org/schema/installation"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://izpack.org/schema/installation http://izpack.org/schema/5.0/izpack-installation-5.0.xsd">
-->
<info>
<appname>dev65</appname>
<appversion>from 2021-08-23</appversion>
<appsubpath>dev65</appsubpath>
<javaversion>1.4</javaversion>
<url>https://github.com/gungwald/dev65</url>
<authors>
<author name="Andres Jacobs (original author)" email=""/>
<author name="Bill Chatfield (installer, run scripts)" email="bill_chatfield@yahoo.com"/>
</authors>
<run-privileged condition="izpack.windowsinstall" uninstaller="yes"/>
</info>

<locale>
<langpack iso3="eng"/>
</locale>

<guiprefs width="640" height="480" resizable="yes">
<modifier key="useHeadingPanel" value="yes" />
<modifier key="labelFontSize" value="1.3"/>
<modifier key="allYGap" value="20"/>
</guiprefs>

<panels>
<panel classname="HelloPanel"/>
<!-- <panel classname="DataCheckPanel"/> -->
<panel classname="TargetPanel"/>
<panel classname="InstallPanel"/>
<panel classname="SimpleFinishPanel"/>
</panels>

<packs>
<pack name="core" required="yes">
<description>The core files needed for the application</description>
<fileset dir="build/dev65-setup" targetdir="${INSTALL_PATH}"
override="true"/>
<executable targetfile="$INSTALL_PATH/bin/as65"
type="bin" stage="never" failure ="warn" keep="true" >
<os family="unix" />
<os family="mac" />
</executable>
<executable targetfile="$INSTALL_PATH/bin/lk65"
type="bin" stage="never" failure ="warn" keep="true" >
<os family="unix" />
<os family="mac" />
</executable>
<executable targetfile="$INSTALL_PATH/bin/add-to-path"
stage="postinstall" failure="warn" keep="true">
<os family="unix" />
<os family="mac" />
<os family="windows" />
<args>
<arg value="$INSTALL_PATH/bin"/>
</args>
</executable>
</pack>
</packs>

</installation>
190 changes: 190 additions & 0 deletions build.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,190 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>

<!-- This DOCTYPE tag shuts off the warning from Eclipse that there is no DTD
associated with this XML file. -->

<!DOCTYPE project>

<project basedir="." default="installer" name="dev65">

<property environment="env" />
<property name="debuglevel" value="source,lines,vars" />

<property name="dir.buildfile" value="." />
<property name="dir.jarfile" value="${dir.buildfile}" />
<property name="build.dir" value="build" />
<property name="classes.dir" value="${build.dir}/classes" />
<property name="app.jar" value="${build.dir}/${ant.project.name}-1.6.jar" />
<property name="app.jar.1.4" value="${build.dir}/${ant.project.name}.jar" />
<property name="app.jar.1.3" value="${build.dir}/${ant.project.name}-1.3.jar" />

<property name="izpack.dist" value="${user.home}/IzPack" />
<property name="app.installer.setup.dir" value="${build.dir}/${ant.project.name}-setup" />
<property name="app.installer" value="${build.dir}/${ant.project.name}-setup-1.5.jar" />
<property name="app.installer.1.4" value="${build.dir}/${ant.project.name}-setup-for-java-1.5-and-up.jar" />
<property name="java.1.3.dir" value="N/A" />
<property name="java.1.4.dir" value="${user.home}/Dropbox/opt/j2sdk1.4.2/j2sdk1.4.2_19" />
<property name="java.1.5.dir" value="${user.home}/Dropbox/opt/jdk1.5.0/jdk1.5.0_22" />
<property name="javac-1.4" value="${java.1.4.dir}/bin/javac" />
<property name="javac-1.5" value="${java.1.5.dir}/bin/javac" />

<property name="retro.tx.ver" value="1.2.9" />
<property name="retro.tx.dir" value="lib/Retrotranslator-${retro.tx.ver}-bin" />

<path id="lib.path">
<!-- <fileset dir="${izpack.dist}" includes="**/*.jar" /> -->
<fileset dir="lib">
<include name="izpack-standalone-compiler-4.3.5.jar"/>
</fileset>
</path>

<taskdef name="izpack" classname="com.izforge.izpack.ant.IzPackTask" classpathref="lib.path" />

<taskdef name="retrotranslator" classname="net.sf.retrotranslator.transformer.RetrotranslatorTask">
<classpath>
<fileset dir="${retro.tx.dir}">
<include name="retrotranslator-transformer-${retro.tx.ver}.jar" />
<include name="retrotranslator-runtime-${retro.tx.ver}.jar" />
<include name="backport-util-concurrent-3.1.jar" />
</fileset>
</classpath>
</taskdef>

<path id="dev65.classpath">
<pathelement location="${classes.dir}" />
<pathelement location="lib/javadocking.jar" />
<pathelement location="lib/rsyntaxtextarea-2.6.1.jar" />
<pathelement location="lib/jSerialComm-2.6.2.jar" />
</path>

<path id="run.as65.classpath">
<path refid="dev65.classpath" />
<pathelement location="lib/javadocking.jar" />
<pathelement location="lib/rsyntaxtextarea-2.6.1.jar" />
<pathelement location="lib/jSerialComm-2.6.2.jar" />
</path>

<target name="init">
<mkdir dir="${classes.dir}" />
<copy includeemptydirs="false" todir="${classes.dir}">
<fileset dir="src">
<exclude name="**/*.java" />
</fileset>
</copy>
<copy includeemptydirs="false" todir="${classes.dir}">
<fileset dir="src-65016">
<exclude name="**/*.java" />
</fileset>
</copy>
</target>

<target name="clean">
<delete dir="${build.dir}" />
</target>

<target depends="clean" name="cleanall" />

<target depends="build-subprojects,build-project" name="build" />

<target name="build-subprojects" />

<target depends="init" name="build-project">
<echo message="${ant.project.name}: ${ant.file}" />
<javac debug="true" debuglevel="${debuglevel}" destdir="${classes.dir}" includeantruntime="false" source="1.6" target="1.6">
<src path="src" />
<src path="src-65016" />
<classpath refid="dev65.classpath" />
</javac>
</target>

<target name="jar" depends="build">
<jar destfile="${app.jar}">
<manifest>
<attribute name="Main-Class" value="uk.co.demon.obelisk.w65xx.Dev65" />
<attribute name="Class-Path" value="./ javadocking.jar rsyntaxtextarea-2.6.1.jar jSerialComm-2.6.2.jar" />
</manifest>
<fileset dir="${classes.dir}" />
<zipfileset src="lib/rsyntaxtextarea-2.6.1.jar" />
<zipfileset src="lib/jSerialComm-2.6.2.jar" />
<zipfileset src="lib/javadocking.jar" />
</jar>
</target>

<target name="backport" depends="jar">
<retrotranslator target="1.4" destjar="${app.jar.1.4}" smart="true"
verify="true" failonwarning="false"
embed="com.alteredmechanism.retrotranslator.backport">
<!-- <fileset dir="${classes.dir}" includes="**/*.class" /> -->
<jarfileset file="${app.jar}" />
<classpath>
<fileset dir="${java.1.4.dir}/jre/lib" includes="**/*.jar" />
<fileset dir="${retro.tx.dir}">
<include name="retrotranslator-runtime-${retro.tx.ver}.jar" />
<include name="backport-util-concurrent-3.1.jar" />
</fileset>
<fileset file="${app.jar}" />
</classpath>
</retrotranslator>
</target>

<!-- Will not work until a 1.3 JDK is defined. -->
<target name="backport-to-1.3" depends="jar">
<retrotranslator target="1.3" destjar="${app.jar.1.3}" smart="true" verify="true" failonwarning="false">
<fileset dir="build/classes" includes="**/*.class" />
<jarfileset dir="build/lib" includes="**/*.jar" />
<classpath>
<fileset dir="${java.1.3.dir}/jre/lib" includes="**/*.jar" />
<fileset dir="${retro.tx.dir}">
<include name="retrotranslator-runtime13-${retro.tx.ver}.jar" />
<include name="backport-util-concurrent-java12-3.1.jar" />
</fileset>
<fileset dir="lib" includes="**/*.jar" />
</classpath>
</retrotranslator>
</target>

<target name="installer-setup" depends="backport">
<mkdir dir="${app.installer.setup.dir}" />
<copy includeemptydirs="false" todir="${app.installer.setup.dir}/bin" verbose="true">
<fileset dir="scripts">
<include name="*" />
</fileset>
</copy>
<mkdir dir="${app.installer.setup.dir}/lib" />
<copy includeemptydirs="false" todir="${app.installer.setup.dir}/lib" verbose="true">
<fileset dir="${build.dir}">
<include name="dev65.jar" />
</fileset>
</copy>
</target>

<target name="installer" depends="installer-setup">
<izpack input="build-installer.xml" output="${app.installer}" installerType="standard" basedir="${basedir}" izPackDir="${izpack.dist}" />
</target>

<target name="dist-zip" depends="installer">
<zip destfile="build/dev65-setup.zip">
<zipfileset dir="scripts" includes="dev65-setup.*" />
<zipfileset dir="build" includes="dev65-setup.jar" />
</zip>
</target>

<!-- Trying to get back to 1.4 but it only backports back to 1.5 because the
installer uses classes not present in 1.4. -->
<target name="backport-installer" depends="installer">
<retrotranslator target="1.4" destjar="${app.installer.1.4}"
smart="true" verify="true" failonwarning="false"
embed="com.alteredmechanism.retrotranslator.backport">
<jarfileset file="${app.installer}" />
<classpath>
<fileset dir="${java.1.4.dir}/jre/lib" includes="**/*.jar" />
<fileset dir="${retro.tx.dir}">
<include name="retrotranslator-runtime-${retro.tx.ver}.jar" />
<include name="backport-util-concurrent-3.1.jar" />
</fileset>
<fileset file="${app.installer}" />
</classpath>
</retrotranslator>
</target>

</project>
28 changes: 28 additions & 0 deletions lib/Retrotranslator-1.2.9-bin/ASM-LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@

ASM: a very small and fast Java bytecode manipulation framework
Copyright (c) 2000-2005 INRIA, France Telecom
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holders nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
26 changes: 26 additions & 0 deletions lib/Retrotranslator-1.2.9-bin/LICENSE.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Copyright (c) 2005 - 2009 Taras Puchko
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holders nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
Binary file not shown.
Binary file not shown.
Loading