<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.2.0">Jekyll</generator><link href="https://eaw.app/feed.xml" rel="self" type="application/atom+xml" /><link href="https://eaw.app/" rel="alternate" type="text/html" /><updated>2026-05-14T22:01:23+01:00</updated><id>https://eaw.app/feed.xml</id><title type="html">engineers@work</title><subtitle>Open source retro computing projects: FPGA emulation of Sharp MZ series, Z80/6502 CPU replacements (picoZ80, pico6502), tranZPUter hardware upgrades, and vintage computer restoration by Philip Smart.</subtitle><author><name>Philip Smart</name><email>philip.smart@net2net.org</email></author><entry><title type="html">New designs…</title><link href="https://eaw.app/post%20formats/new-designs/" rel="alternate" type="text/html" title="New designs…" /><published>2020-04-28T00:00:00+01:00</published><updated>2020-03-24T22:43:02+00:00</updated><id>https://eaw.app/post%20formats/new-designs</id><content type="html" xml:base="https://eaw.app/post%20formats/new-designs/">&lt;p&gt;This month sees two new hardware boards and significant upgrades on the zOS/ZPUTA software.&lt;/p&gt;

&lt;h3 id=&quot;rom-filing-system&quot;&gt;Rom Filing System&lt;/h3&gt;
&lt;p&gt;The Rom Filing System has been upgraded with the release of v2.0 schematics and PCB’s. The new design resolves the shortcomings of v1.1 and incorporates a coded latch to guard against
writing to the control registers when not intended. It also include 2 additional (optional) Memory devices, a 512KB FlashRAM to expand the RFS storage and a 512KB Static RAM
to expand the memory for CP/M allowing for a greater number of SD drives and TPA size. Also included is a Software SPI and a Hardware SPI interface for driving an SD card. 
&lt;a href=&quot;/sharpmz-upgrades-rfs/#rfs-hardware&quot;&gt;v2.0 schematic &lt;/a&gt;, &lt;a href=&quot;/sharpmz-upgrades-rfs-gallery/&quot;&gt;v2.0 pcb&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;tranzputer-sw&quot;&gt;tranZPUter SW&lt;/h3&gt;
&lt;p&gt;After spending some time with the tranZPUter and noticing it’s design pitfalls (choosing an FPGA with insufficient GPIO pins) and the possibilities seen writing CP/M and the RFS updates,
I sat down and redesigned the tranZPUter hardware around the Z80 so that it can be overclocked and access upto 512KB of local static RAM. This allows for a full 64K-512K version of CP/M
and also the capability to run MZ-700/800 and MZ80B software.&lt;/p&gt;

