<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.8.5">Jekyll</generator><link href="https://devzendo.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://devzendo.github.io/" rel="alternate" type="text/html" /><updated>2020-03-04T09:05:15+00:00</updated><id>https://devzendo.github.io/feed.xml</id><title type="html">DevZendo.org</title><subtitle>Aesthetic Open Source Software</subtitle><author><name>Matt Gumbley</name></author><entry><title type="html">Parachute Parallel Processing Environment 0.0.1 released</title><link href="https://devzendo.github.io/development/parachute-0.0.1/" rel="alternate" type="text/html" title="Parachute Parallel Processing Environment 0.0.1 released" /><published>2019-06-21T00:00:00+00:00</published><updated>2019-06-21T00:00:00+00:00</updated><id>https://devzendo.github.io/development/parachute-0.0.1</id><content type="html" xml:base="https://devzendo.github.io/development/parachute-0.0.1/">&lt;p&gt;The first full release of the Parachute Parallel Processing Environment - 0.0.1 - is now
available.&lt;/p&gt;

&lt;p&gt;Parachute is a portable, open source emulation of the T800+ series of Inmos Transputers - see the emulator
release notes for detail.&lt;/p&gt;

&lt;p&gt;This has taken about 16 months to transform an old project that built on a single system,
into a multi-architecture platform that will form the basis of future language experiments.&lt;/p&gt;

&lt;p&gt;See the &lt;a href=&quot;/parachute&quot;&gt;&lt;strong&gt;Parachute Main Page&lt;/strong&gt;&lt;/a&gt; for more information, and
&lt;a href=&quot;/parachute-download&quot;&gt;&lt;strong&gt;Parachute Downloads&lt;/strong&gt;&lt;/a&gt; for the download links for macOS,
Windows, Ubuntu, Raspbian and CentOS.&lt;/p&gt;</content><author><name>Matt Gumbley</name></author><category term="update" /><summary type="html">Parachute is a portable, open source emulation of the T800+ series of Inmos Transputers - microprocessors designed for parallel processing.</summary></entry><entry><title type="html">Maven Cross-Platform Launcher Plugin 1.3.0 released</title><link href="https://devzendo.github.io/development/xplp-1.3.0/" rel="alternate" type="text/html" title="Maven Cross-Platform Launcher Plugin 1.3.0 released" /><published>2019-06-11T00:00:00+00:00</published><updated>2019-06-11T00:00:00+00:00</updated><id>https://devzendo.github.io/development/xplp-1.3.0</id><content type="html" xml:base="https://devzendo.github.io/development/xplp-1.3.0/">&lt;p&gt;The eighth release of the Cross Platform Launcher Plugin is now available.&lt;/p&gt;

&lt;p&gt;This Maven 2 plugin allows you to create launchers for Java programs on
Mac OS X, Windows and Linux.&lt;/p&gt;

&lt;p&gt;See its page in the &lt;a href=&quot;/dev/xplp&quot;&gt;&lt;strong&gt;developer area&lt;/strong&gt;&lt;/a&gt; for more information.&lt;/p&gt;

&lt;p&gt;This release changes the way Maven metadata is retrieved from javadoc annotations to java
annotations.&lt;/p&gt;

&lt;p&gt;It also now builds on Java 8, and fixes bugs.&lt;/p&gt;

&lt;p&gt;For Windows, added the janelDirectory option (can be bin, or root) - where the janel .exe/.lap/.dll files
will be stored: in a bin directory, or directly in the root (the backwards-compatible default).&lt;/p&gt;</content><author><name>Matt Gumbley</name></author><category term="update" /><summary type="html">Release notes.</summary></entry><entry><title type="html">Maven Cross-Platform Launcher Plugin 1.2.0 released</title><link href="https://devzendo.github.io/development/xplp-1.2.0/" rel="alternate" type="text/html" title="Maven Cross-Platform Launcher Plugin 1.2.0 released" /><published>2019-02-21T00:00:00+00:00</published><updated>2019-02-21T00:00:00+00:00</updated><id>https://devzendo.github.io/development/xplp-1.2.0</id><content type="html" xml:base="https://devzendo.github.io/development/xplp-1.2.0/">&lt;p&gt;The seventh release of the Cross Platform Launcher Plugin is now available.&lt;/p&gt;

