<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>z80 &amp;mdash; Paolo Amoroso&#39;s Journal</title>
    <link>https://journal.paoloamoroso.com/tag:z80</link>
    <description>Tech projects, hobby programming, and geeky thoughts of Paolo Amoroso</description>
    <pubDate>Thu, 16 Apr 2026 14:26:25 +0000</pubDate>
    <image>
      <url>https://i.snap.as/68i8povn.jpg</url>
      <title>z80 &amp;mdash; Paolo Amoroso&#39;s Journal</title>
      <link>https://journal.paoloamoroso.com/tag:z80</link>
    </image>
    <item>
      <title>Testing HEX file upload to the Z80-MBC2</title>
      <link>https://journal.paoloamoroso.com/testing-hex-file-upload-to-the-z80-mbc2?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[One of the Z80-MBC2 boot menu options, iLoad, allows uploading an executable program in Intel HEX format. This is cool because it enables running code on the bare metal with no operating system, such as a resident monitor or software that directly accesses the hardware.&#xA;&#xA;To test iLoad I uploaded and run a demo to the Z80-MBC2, a Z80 Assembly program that prints a message to the console and blinks the board&#39;s User LED. &#xA;&#xA;The source file, Blink demo Z80-MBC2.asm, is included in the sources  of the Z80-MBC2 firmware in directory src. I assembled the program with the zasm Z80 assembler and converted it to HEX format with the bin2hex tool that comes with the z80pack Z80 emulator.&#xA;&#xA;The screenshot shows the steps for uploading the demo to the Z80-MBC2 and running it. It&#39;s a Minicom session under Crostini Linux on my Chromebox.&#xA;&#xA;Uploading a program in Intel HEX format to the Z80-MBC2.&#xA;&#xA;First off, I brought up the Z80-MBC2 boot menu. After selecting the iLoad option, the Z80-MBC2 waited for the file transfer to start.&#xA;&#xA;Next, in Minicom I executed the Paste file command (activated by the Ctrl+A Y keystroke), which reads an ASCII file and sends its contents as if it were typed in, and selected the program file blink.hex. A few seconds later the message Z80-MBC2 User led blink demo running... appeared on the console and the board&#39;s User led started blinking.&#xA;&#xA;I completed the process successfully only after tweaking the transmission parameters.&#xA;&#xA;The Z80-MBC2 developer notes the board&#39;s serial port can&#39;t handle high-speed data transfers, and advises to set a 50-90 ms newline transmission delay in the settings of the terminal emulator used for the transfer.&#xA;&#xA;In Minicon I set the delay with the Newline Tx delay (Ctrl+A T D) option. But with my setup iLoad transfers abort even with delays up to 150 ms, causing the Z80-MBC2 to display a checksum error and halt.&#xA;&#xA;To overcome the issue I set a character transmission delay of at least 5 ms with the Character Tx delay option (Ctrl+a T F).&#xA;&#xA;#z80mbc2 #z80 #sbc&#xA;&#xA;a href=&#34;https://remark.as/p/journal.paoloamoroso.com/testing-hex-file-upload-to-the-z80-mbc2&#34;Discuss.../a&#xD;&#xA;Email | Reply @amoroso@oldbytes.space&#xD;&#xA;&#xD;&#xA;!--emailsub--]]&gt;</description>
      <content:encoded><![CDATA[<p>One of the <a href="https://journal.paoloamoroso.com/tag:Z80MBC2">Z80-MBC2</a> boot menu options, iLoad, allows uploading an executable program in Intel HEX format. This is cool because it enables running code on the bare metal with no operating system, such as a resident monitor or software that directly accesses the hardware.</p>

<p>To test iLoad I uploaded and run a demo to the Z80-MBC2, a Z80 Assembly program that prints a message to the console and blinks the board&#39;s User LED.</p>

<p>The source file, <code>Blink demo Z80-MBC2.asm</code>, is included in the <a href="https://cdn.hackaday.io/files/1599736844284832/SD-S220718-R240620-v1.zip">sources  of the Z80-MBC2 firmware</a> in directory <code>src</code>. I assembled the program with the <a href="https://k1.spdns.de/Develop/Projects/zasm/Distributions">zasm</a> Z80 assembler and converted it to HEX format with the <code>bin2hex</code> tool that comes with the <a href="https://www.autometer.de/unix4fun/z80pack">z80pack</a> Z80 emulator.</p>

<p>The screenshot shows the steps for uploading the demo to the Z80-MBC2 and running it. It&#39;s a Minicom session under Crostini Linux on my Chromebox.</p>

<p><a href="https://i.snap.as/L5rpiwIO.png"><img src="https://i.snap.as/L5rpiwIO.png" alt="Uploading a program in Intel HEX format to the Z80-MBC2."/></a></p>

<p>First off, I brought up the Z80-MBC2 boot menu. After selecting the iLoad option, the Z80-MBC2 waited for the file transfer to start.</p>

<p>Next, in Minicom I executed the <code>Paste file</code> command (activated by the <code>Ctrl+A Y</code> keystroke), which reads an ASCII file and sends its contents as if it were typed in, and selected the program file <code>blink.hex</code>. A few seconds later the message <code>Z80-MBC2 User led blink demo running...</code> appeared on the console and the board&#39;s User led started blinking.</p>

<p>I completed the process successfully only after tweaking the transmission parameters.</p>

<p>The Z80-MBC2 developer <a href="https://hackaday.io/project/159973-z80-mbc2-a-4-ics-homebrew-z80-computer/details">notes</a> the board&#39;s serial port can&#39;t handle high-speed data transfers, and advises to set a 50-90 ms newline transmission delay in the settings of the terminal emulator used for the transfer.</p>

<p>In Minicon I set the delay with the <code>Newline Tx delay</code> (<code>Ctrl+A T D</code>) option. But with my setup iLoad transfers abort even with delays up to 150 ms, causing the Z80-MBC2 to display a checksum error and halt.</p>

<p>To overcome the issue I set a character transmission delay of at least 5 ms with the <code>Character Tx delay</code> option (<code>Ctrl+a T F</code>).</p>

<p><a href="https://journal.paoloamoroso.com/tag:z80mbc2" class="hashtag"><span>#</span><span class="p-category">z80mbc2</span></a> <a href="https://journal.paoloamoroso.com/tag:z80" class="hashtag"><span>#</span><span class="p-category">z80</span></a> <a href="https://journal.paoloamoroso.com/tag:sbc" class="hashtag"><span>#</span><span class="p-category">sbc</span></a></p>

<p><a href="https://remark.as/p/journal.paoloamoroso.com/testing-hex-file-upload-to-the-z80-mbc2">Discuss...</a>
<a href="mailto:info@paoloamoroso.com?subject=Reply%20to%20Paolo%20Amoroso%27s%20Journal">Email</a> | Reply <a href="/@/amoroso@oldbytes.space" class="u-url mention">@<span>amoroso@oldbytes.space</span></a></p>


]]></content:encoded>
      <guid>https://journal.paoloamoroso.com/testing-hex-file-upload-to-the-z80-mbc2</guid>
      <pubDate>Thu, 01 Sep 2022 13:16:29 +0000</pubDate>
    </item>
    <item>
      <title>Brushing up 8080 and Z80 Assembly</title>
      <link>https://journal.paoloamoroso.com/brushing-up-8080-and-z80-assembly?pk_campaign=rss-feed</link>
      <description>&lt;![CDATA[I&#39;m about to resume working on my Suite8080 project after putting it aside for a few months. And I bought a Z80 homebrew computer.&#xA;&#xA;To refresh my 8080 Assembly to work on the Suite8080 code, and my Z80 to play with the new computer, I&#39;m rereading the book Z-80 and 8080 Assembly Language Programming by Kathe Spracklen (Hayden Books, 1979).&#xA;&#xA;It&#39;s a short, clear resource that includes several worked out exercises. It presents and compares the code samples and concepts in both instruction sets. The book also covers how to implement basic data structures in Assembly, which makes it stand out.&#xA;&#xA;#Assembly #intel8080 #z80 #books&#xA;&#xA;a href=&#34;https://remark.as/p/journal.paoloamoroso.com/brushing-up-8080-and-z80-assembly&#34;Discuss.../a&#xD;&#xA;Email | Reply @amoroso@oldbytes.space&#xD;&#xA;&#xD;&#xA;!--emailsub--]]&gt;</description>
      <content:encoded><![CDATA[<p>I&#39;m about to resume working on my <a href="https://github.com/pamoroso/suite8080">Suite8080</a> project after <a href="https://journal.paoloamoroso.com/preparing-to-resume-work-on-suite8080">putting it aside</a> for a few months. And I bought a <a href="https://journal.paoloamoroso.com/i-bought-a-z80-mbc2-homebrew-computer">Z80 homebrew computer</a>.</p>

<p>To refresh my 8080 Assembly to work on the Suite8080 code, and my Z80 to play with the new computer, I&#39;m rereading the book <a href="https://archive.org/details/z808080assemblyl00kath">Z-80 and 8080 Assembly Language Programming</a> by Kathe Spracklen (Hayden Books, 1979).</p>

<p>It&#39;s a short, clear resource that includes several worked out exercises. It presents and compares the code samples and concepts in both instruction sets. The book also covers how to implement basic data structures in Assembly, which makes it stand out.</p>

<p><a href="https://journal.paoloamoroso.com/tag:Assembly" class="hashtag"><span>#</span><span class="p-category">Assembly</span></a> <a href="https://journal.paoloamoroso.com/tag:intel8080" class="hashtag"><span>#</span><span class="p-category">intel8080</span></a> <a href="https://journal.paoloamoroso.com/tag:z80" class="hashtag"><span>#</span><span class="p-category">z80</span></a> <a href="https://journal.paoloamoroso.com/tag:books" class="hashtag"><span>#</span><span class="p-category">books</span></a></p>

<p><a href="https://remark.as/p/journal.paoloamoroso.com/brushing-up-8080-and-z80-assembly">Discuss...</a>
<a href="mailto:info@paoloamoroso.com?subject=Reply%20to%20Paolo%20Amoroso%27s%20Journal">Email</a> | Reply <a href="/@/amoroso@oldbytes.space" class="u-url mention">@<span>amoroso@oldbytes.space</span></a></p>


]]></content:encoded>
      <guid>https://journal.paoloamoroso.com/brushing-up-8080-and-z80-assembly</guid>
      <pubDate>Sun, 12 Jun 2022 16:13:38 +0000</pubDate>
    </item>
  </channel>
</rss>