<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Delphi &#8211; EXPERTGIG</title>
	<atom:link href="https://expertgig.jp/tag/delphi/feed/" rel="self" type="application/rss+xml" />
	<link>https://expertgig.jp</link>
	<description>工場IoT に特化したシステム開発</description>
	<lastBuildDate>Mon, 06 Apr 2026 04:38:20 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>Raspi Zero 2W ベアメタル開発 02 (環境構築～Hello表示編)</title>
		<link>https://expertgig.jp/2025/06/07/raspi-zero-2w-%e3%83%99%e3%82%a2%e3%83%a1%e3%82%bf%e3%83%ab%e9%96%8b%e7%99%ba-02-%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%ef%bd%9ehello%e8%a1%a8%e7%a4%ba%e7%b7%a8/</link>
					<comments>https://expertgig.jp/2025/06/07/raspi-zero-2w-%e3%83%99%e3%82%a2%e3%83%a1%e3%82%bf%e3%83%ab%e9%96%8b%e7%99%ba-02-%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%ef%bd%9ehello%e8%a1%a8%e7%a4%ba%e7%b7%a8/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Fri, 06 Jun 2025 15:08:10 +0000</pubDate>
				<category><![CDATA[IoT関連]]></category>
		<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[Lazarus]]></category>
		<category><![CDATA[MZ-80]]></category>
		<category><![CDATA[Pascal]]></category>
		<category><![CDATA[Raspi Zero 2W]]></category>
		<category><![CDATA[Ultibo]]></category>
		<category><![CDATA[Z80]]></category>
		<category><![CDATA[エミュレータ]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6035</guid>

					<description><![CDATA[さて、意を決してから、右往左往して、ようやくHDMI 接続したモニタに文字を表示できましたので、そこまでの手順を手短に解説します。 Ultibo Core のダウンロード Lazarus IDE と統合された Ultib [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>さて、意を決してから、右往左往して、ようやくHDMI 接続したモニタに文字を表示できましたので、そこまでの手順を手短に解説します。</p>



<h2 class="wp-block-heading">Ultibo Core のダウンロード</h2>



<p>Lazarus IDE と統合された Ultibo は下記よりダウンロードします。</p>



<p>/<a href="https://ultibo.org/download/">https://ultibo.org/download/</a></p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="788" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-1024x788.png" alt="" class="wp-image-6036" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-1024x788.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-300x231.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-768x591.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-1536x1182.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image.png 2008w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>2025/6/6 時点では、Ultibo-Core-2.6.049-Beetroot.exe が最新ですので、これをダウンロード。<br><br>もしくは、GitHub からもダウンロードできます。必要に応じて古いバージョンのダウンロードもできます。<br></p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="787" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-1-1024x787.png" alt="" class="wp-image-6037" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-1-1024x787.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-1-300x231.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-1-768x590.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-1-1536x1181.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-1.png 2014w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>こちらだと、少しサイズの大きい Ultibo-Core-2.6.049-Beetroot-Main.exe というのもあります。</p>



<p>私は、何か不足してもいやなので、こちらからダウンロードしました。</p>



<h2 class="wp-block-heading">インストール</h2>



<p>ダウンロードしたファイルを実行するとインストールが始まります。インストールディレクトリの指定などもできますが、とりあえずデフォルトのまま次へ次へと進みインストール。数分でインストールが完了します。</p>



<p>インストールが完了すると、C:\Ultibo\Core というフォルダができています。</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="1024" height="842" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-2-1024x842.png" alt="" class="wp-image-6038" style="width:455px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-2-1024x842.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-2-300x247.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-2-768x632.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-2.png 1075w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>C:\Ultibo\Core の下にこんなフォルダとファイルができていればとりあえずインストール成功かと思います。</p>



<h2 class="wp-block-heading">Lazarus (Ultibo Edition) を起動</h2>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="339" height="353" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-3.png" alt="" class="wp-image-6039" style="width:204px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-3.png 339w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-3-288x300.png 288w" sizes="(max-width: 339px) 100vw, 339px" /></figure>



<p>Lazarus IDE (Ultibo Edition) を起動します。</p>



<p>初回の起動はFPC (free pascal ) のパスなどを設定する画面が表示されますが、デフォルトで設定されているので、開発環境のWindow のモードを選択するだけで良いでしょう。Windowモードは、Classic だと 昔風にそれぞれのウィンドが独立している形になっていて、今風だと、最近のDelphi風に1つのWindowにメニュー、プロジェクトインスペクタ、ソースエディタ、コードエクスプローラなどがドッキングされた感じになります。特に深い思い入れがなければ、今風のほうが良いでしょう。</p>



<p></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="690" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-4-1024x690.png" alt="" class="wp-image-6040" style="width:567px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-4-1024x690.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-4-300x202.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-4-768x518.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-4-1536x1035.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-4-2048x1380.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>これは今風の場合。</p>



<h2 class="wp-block-heading">プロジェクトの作成</h2>



<p>メニューの[ファイル]→[新規] で下の画面が開きます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="605" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-5-1024x605.png" alt="" class="wp-image-6041" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-5-1024x605.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-5-300x177.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-5-768x453.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-5.png 1128w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>今回は、Raspi Zero 2W をターゲットにしますので、これを選んで[OK] ボタンでプロジェクトが作成されます。</p>



<h2 class="wp-block-heading">プロジェクトオプションの設定</h2>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="524" height="634" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-6.png" alt="" class="wp-image-6042" style="width:237px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-6.png 524w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-6-248x300.png 248w" sizes="(max-width: 524px) 100vw, 524px" /></figure>



<p>[プロジェクト] → [プロジェクトオプション] で下の画面が開きます。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="679" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-7-1024x679.png" alt="" class="wp-image-6043" style="width:683px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-7-1024x679.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-7-300x199.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-7-768x509.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-7.png 1208w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>[コンパイラオプション] → [設定と対象] で、対称プラットフォームは、上記画面のように設定してください。</p>



<p>ARMV7A 、RPIZERO2W がポイントです。設定したら[OK]ボタンで画面を閉じます。</p>



<h2 class="wp-block-heading">Hello world サンプルプログラムの作成</h2>



<pre class="wp-block-code"><code class="">program HelloPi;<br><br>uses<br>  RaspberryPi3, // ← ここが機種名<br>  GlobalConst, GlobalTypes,<br>  Platform, Console, SysUtils;<br><br>var<br>  Console1: TWindowHandle;<br><br>begin<br>  Console1 := ConsoleWindowCreate(ConsoleDeviceGetDefault, 0, True);<br><br>  if Console1 &lt;&gt; -1 then<br>  begin<br>    ConsoleWindowWriteLn(Console1, 'Hello from Ultibo on Pi Zero 2 W!');<br>  end;<br><br>  while True do Sleep(1000);<br>end.<br></code></pre>



<p>最初は何も考えずに、初期表示されているソースを消して、上記コードをペタッと貼り付けましょう!</p>



<h2 class="wp-block-heading">プロジェクトの保存</h2>



<p>まず最初にソースを保存してみましょうか。</p>



<p>Pascal は、ソースの先頭に書いた名前とファイル名が一致しないといけないので、 program hellopi; としたので、ファイルに名前を付けて保存で、 hellopi.lpr として保存してください。</p>



<p>とりあえず今は、このファイルしかないので、メニューの [プロジェクト] → [名前を付けてプロジェクト保存] で保存しても同じ結果かなと思います。 </p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="513" height="624" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-8.png" alt="" class="wp-image-6044" style="width:216px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-8.png 513w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-8-247x300.png 247w" sizes="(max-width: 513px) 100vw, 513px" /></figure>



<p>Pascal はこの他 unit というファイルもありまして、この後開発していく中で unit に分けて、uses で宣言して使うことになると思います。</p>



<h2 class="wp-block-heading">構築 (コンパイル + img出力)</h2>



<p>さていよいよ、コンパイルです。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="387" height="229" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-10.png" alt="" class="wp-image-6046" style="width:194px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-10.png 387w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-10-300x178.png 300w" sizes="(max-width: 387px) 100vw, 387px" /></figure>



<p>[構築] でコンパイルと Raspi 用の img ファイルができあがります。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="104" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-11-1024x104.png" alt="" class="wp-image-6047" style="width:601px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-11-1024x104.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-11-300x31.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-11-768x78.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-11.png 1061w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>こんな風に表示されたら、コンパイルは成功です。</p>



<p>出力先のフォルダ内をみてみましょう。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="164" height="254" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-12.png" alt="" class="wp-image-6048" style="width:112px;height:auto"/></figure>



<p>このように出力されていれば成功かと思います。</p>



<h2 class="wp-block-heading">SDカードに書き込む</h2>



<p>先ほど生成された kernel7.img がこのプログラムの本体です。まずはこれをSDカードにコピーしましょう。</p>



<p>次に、 C:\Ultibo\Core\firmware\RPi3 のフォルダにある下の3つのファイルをSDカードにコピーします。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="389" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-13-1024x389.png" alt="" class="wp-image-6049" style="width:474px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-13-1024x389.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-13-300x114.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-13-768x291.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-13.png 1041w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>結果、SDカードの中身は、下のようになります。</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="200" height="191" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-14.png" alt="" class="wp-image-6050"/></figure>



<h2 class="wp-block-heading">Raspi Zero に差して実行!</h2>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="576" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235558-1024x576.jpg" alt="" class="wp-image-6051" style="width:355px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235558-1024x576.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235558-300x169.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235558-768x432.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235558-1536x864.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235558-2048x1153.jpg 2048w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235558-800x450.jpg 800w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>micro SD-CARD を Raspi に差して、HDMIケーブルとモニタを繋いで、電源コードを差し込めば、すぐに起動します。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235603-1024x576.jpg" alt="" class="wp-image-6052" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235603-1024x576.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235603-300x169.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235603-768x432.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235603-1536x864.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235603-2048x1152.jpg 2048w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235603-800x450.jpg 800w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="576" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235607-1024x576.jpg" alt="" class="wp-image-6053" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235607-1024x576.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235607-300x169.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235607-768x432.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235607-1536x864.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235607-2048x1153.jpg 2048w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250606_235607-800x450.jpg 800w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>さすがに、OS無しは起動が速い!</p>



<p>とりあえず、起動までできたので、次からはさっそくDelphi で書いた MZ-80K2 のエミュを移植したいと思います。</p>



<p>うん? まてよ。まだUSBキーボードのテストをしていなかった。こちらが先かな。</p>



<p>ということで、今回はここまで。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2025/06/07/raspi-zero-2w-%e3%83%99%e3%82%a2%e3%83%a1%e3%82%bf%e3%83%ab%e9%96%8b%e7%99%ba-02-%e7%92%b0%e5%a2%83%e6%a7%8b%e7%af%89%ef%bd%9ehello%e8%a1%a8%e7%a4%ba%e7%b7%a8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Delphi で MZ-80K エミュ開発 を再開 (数年ぶり)</title>
		<link>https://expertgig.jp/2025/05/31/delphi-%e3%81%a7-mz-80k-%e3%82%a8%e3%83%9f%e3%83%a5%e9%96%8b%e7%99%ba-%e3%82%92%e5%86%8d%e9%96%8b-%e6%95%b0%e5%b9%b4%e3%81%b6%e3%82%8a/</link>
					<comments>https://expertgig.jp/2025/05/31/delphi-%e3%81%a7-mz-80k-%e3%82%a8%e3%83%9f%e3%83%a5%e9%96%8b%e7%99%ba-%e3%82%92%e5%86%8d%e9%96%8b-%e6%95%b0%e5%b9%b4%e3%81%b6%e3%82%8a/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Sat, 31 May 2025 09:46:37 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[MZ-80]]></category>
		<category><![CDATA[Z80]]></category>
		<category><![CDATA[エミュレータ]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6010</guid>

					<description><![CDATA[以前、2021年頃に Delphi で MZ-80K のエミュを開発してみましたが、少し中途半端なところがあったので、数年ぶりにプロジェクトファイルを開いて、ソースを久しぶりに眺めてみました。 当時は、Delphi 10 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>以前、2021年頃に Delphi で MZ-80K のエミュを開発してみましたが、少し中途半端なところがあったので、数年ぶりにプロジェクトファイルを開いて、ソースを久しぶりに眺めてみました。</p>



<p>当時は、Delphi 10.4.1 で開発したのですが、今は Delphi 12.3 ( 2025/5/31現在 ) になっているので、少し手直し。</p>



<p>そういえば Delphi 12.3 は Skia4Delphi が標準で組み込まれたという話だったねということで、少し調べて画面描画部分を全体的に Skia に対応させて、描画速度の向上を図りました。</p>



<p>少し躓いたのは、少し前のバージョンでは Skia4Delphi のプラグインをインストールしたのですが、Delphi 12.3 では標準で組み込まれているというところ。uses に追加するライブラリ名が違うので、ややこしい。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="60" src="https://expertgig.jp/wp/wp-content/uploads/2025/05/image-21-1024x60.png" alt="" class="wp-image-6011" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/05/image-21-1024x60.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/05/image-21-300x18.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/05/image-21-768x45.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/05/image-21-1200x72.png 1200w, https://expertgig.jp/wp/wp-content/uploads/2025/05/image-21.png 1223w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p> 上記が正しい宣言ですが、前のバージョンでは、 SKia.FMX だったりしますし、ライブラリの構成も結構違うということで、少し迷子になりつつ、なんとか Skia 対応しました。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="517" src="https://expertgig.jp/wp/wp-content/uploads/2025/05/image-22-1024x517.png" alt="" class="wp-image-6012" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/05/image-22-1024x517.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/05/image-22-300x151.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/05/image-22-768x388.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/05/image-22-1536x775.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2025/05/image-22-2048x1034.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>画面右の レジスタ内容の LED表示も Skia で高速描画する方法にしました。以前は大量に TImage を配置して visible を true / false して切り替えていました。visible の切り替えで簡単だろうと安易に考えていたのですが、内部的には画面の重ね合わせ処理などの書き換えが大量に発生していたんですね。メモリの処理もお任せで大丈夫だろうと思っていたのですが、何時間も放っておくとメモリリークが大量に発生した結果エラーになるという感じでした。昔のマイコンが熱暴走しているみたいでリアルだねとか、呑気に考えていたのですが、それじゃダメだねと思い直して、Skia で直接描画に切り替えた次第です。</p>



<p> ついでに、VRAM のメモリに変化があった部分だけ描画を書き換えるというプログラムに書き直しまして、少し高速化を図りました。実際どのくらい高速化したかは不明ですが、性能が悪いPCでテストすればかなり違うでしょう。</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<p class="responsive-video-wrap clr"><iframe title="Delphi で MZ-80K エミュ を久しぶり更新。( Skia 対応 )" width="1200" height="675" src="https://www.youtube.com/embed/XJc5x7VfWWY?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
</div></figure>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2025/05/31/delphi-%e3%81%a7-mz-80k-%e3%82%a8%e3%83%9f%e3%83%a5%e9%96%8b%e7%99%ba-%e3%82%92%e5%86%8d%e9%96%8b-%e6%95%b0%e5%b9%b4%e3%81%b6%e3%82%8a/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Delphi 10.4.2 で MZ-80K2 エミュレータ作成 その後</title>
		<link>https://expertgig.jp/2021/07/01/delphi-10-4-2-%e3%81%a7-mz-80k2-%e3%82%a8%e3%83%9f%e3%83%a5%e3%83%ac%e3%83%bc%e3%82%bf%e4%bd%9c%e6%88%90-%e3%81%9d%e3%81%ae%e5%be%8c/</link>
					<comments>https://expertgig.jp/2021/07/01/delphi-10-4-2-%e3%81%a7-mz-80k2-%e3%82%a8%e3%83%9f%e3%83%a5%e3%83%ac%e3%83%bc%e3%82%bf%e4%bd%9c%e6%88%90-%e3%81%9d%e3%81%ae%e5%be%8c/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Thu, 01 Jul 2021 02:47:03 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[MZ-80]]></category>
		<category><![CDATA[SP-5030]]></category>
		<category><![CDATA[Zeplis]]></category>
		<category><![CDATA[エミュレータ]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=5313</guid>

					<description><![CDATA[MZ-80K2 エミュレータ作成の続きです。ちょっと色々と忙しいので、作業は 2021.3.27 の時点で止まっていますが、自宅でぼちぼち継続していこうと思います。 見た目もリアルにして、画面上のキーボードも操作できるよ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>MZ-80K2 エミュレータ作成の続きです。ちょっと色々と忙しいので、作業は 2021.3.27 の時点で止まっていますが、自宅でぼちぼち継続していこうと思います。</p>



<p>見た目もリアルにして、画面上のキーボードも操作できるようにしました。またカセットデータレコーダーも蓋の開閉、再生ボタンでテープが回転するところも作成しました。</p>



<p>エミュレーターでは、まだカセットテープからの読み込み機能を実装していないので、ボタンでプログラムをメモリにダイレクトにコピーして、SP-1002モニターから、「GOTO$9E00」 でZuplis を直接起動しています。ちなみに BASIC SP-5030 の場合は 「GOTO$1200」です。</p>



<p>それでは、動画をどうぞご確認ください。</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<p class="responsive-video-wrap clr"><iframe title="Delphi で MZ-80K2 のエミュレータを作成してみた。" width="1200" height="675" src="https://www.youtube.com/embed/fIMdyxY31_o?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></p>
</div></figure>



<p>Delphi でもここまで出来ます。 Delphi で何か開発の依頼や、何かこんなものをつくりたいんだけどDelphiで実現できるかな? といったことがございましたら、気軽にお問い合わせください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2021/07/01/delphi-10-4-2-%e3%81%a7-mz-80k2-%e3%82%a8%e3%83%9f%e3%83%a5%e3%83%ac%e3%83%bc%e3%82%bf%e4%bd%9c%e6%88%90-%e3%81%9d%e3%81%ae%e5%be%8c/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MZ-80K2のエミュレーター作りを再開 (Delphi 10.4.2)</title>
		<link>https://expertgig.jp/2021/02/28/mz-80k2%e3%81%ae%e3%82%a8%e3%83%9f%e3%83%a5%e3%83%ac%e3%83%bc%e3%82%bf%e3%83%bc%e4%bd%9c%e3%82%8a%e3%82%92%e5%86%8d%e9%96%8b-delphi-10-4-2/</link>
					<comments>https://expertgig.jp/2021/02/28/mz-80k2%e3%81%ae%e3%82%a8%e3%83%9f%e3%83%a5%e3%83%ac%e3%83%bc%e3%82%bf%e3%83%bc%e4%bd%9c%e3%82%8a%e3%82%92%e5%86%8d%e9%96%8b-delphi-10-4-2/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Sun, 28 Feb 2021 00:38:20 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[Delphi]]></category>
		<category><![CDATA[MZ-80]]></category>
		<category><![CDATA[Z-80]]></category>
		<category><![CDATA[エミュレータ]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=5016</guid>

					<description><![CDATA[最近、週末に PC-8001 でプログラムしていて、一部マシン語にしようとZ80を触っていたら、Z80沼にはまってしまい、興味の対象が MZ-80K2のエミュレーションに移ってしまいました (笑) 。 興味が移ってしまっ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>最近、週末に PC-8001 でプログラムしていて、一部マシン語にしようとZ80を触っていたら、Z80沼にはまってしまい、興味の対象が MZ-80K2のエミュレーションに移ってしまいました (笑) 。</p>



<p>興味が移ってしまったものは仕方ないということで、約1年ぶりに プロジェクトを開いて、自分で書いたコードのおさらい。(ほぼ記憶喪失なので) </p>



<p>実行させながら、挙動を確認。ようやく全貌を思い出しました。</p>



<h2 class="wp-block-heading">前回までのおさらい</h2>



<p>・Z80のすべての機能を実装 、未定義命令も含めて実装したつもり。。</p>



<p>・MZ-80のVRAM領域をできるだけ高速に描画できるように試行錯誤、満足まではいかないがとりあえず使えそうなレベルにしあげて、とはいえリフレッシュレート 60Hz は結構きつい。</p>



<p>・CGROMの読み込み</p>



<p>・モニタROM を 00000H～00FFFH にロード</p>



<p>・とりあえず、タイマーで 1ms間隔 で Z80 の命令を実行</p>



<p>・モニタROM を実行して、タイトル表示、入力待ちになるまでを確認。</p>



<h2 class="wp-block-heading">今回やったこと</h2>



<p> ・z80の実行を別スレッド化して、Z80のマシンサイクルも考慮して実行できるようにした</p>



<p>・レジスタの内容をビジュアルに表示できるようにした。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="607" src="https://expertgig.jp/wp/wp-content/uploads/2021/02/image-6-1024x607.png" alt="" class="wp-image-5017" srcset="https://expertgig.jp/wp/wp-content/uploads/2021/02/image-6-1024x607.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2021/02/image-6-300x178.png 300w, https://expertgig.jp/wp/wp-content/uploads/2021/02/image-6-768x455.png 768w, https://expertgig.jp/wp/wp-content/uploads/2021/02/image-6-1536x910.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2021/02/image-6.png 1930w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">問題発生</h2>



<p>2MHz までスピードがあげられない!! という大きな問題に直面中。</p>



<p>Z-80 だけ実行 &#8212;&gt; 1.2MHz </p>



<p>Z-80 + VRAM描画 &#8212;&gt; 0.8MHz</p>



<p>Z-80 + VRAM描画 + レジスタな内容表示 &#8212;&gt; 0.6MHz</p>



<p>Corei7のマシンで、2MHzのマシンエミュレーションができないのは問題ですね。</p>



<p>まずは何としても Z-80実行で 4MHz程度、VRAM描画して 3MHz 程度は出せるようにしたいですね。。そうしないとエミュレーションスピードの選択メニューに 1.5倍、2倍、Full とか表示できないよ～。</p>



<p>Delphi で開発しているので、描画部分はちょっと高速化が難しいところありますが、Z80の実行は余裕で 10MHz くらい出したい!  </p>



<p>Delphi は一部アセンブラで記述もできるけど、そうすると Android で動かないプログラムになっちゃうんだよね。しかもDelphi のコンパイラが吐き出すマシン語に勝てる気がしない (笑)。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1000" height="750" src="https://expertgig.jp/wp/wp-content/uploads/2021/02/IMG20210228091442.jpg" alt="" class="wp-image-5019" srcset="https://expertgig.jp/wp/wp-content/uploads/2021/02/IMG20210228091442.jpg 1000w, https://expertgig.jp/wp/wp-content/uploads/2021/02/IMG20210228091442-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2021/02/IMG20210228091442-768x576.jpg 768w" sizes="(max-width: 1000px) 100vw, 1000px" /></figure>



<p>1980年に購入した、40年来の愛機 MZ-80K2。。カセットデッキのプーリーのゴムを交換したりヘッドを綺麗にして使えるようになっていますが、ちょっとキー入力に難ありなので、接点復活剤でもためそうかな。。</p>



<p>目標は、MZ-80至上最高のゲームプログラムを作成すること。</p>



<p>メモリ48KB、CPU Z80 2MHz 、キャラグラのみという厳しい制約の中でどこまでできるのか。</p>



<p>なぜ MZ-80K2 のエミュレーターを作成しているのかという、純粋にエミュレーターを作りたいというのもありますが、MZ-80K2 実機でコーディングするのはさすがに骨が折れるので、現代的に上下スクロールできるエディタを使ってコーディングしてZ80アセンブラでコンパイルして実機で読み込むということがしたいだけです。</p>



<p>しかし、MZ-80の場合は、カセットデッキ内蔵なので、読み込みに問題があるのですが、 MZ-700も所有していので、MZ-700のRS232C通信でマシン語を書き込んで、いったんMZ-700でカセットにSAVE してから、MZ-80でLOADかなと思っています。</p>



<p>もしくはエミュレータで動作確認した、16進数のダンプリストを印刷して、マシン語の打ち込みかな? </p>



<p>打ち込みはもちろん RaspberryPi を使って、OCRして、ロボットハンドをコントロールして打ち込みかな。 (ローテクとハイテクの融合)　24時間ダンプリスト打ち込みロボ!!</p>



<p>当然ロボットハンドは、Solidworks で設計して、3Dプリントして、小型のサーボ組み込んで。。。</p>



<p>夢はふくらむ。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2021/02/28/mz-80k2%e3%81%ae%e3%82%a8%e3%83%9f%e3%83%a5%e3%83%ac%e3%83%bc%e3%82%bf%e3%83%bc%e4%bd%9c%e3%82%8a%e3%82%92%e5%86%8d%e9%96%8b-delphi-10-4-2/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