&lt;p&gt;This Maven 2 plugin allows you to create launchers for Java programs on
Mac OS X, Windows and Linux.&lt;/p&gt;

&lt;p&gt;See its page in the &lt;a href=&quot;/dev/xplp&quot;&gt;&lt;strong&gt;developer area&lt;/strong&gt;&lt;/a&gt; for more information.&lt;/p&gt;

&lt;p&gt;This release adds the enhanced version of Janel 4.2.0-98 from Michael Knigge
(https://github.com/michaelknigge/janel) to provide support for 64-bit modern Java, Java 9, etc. 
See his Github page for details.&lt;/p&gt;

&lt;p&gt;The default version of Janel is still 3.0.2 for backwards compatibility.&lt;/p&gt;

&lt;p&gt;To switch to the enhanced Janel
use the settings &amp;lt;janelVersion&amp;gt;4.2&amp;lt;/janelVersion&amp;gt; and optionally &amp;lt;janelBits&amp;gt;64&amp;lt;/janelBits&amp;gt; (default) or
&amp;lt;janelBits&amp;gt;32&amp;lt;/janelBits&amp;gt; to switch between 64- and 32-bit variants.&lt;/p&gt;</content><author><name>Matt Gumbley</name></author><category term="update" /><summary type="html">Release notes.</summary></entry><entry><title type="html">Transputer Macro Assembler progress report: Convergence!</title><link href="https://devzendo.github.io/development/tmasm/" rel="alternate" type="text/html" title="Transputer Macro Assembler progress report: Convergence!" /><published>2018-08-17T00:00:00+00:00</published><updated>2018-08-17T00:00:00+00:00</updated><id>https://devzendo.github.io/development/tmasm</id><content type="html" xml:base="https://devzendo.github.io/development/tmasm/">&lt;p&gt;The Macro Assembler can now understand the T800 instruction set directly, rather than assembling byte sequences via
macros - which is how eForth is built. It should be possible to remove all the macros, change the processor directive
from .386 to .T800, and build.&lt;/p&gt;

&lt;p&gt;The Transputer is a RISC processor, with a small core of the most common instructions that are executed quickly,
and that allow building instruction operands using a variable length encoding.&lt;/p&gt;

&lt;p&gt;So to load a small (&amp;lt;=15) constant, e.g. LDC 12, you can encode this as the byte 0x4c with the high-order nybble
representing the LDC instruction, and the lower-order nybble its operand 0x0c. For larger constants, first issue prefix
instructions, then the LDC. So LDC 0x102 is encoded as the sequence 0x21, 0x20, 0x42 - PFIX 0x01, PFIX 0x00, LDC 0x02.
The two PFIX instructions OR the Oreg with their lower-order nybble, then left-shift Oreg by a nybble.&lt;/p&gt;

&lt;p&gt;A consequence of this is that if you’re trying to load a constant that’s currently undefined - say, a future label
address - you don’t know how long the PFIX / LDC sequence is going to be.&lt;/p&gt;

&lt;p&gt;The algorithm used here is from The Transputer Handbook, Graham &amp;amp; King, p48,49:&lt;/p&gt;

&lt;p&gt;“The solution is reasonably simple but time consuming. A data structure representing the whole program is built in
memory. Fixed length sections of code can be held as binary, but any label must be kept as a pointer to the label and
an associated size. Initially all offsets are assumed to fit in one nibble, with no prefixes needed. A pass over the
program is made, altering all those that require a larger offset to a suitable value. A further pass is then made,
expanding those instructions that do not now fit because the previous pass expanded instructions. This process
continues until no more changes need to be made.
This algorithm is the only one which is guaranteed to converge.”&lt;/p&gt;

&lt;p&gt;This has now been implemented in the Macro Assembler.&lt;/p&gt;

&lt;p&gt;See the &lt;a href=&quot;/parachute/&quot;&gt;&lt;strong&gt;Parachute Project&lt;/strong&gt;&lt;/a&gt; page for more information.&lt;/p&gt;

&lt;p&gt;Next: Write an assembler client library for the emulator’s I/O server protocol, use this in eForth, and get the
Transputer Emulator built for more OSs, particularly, port to Windows.&lt;/p&gt;</content><author><name>Matt Gumbley</name></author><category term="update" /><summary type="html">It builds compact encodings!</summary></entry><entry><title type="html">Transputer Macro Assembler progress report</title><link href="https://devzendo.github.io/development/tmasm/" rel="alternate" type="text/html" title="Transputer Macro Assembler progress report" /><published>2018-06-25T00:00:00+00:00</published><updated>2018-06-25T00:00:00+00:00</updated><id>https://devzendo.github.io/development/tmasm</id><content type="html" xml:base="https://devzendo.github.io/development/tmasm/">&lt;p&gt;I’ve been picking up an old project of mine, starting in Feb 2018. It’s another of those long
projects that’ll take some time to reach fruition…&lt;/p&gt;

&lt;p&gt;Build a complete Transputer-based OS (running on a modern version of a T800 emulator I initially
wrote several years ago), get a port of eForth running on it, develop some languages, …&lt;/p&gt;

&lt;p&gt;See the &lt;a href=&quot;/parachute/&quot;&gt;&lt;strong&gt;Parachute Project&lt;/strong&gt;&lt;/a&gt; page for more information.&lt;/p&gt;

&lt;p&gt;So far: I have a Macro Assembler, capable of assembling the Transputer port of eForth.
Next: Get the Transputer Emulator built for modern OSs…&lt;/p&gt;</content><author><name>Matt Gumbley</name></author><category term="update" /><summary type="html">It assembles eForth!</summary></entry><entry><title type="html">Maven Cross-Platform Launcher Plugin 1.1.1 released</title><link href="https://devzendo.github.io/development/xplp-1.1.1/" rel="alternate" type="text/html" title="Maven Cross-Platform Launcher Plugin 1.1.1 released" /><published>2017-09-28T00:00:00+00:00</published><updated>2017-09-28T00:00:00+00:00</updated><id>https://devzendo.github.io/development/xplp-1.1.1</id><content type="html" xml:base="https://devzendo.github.io/development/xplp-1.1.1/">&lt;p&gt;The sixth release of the Cross Platform Launcher Plugin is now available.&lt;/p&gt;

&lt;p&gt;This Maven 2 plugin allows you to create launchers for Java programs on
Mac OS X, Windows and Linux.&lt;/p&gt;

&lt;p&gt;See its page in the &lt;a href=&quot;/dev/xplp&quot;&gt;&lt;strong&gt;developer area&lt;/strong&gt;&lt;/a&gt; for more information.&lt;/p&gt;

&lt;p&gt;This release contains the ability to build universal launchers for Oracle Java 7/8 on OSX, and 
has updated many dependencies. Its source has moved to bitbucket.&lt;/p&gt;</content><author><name>Matt Gumbley</name></author><category term="update" /><summary type="html">Release notes.</summary></entry><entry><title type="html">The Quaqua 9.1 Look and Feel library is available in the Central Maven Repository</title><link href="https://devzendo.github.io/development/quaqua-9-1-in-maven-repo/" rel="alternate" type="text/html" title="The Quaqua 9.1 Look and Feel library is available in the Central Maven Repository" /><published>2017-09-20T00:00:00+00:00</published><updated>2017-09-20T00:00:00+00:00</updated><id>https://devzendo.github.io/development/quaqua-9-1-in-maven-repo</id><content type="html" xml:base="https://devzendo.github.io/development/quaqua-9-1-in-maven-repo/">&lt;p&gt;The latest version (9.1) of Werner Randelshofer’s Quaqua Mac OS X Look and
Feel library has been converted to a set of Maven artifacts, and deployed them to the
Central Maven Repository. &lt;a href=&quot;/dev/mavenised-quaqua/&quot;&gt;&lt;strong&gt;Find out more&lt;/strong&gt;&lt;/a&gt; 
about how to make use of them.&lt;/p&gt;</content><author><name>Matt Gumbley</name></author><category term="update" /><summary type="html">Make your Mac Java code lovely in a standard way.</summary></entry><entry><title type="html">Site relaunched!</title><link href="https://devzendo.github.io/site/relaunch/" rel="alternate" type="text/html" title="Site relaunched!" /><published>2016-10-07T00:00:00+00:00</published><updated>2016-10-07T00:00:00+00:00</updated><id>https://devzendo.github.io/site/relaunch</id><content type="html" xml:base="https://devzendo.github.io/site/relaunch/">&lt;p&gt;Just when you think you have all your infrastructure working smoothly,
and you’re ready to start actually producing working applications,
things change.&lt;/p&gt;

&lt;p&gt;I was storing all my code in Mercurial and Subversion repositories in 
Google Code Hosting, but in 2015, Google decided they didn’t want to do
that any more, so I had to find a new home for my code.&lt;/p&gt;

&lt;p&gt;Preferring Mercurial, and wanting some repositories to be private until
they’ve reached a suitable level of progress, I chose BitBucket. Of 
course, Git and GitHub are the hotness, so I also have some projects there.&lt;/p&gt;

&lt;p&gt;Moving all my component libraries also gave me the opportunity to give
them names that adhere to the Maven artifact naming convention.&lt;/p&gt;

&lt;p&gt;Just when I was starting to get back to normal, this site, which was
formerly managed by Drupal, got hacked, several times, despite me
trying to keep up with all the security releases. This became a total
drag, so I decided to nuke Drupal with prejudice and start again.&lt;/p&gt;

&lt;p&gt;Hence this new version of the site, which is statically built using
Jekyll and the Minimal Mistakes theme. Appropriate, since Drupal and
PHP are mistakes I have no intention of making again.&lt;/p&gt;

&lt;p&gt;On with the show….&lt;/p&gt;</content><author><name>Matt Gumbley</name></author><category term="update" /><summary type="html">In which we bid farewell to Drupal and Google Code.</summary></entry><entry><title type="html">Moving home</title><link href="https://devzendo.github.io/site/moving-home/" rel="alternate" type="text/html" title="Moving home" /><published>2015-03-30T00:00:00+00:00</published><updated>2015-03-30T00:00:00+00:00</updated><id>https://devzendo.github.io/site/moving-home</id><content type="html" xml:base="https://devzendo.github.io/site/moving-home/">&lt;p&gt;When I started this project as a proper ‘home’ for my open source
projects, I chose Google Code as the hosting service for source
repositories. I needed to host projects using Subversion and either Git
or Mercurial (it had to be something distributed); I chose Mercurial at
that time.&lt;/p&gt;

&lt;p&gt;I’ve tried Git and GitHub, but after having a catastrophic
loss of repository with a Git project, am a little wary of it. Most of
the projects here are now hosted as Mercurial projects at Bitbucket,
with some Git at Github.&lt;/p&gt;

&lt;p&gt;I don’t like Git, mostly due to its complexity. However it has become
the de facto standard, so I’ll have to get used to it. The rise of
worse is better, perhaps.&lt;/p&gt;</content><author><name>Matt Gumbley</name></author><category term="update" /><summary type="html">Thank you to Google Code.</summary></entry><entry><title type="html">The Quaqua Look and Feel library is available in the Central Maven Repository</title><link href="https://devzendo.github.io/development/quaqua-in-maven-repo/" rel="alternate" type="text/html" title="The Quaqua Look and Feel library is available in the Central Maven Repository" /><published>2013-09-28T00:00:00+00:00</published><updated>2013-09-28T00:00:00+00:00</updated><id>https://devzendo.github.io/development/quaqua-in-maven-repo</id><content type="html" xml:base="https://devzendo.github.io/development/quaqua-in-maven-repo/">&lt;p&gt;I’ve recently converted Werner Randelshofer’s Quaqua Mac OS X Look and
Feel library to a set of Maven artifacts, and deployed them to the
Central Maven Repository. &lt;a href=&quot;/dev/mavenised-quaqua/&quot;&gt;&lt;strong&gt;Find out more&lt;/strong&gt;&lt;/a&gt; 
about how to make use of them.&lt;/p&gt;</content><author><name>Matt Gumbley</name></author><category term="update" /><summary type="html">Make your Mac Java code lovely in a standard way.</summary></entry></feed>