&lt;p&gt;In order to progress the design more quickly I decided not to use an FPGA (primarily as I couldnt find a dev board with the required 60+ GPIO pins small enough for this project and I didnt
want to attempt to solder a BGA (Ball Grid Array) given how expensive the Altera Cyclone V/10 devices are in the needed specification. I settled on an interim solution, to use a dev
board by &lt;a href=&quot;http://www.pjrc.com&quot;&gt;PJRC.com&lt;/a&gt; called the Teensy 3.5. This is a Freescale K64F processor, 512K Flash RAM, 256K RAM operating at 120MHz but most importantly it had the required
number of GPIO pins which are 5V tolerant thus simplifying the hardware. 
&lt;a href=&quot;/sharpmz-upgrades-tranzputer-sw/#hardware&quot;&gt;schematic&lt;/a&gt; and &lt;a href=&quot;/sharpmz-upgrades-tranzputer-sw/#pcb&quot;&gt;PCB&lt;/a&gt; for the new design.&lt;/p&gt;

&lt;h3 id=&quot;zsoft&quot;&gt;zSoft&lt;/h3&gt;
&lt;p&gt;In order to support the Freescale K64F on the Teensy3.5 board in the tranZPUter SW, the ZPU and tranZPUter software repositories were merged into &lt;a href=&quot;/zsoft/&quot;&gt;zSoft&lt;/a&gt; and ported to the ARM
Cotex-M4 architecture. zOS and ZPUTA can now be built according to requirements for the ZPU or Cortex-M4 processors.&lt;/p&gt;

&lt;p&gt;In addition, new Applications were added to zOS/ZPUTA in the form of a visual editor and 2 versions of BASIC, &lt;a href=&quot;https://malcolmmclean.github.io/minibasic/web/MiniBasicHome.html&quot;&gt;Mini-Basic&lt;/a&gt;
written by Malcolm McLean and &lt;a href=&quot;(https://github.com/RodionGork/TinyBasic)&quot;&gt;Tiny Basic&lt;/a&gt; written by RodionGork and Miskatino.&lt;/p&gt;

&lt;p&gt;The original Mini-Basic was designed to run within Windows or Linux and take a file containing a BASIC program and run it. Within an embedded environment this is not so convenient as you
want to be able to enter lines or commands and get feedback immediately.  This is generally the case in an environment such as this where you are programming or controlling hardware under
development. Mini-Basic was thus enhanced to have a full screen editor and a command processor to make it into a &lt;a href=&quot;/apps/#mbasic&quot;&gt;fully interactive BASIC&lt;/a&gt;.&lt;/p&gt;</content><author><name>Philip Smart</name><email>philip.smart@net2net.org</email></author><category term="Post Formats" /><category term="Post Formats" /><category term="readability" /><category term="standard" /><summary type="html">This month sees two new hardware boards and significant upgrades on the zOS/ZPUTA software.</summary></entry><entry><title type="html">Projects advancing…</title><link href="https://eaw.app/post%20formats/advancing/" rel="alternate" type="text/html" title="Projects advancing…" /><published>2020-03-24T00:00:00+00:00</published><updated>2020-03-24T22:43:02+00:00</updated><id>https://eaw.app/post%20formats/advancing</id><content type="html" xml:base="https://eaw.app/post%20formats/advancing/">&lt;p&gt;Like most of Europe, many are forced to stay at home for the next few weeks, so rather than go mad, time to forward all the on-going projects.&lt;/p&gt;

&lt;h3 id=&quot;rom-filing-system&quot;&gt;Rom Filing System&lt;/h3&gt;
&lt;p&gt;I have made quite a headway on the Rom Filing System, adding an SD Card and CP/M v2.23, the Sharp MZ80A is now all the machine I wanted it to be 20+ years ago. Still more edges to
round on the design and software, but it is getting nearer to completion.&lt;/p&gt;

&lt;h3 id=&quot;tranzputer&quot;&gt;tranZPUter&lt;/h3&gt;
&lt;p&gt;Some strange behaviour during testing led me to fry U9 as I was probing the signals with my oscilloscope. The pins are so tiny and working after midnight is probably not a good idea,
so a tricky job replacing it. Also there were some hardware bugs in the addressing and latching of the 2 16bit latches CY74FCT16543T which needed board modifications. The schematics have
been updated with the changes.&lt;/p&gt;

&lt;p&gt;Now currently working on the Finite State Machines in VHDL to perform accurate Z80 Read/Write cycles in order that a soft-cpu or ZPU Evo can control the MZ80A Host hardware.&lt;/p&gt;

&lt;h3 id=&quot;zpu-evo&quot;&gt;ZPU Evo&lt;/h3&gt;
&lt;p&gt;After quite sometime perfecting the SDRAM, both vanilla and cached versions, and running numerous tests where the memory passed with flying colours at 100MHz, I decided to try it out
on the Trenz Electronic CYC1000 in the tranZPUter which went well until I ran a ZPUTA application! Some of the smaller apps ran fine but others just went haywire. After many hours
of debugging and pondering, I came to the logical conclusion, which I proved, that the L2 to L1 cache mechanism had a timing flaw when dealing with the SDRAM and it’s timing
uncertainty. When a ZPU Jump intruction was encountered which jumped out of scope of L2, the L1 and L2 caches were flushed and L2 began to fetch new data from SDRAM. The CPU was held
in a wait state and once data was in L2 it began to trickle into L1 and the CPU allowed to continue. Between the L2 filling and the L1 obtaining its first word from L2, a timing bug
occurs and L1 receives data from L2 which belonged to the pre-flushed cache set. If I slow the CPU down by adding wait states, it works fine but at full speed this bug just rears its
ugly head. After many a late night debugging and pondering, I decided to take a break and work on some of the other projects, coming back to this issue later with fresh eyes! To quote an
old saying, ‘So close, yet so far!!’&lt;/p&gt;</content><author><name>Philip Smart</name><email>philip.smart@net2net.org</email></author><category term="Post Formats" /><category term="Post Formats" /><category term="readability" /><category term="standard" /><summary type="html">Like most of Europe, many are forced to stay at home for the next few weeks, so rather than go mad, time to forward all the on-going projects.</summary></entry><entry><title type="html">Github.io website initial release</title><link href="https://eaw.app/post%20formats/initial/" rel="alternate" type="text/html" title="Github.io website initial release" /><published>2019-11-12T00:00:00+00:00</published><updated>2016-03-09T21:20:02+00:00</updated><id>https://eaw.app/post%20formats/initial</id><content type="html" xml:base="https://eaw.app/post%20formats/initial/">&lt;p&gt;Initial web site built for github pages using Michael Rose’s excellent Minimal Mistakes Jekyll theme.&lt;/p&gt;</content><author><name>Philip Smart</name><email>philip.smart@net2net.org</email></author><category term="Post Formats" /><category term="Post Formats" /><category term="readability" /><category term="standard" /><summary type="html">Initial web site built for github pages using Michael Rose’s excellent Minimal Mistakes Jekyll theme.</summary></entry></feed>