<?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>EXPERTGIG</title>
	<atom:link href="https://expertgig.jp/feed/" rel="self" type="application/rss+xml" />
	<link>https://expertgig.jp</link>
	<description>工場IoT に特化したシステム開発</description>
	<lastBuildDate>Mon, 30 Mar 2026 08:43:52 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	
	<item>
		<title>PC-8001 の BASIC ROMをVer1.0 → Ver1.1にする</title>
		<link>https://expertgig.jp/2026/03/29/pc-8001-%e3%81%ae-basic-rom%e3%82%92ver1-0-%e2%86%92-ver1-1%e3%81%ab%e3%81%99%e3%82%8b/</link>
					<comments>https://expertgig.jp/2026/03/29/pc-8001-%e3%81%ae-basic-rom%e3%82%92ver1-0-%e2%86%92-ver1-1%e3%81%ab%e3%81%99%e3%82%8b/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Sun, 29 Mar 2026 10:25:32 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6160</guid>

					<description><![CDATA[PC-8001の BASIC ROM Ver 1.0 は、いくつかのバグを抱えています。有名なのはBASICのプログラムを入力する際に、行末の1文字が保存されないとという問題です。これは入力時に スペースでも1文字入れれ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>PC-8001の BASIC ROM Ver 1.0 は、いくつかのバグを抱えています。有名なのはBASICのプログラムを入力する際に、行末の1文字が保存されないとという問題です。これは入力時に スペースでも1文字入れれば回避できるので、かわいいバグなのですが、今回一つ問題な箇所にぶつかりました。それは拡張ROM関連の問題です。<br><br>まずその前に、PC-8001 を含む レトロPCで、問題の1つ「カセットテープによるプログラムの保存」です。ターゲットマシンのレトロPCのプログラムを開発する際に、さすがに実機で行うのは気力・体力が持たないので、Windows のテキストエディタと Z80 のアセンブラという快適な開発環境 ( こちらは、また別の機会に紹介します。) で行っているわけですが、エミュレータで実行する分にはいいですが、実機で検証しようとすると、CMT( カセットデータ) 形式で保存したバイナリデータを wavデータにして、カセットに適切な音量で録音。そして当時のデータレコーダで実機に LOAD (PC-8001 は CLOAD) して実行という手間がかかってしまいます。</p>



<p>これを解決する手段として、SD-CARDに保存したCMT形式のファイルを実機で短時間でロードできる 基板を開発した猛者 ( マニアックな方) がいまして、それを利用させていただこうというのが今回のトライです。</p>



<p><a href="https://github.com/yanataka60/PC-8001_SD">GitHub &#8211; yanataka60/PC-8001_SD: PC-8001でSD-CARDからCMT形式ファイルのロード、セーブ機能を実現するものです。</a></p>



<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_082601-768x1024.jpg" alt="" class="wp-image-6162" style="aspect-ratio:0.7500127936134282;width:226px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_082601-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_082601-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_082601-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_082601-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_082601-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>さて、話を戻しますが、実はこの素晴らしいデバイスを利用するにあたって、BASIC ROM のバージョンが 1.0 だとバグにより、前述の拡張ROMが認識できないため初期化がされないという問題があるそうで ( 回避方法はありますが ひと手間必要) 、それならばと Ver1.1 にすることにしました。</p>



<h2 class="wp-block-heading">バイナリデータで違いを比較</h2>



<p>PC-8001のBASIC ROM は、下の写真のように 8KB ROM × 3 = 24KB で構成されています。</p>



<p>(その下の空いているソケットは拡張ROMを刺すところ 8KB)</p>



<figure class="wp-block-image size-large is-resized"><img decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_083815-768x1024.jpg" alt="" class="wp-image-6163" style="width:330px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_083815-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_083815-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_083815-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_083815-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_083815-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>このどの部分に差異があるか、吸い出した ROMデータからバイナリ・エディタで確認します。</p>



<p>ちなみに、それぞれの先頭アドレスは 8KBなので、 $0000, $2000, $4000 です。</p>



<h2 class="wp-block-heading">ROM0 ($0000-$1FFF)</h2>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="215" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-1024x215.png" alt="" class="wp-image-6164" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-1024x215.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-300x63.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-768x161.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-1536x322.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-2048x430.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="237" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-1-1024x237.png" alt="" class="wp-image-6165" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-1-1024x237.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-1-300x69.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-1-768x178.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-1-1536x356.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-1-2048x474.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="234" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-2-1024x234.png" alt="" class="wp-image-6166" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-2-1024x234.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-2-300x69.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-2-768x176.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-2-1536x352.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-2-2048x469.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>ROM0 の範囲では、 14バイト 違う箇所がありました。</p>



<h2 class="wp-block-heading">ROM1 ($2000-$3FFF)</h2>



<p>この範囲には、差異はありませんでした。</p>



<h2 class="wp-block-heading">ROM2($4000-$5FFF)</h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="236" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-3-1024x236.png" alt="" class="wp-image-6167" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-3-1024x236.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-3-300x69.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-3-768x177.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-3-1536x353.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-3-2048x471.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="233" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-4-1024x233.png" alt="" class="wp-image-6168" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-4-1024x233.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-4-300x68.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-4-768x175.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-4-1536x349.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-4-2048x466.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>28バイト違う箇所がありました。</p>



<p>ちなみに、末尾付近を逆コンパイルしたところ、</p>



<p><code>5FED: INC HL<br>5FEE: LD A,(HL)<br>5FEF: CP 42h            ; 'B'<br>5FF1: RET </code></p>



<p>となっていたので、拡張ROMの仕様として 電源投入時に先頭に $AB があったら拡張ROMのプログラムを実行するというような仕様があったとおもうので、その話の部分かなと勝手に想像。</p>



<p>$17A5で cp 41h した後に、$17A9 で call $5FED されていて、 次が Bなら特別処理という流れになっているので、おそらく間違いないでしょう。</p>



<h2 class="wp-block-heading">交換対象のROM</h2>



<p>ということで、交換対象の ROM は 0と2 の二つであることが判明。</p>



<h2 class="wp-block-heading">EPROMとEPROMライターを準備</h2>



<p>レトロな EPROM の読み書きができるものは、限られているので、Webで事前にリサーチ。</p>



<p>GQ-4&#215;4 というのがいいらしい。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_092125-1024x768.jpg" alt="" class="wp-image-6171" style="width:369px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_092125-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_092125-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_092125-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_092125-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/02/IMG_20260215_092125-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p><a href="https://www.amazon.co.jp/dp/B01212KD74?ref=ppx_yo2ov_dt_b_fed_asin_title">Amazon.co.jp: PRG-112 True USB GQ-4X V4 (GQ-4X4) Programmer + ADP-054 16 Bit EPROM 40/42 pin : パソコン・周辺機器</a></p>



<p>ちょいと高いけどね。 ちなみに BASIC ROM Ver1.1になっている PC-8001をヤフオクで落としたほうが安い (笑) </p>



<p>でも、それでは好奇心が満たされないので、ROMを焼くことにする!</p>



<p>因みに、サポートしているEPROMのリストは下記の通り。2732があるので大丈夫かな。</p>



<p><a href="https://www.mcumall.com/comersus/store/mcumall_TrueUSBWillemsupportICs.asp">https://www.mcumall.com/comersus/store/mcumall_TrueUSBWillemsupportICs.asp</a></p>



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



<p><a href="https://www.mcumall.com/comersus/store/mcumall_download.asp">MCUmall a online store for cost for value mcu EPROM EEPROM ATMEL PIC programmer</a></p>



<p><a href="https://www.mcumall.com/comersus/store/mcumall_download.asp">https://www.mcumall.com/comersus/store/mcumall_download.asp</a></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="862" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-5-1024x862.png" alt="" class="wp-image-6173" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-5-1024x862.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-5-300x253.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-5-768x647.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-5-1536x1294.png 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-5.png 1927w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>#2 の USBドライバをダウンロードして、</p>



<h2 class="wp-block-heading">USBドライバのインストール</h2>



<p>GQUSBdriver3.0Win10.64bit.EXEを右クリックして、管理者として実行します。</p>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="373" height="296" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-6.png" alt="" class="wp-image-6175" style="width:207px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-6.png 373w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-6-300x238.png 300w" sizes="(max-width: 373px) 100vw, 373px" /></figure>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="751" height="572" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-7.png" alt="" class="wp-image-6178" style="width:307px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-7.png 751w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-7-300x228.png 300w" sizes="(max-width: 751px) 100vw, 751px" /></figure>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="758" height="581" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-8.png" alt="" class="wp-image-6179" style="width:326px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-8.png 758w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-8-300x230.png 300w" sizes="(max-width: 758px) 100vw, 758px" /></figure>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="750" height="566" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-9.png" alt="" class="wp-image-6180" style="width:339px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-9.png 750w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-9-300x226.png 300w" sizes="(max-width: 750px) 100vw, 750px" /></figure>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="752" height="574" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-10.png" alt="" class="wp-image-6181" style="width:316px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-10.png 752w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-10-300x229.png 300w" sizes="(max-width: 752px) 100vw, 752px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="667" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-11-1024x667.png" alt="" class="wp-image-6182" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-11-1024x667.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-11-300x195.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-11-768x500.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-11.png 1389w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="671" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-12-1024x671.png" alt="" class="wp-image-6183" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-12-1024x671.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-12-300x196.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-12-768x503.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-12.png 1391w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="620" height="503" src="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-13.png" alt="" class="wp-image-6184" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/02/image-13.png 620w, https://expertgig.jp/wp/wp-content/uploads/2026/02/image-13-300x243.png 300w" sizes="(max-width: 620px) 100vw, 620px" /></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2026/03/29/pc-8001-%e3%81%ae-basic-rom%e3%82%92ver1-0-%e2%86%92-ver1-1%e3%81%ab%e3%81%99%e3%82%8b/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MZ-80K/C で micro SDから mzt を読み込む基板の改善</title>
		<link>https://expertgig.jp/2026/03/29/mz-80k-c-%e3%81%a7-micro-sd%e3%81%8b%e3%82%89-mzt-%e3%82%92%e8%aa%ad%e3%81%bf%e8%be%bc%e3%82%80%e5%9f%ba%e6%9d%bf%e3%81%ae%e6%94%b9%e5%96%84/</link>
					<comments>https://expertgig.jp/2026/03/29/mz-80k-c-%e3%81%a7-micro-sd%e3%81%8b%e3%82%89-mzt-%e3%82%92%e8%aa%ad%e3%81%bf%e8%be%bc%e3%82%80%e5%9f%ba%e6%9d%bf%e3%81%ae%e6%94%b9%e5%96%84/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Sun, 29 Mar 2026 08:02:20 +0000</pubDate>
				<category><![CDATA[Arduino]]></category>
		<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[arduino pro]]></category>
		<category><![CDATA[MZ-80]]></category>
		<category><![CDATA[SD-CARD]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6241</guid>

					<description><![CDATA[MZ-80K向けに開発したプログラムを実機で試すには、それなりに手間がかかります。そんな悩みを持つ同志の手によって、micro-SDからmztファイルの読み込みを可能にするという夢のような基板を Git にて公開されてい [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>MZ-80K向けに開発したプログラムを実機で試すには、それなりに手間がかかります。そんな悩みを持つ同志の手によって、micro-SDからmztファイルの読み込みを可能にするという夢のような基板を Git にて公開されている。</p>



<p><a href="https://github.com/yanataka60/MZ80K_SD">GitHub &#8211; yanataka60/MZ80K_SD: MZ-80KシリーズでSD-CARDからのアプリケーション起動、BASICなどのアプリケーションからSD-CARDへのロード、セーブを実現するものです · GitHub</a></p>



<p></p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="768" height="1024" data-id="6245" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-768x1024.jpg" alt="" class="wp-image-6245" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15026-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>
</figure>



<p>これに基づいて、製作された基板を手に入れて、MZ-80Kで試したのだが、FDLコマンドによる ファイルリストの表示が途中でとまってしまったり、FDでファイル名指定で読み込み開始までこぎつけても途中で通信エラーになってしまったりで、一度も成功しませんでした。</p>



<p>一方、同志によるMZ-700向けやPC-8001向けの基板はすんなり動いていますので、この基板固有の何か問題があるんだろうなと思って、Arduino pro や micro-SD ユニットなどを疑って、交換してみたものの、逆に症状が悪化したりしていました。</p>



<p>しまいには、Arduino pro の プログラムソースを書き換えて、通信速度を落としたりもしたのですが、ダメでした。</p>



<p>そこで、こうなったらできることはすべてやってみるかということで、ロジックIC  74LS30と 74LS04 について、調べたところ、74HCT シリーズのほうが出力波形が綺麗であるという情報があったので、74LS30, 74LS04 の代わりに 74HCT30, 74HCT04 を購入して、差し替えたら、なんと一発でエラー解消。</p>



<p>MZ-80K2、MZ-80C、MZ-80K2E を所有していまして、どれも同じ症状でしたらので、MZの個体の問題ではないと思いますので、MZ-80K/Cシリーズでは、ノイズの話や通信制御の能力という点で結構きわどいのか? その辺はよくわかりません。</p>



<p class="has-medium-font-size">もし同様の悩みを持っている、またはこれから基板作成に挑戦するという方はぜひ <mark style="background-color:rgba(0, 0, 0, 0)" class="has-inline-color has-vivid-cyan-blue-color"><strong>74HCT シリーズ</strong></mark>をご検討ください。</p>



<p>ちなみに、ノイズも疑って、ノイズ除去のデカップリング用途を狙って、いくつかコンデンサも同時に購入しましたが、今回は不要のようでした。</p>



<p></p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="6246" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-1024x768.jpg" alt="" class="wp-image-6246" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260329_154350-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="6242" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-1024x768.jpg" alt="" class="wp-image-6242" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15023-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="6243" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-1024x768.jpg" alt="" class="wp-image-6243" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15024-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" data-id="6244" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-1024x768.jpg" alt="" class="wp-image-6244" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/15025-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2026/03/29/mz-80k-c-%e3%81%a7-micro-sd%e3%81%8b%e3%82%89-mzt-%e3%82%92%e8%aa%ad%e3%81%bf%e8%be%bc%e3%82%80%e5%9f%ba%e6%9d%bf%e3%81%ae%e6%94%b9%e5%96%84/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>PC-8001 の BASIC ROMを Ver1.0 → 1.1 に (2364 → 2764 換装)</title>
		<link>https://expertgig.jp/2026/03/07/pc-8001-%e3%81%ae-basic-rom%e3%82%92-ver1-0-%e2%86%92-1-1-%e3%81%ab-2364-%e2%86%92-2764-%e6%8f%9b%e8%a3%85/</link>
					<comments>https://expertgig.jp/2026/03/07/pc-8001-%e3%81%ae-basic-rom%e3%82%92-ver1-0-%e2%86%92-1-1-%e3%81%ab-2364-%e2%86%92-2764-%e6%8f%9b%e8%a3%85/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Sat, 07 Mar 2026 01:18:02 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[2364]]></category>
		<category><![CDATA[2764]]></category>
		<category><![CDATA[BASIC ROM換装]]></category>
		<category><![CDATA[EPROM]]></category>
		<category><![CDATA[N-BASIC]]></category>
		<category><![CDATA[PC-8001]]></category>
		<category><![CDATA[Z-80]]></category>
		<category><![CDATA[マシン語]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6219</guid>

					<description><![CDATA[最近、PC-8001 で microSDカードから .CMT形式のファイルを読み込むボードを手に入れました。 詳しくは、下記サイトをご確認ください。 GitHub &#8211; yanataka60/PC-8001_S [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>最近、PC-8001 で microSDカードから .CMT形式のファイルを読み込むボードを手に入れました。</p>



<p>詳しくは、下記サイトをご確認ください。</p>



<p><a href="https://github.com/yanataka60/PC-8001_SD">GitHub &#8211; yanataka60/PC-8001_SD: PC-8001でSD-CARDからCMT形式ファイルのロード、セーブ機能を実現するものです。</a></p>



<p>さっそく手持ちの PC-8001 で実行しようと思ったら、N-BASIC の バージョンが 1.0  (初期の複数バグありバージョン) であったため、拡張ROM の検出ができないというPC-8001側の致命的なバグにより、そのまま実行できないことが判明。 (回避方法もありますが) </p>



<p>それじゃ、ROMのバージョンを 1.1 にということで、秋葉原のラジ館 Bit-INNに買いに行こう!<br>と思ったけど、それは45年以上前の話で、2026年現在では自分でなんとかするしかありません。</p>



<p>まずは、PC-8001の御開帳ということで、本体裏の 四つ角のネジを外してオープン。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063552-1-1024x768.jpg" alt="" class="wp-image-6223" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063552-1-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063552-1-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063552-1-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063552-1-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063552-1-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>  写真の基板の中央より左側に、縦に3つ PROM (2364)が並んでいますが、これが N-BASIC のROMです。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063543-1-768x1024.jpg" alt="" class="wp-image-6224" style="width:497px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063543-1-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063543-1-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063543-1-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063543-1-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063543-1-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>2364 は、その型番からわかるように、64KBit (8KB) のPROMで、3つで 24KB。その下の拡張ROMソケットに青いソケットに刺さった 2516がありますが、これは何でしょうね? と思って中身を軽く解析したら当時のドットインパクトプリンタのコントロール用の何かが書いてあるようでした。不要なので外しちゃいます。</p>



<h2 class="wp-block-heading">EPROM 2764 に換装する</h2>



<p>今回使う EPROM は、富士通の MBM2764-30 (30と25がありますがこれは、応答速度で 300msと 250ms) です。<br>ヤフオクでまとめて購入したので、消費しないとね。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14581-768x1024.jpg" alt="" class="wp-image-6225" style="width:381px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14581-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14581-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14581-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14581-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14581-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14579-768x1024.jpg" alt="" class="wp-image-6226" style="width:375px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14579-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14579-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14579-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14579-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14579-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>窓から見える細い配線がきれいですね。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063737-1024x768.jpg" alt="" class="wp-image-6227" style="width:409px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063737-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063737-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063737-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063737-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260214_063737-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>EPROMライター GQ-4&#215;4 でチェックしたらすべて何か書き込み済みだったので、紫外線で消去する ERASER で一気に消去。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14580-768x1024.jpg" alt="" class="wp-image-6228" style="aspect-ratio:0.7500061678138801;width:374px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14580-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14580-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14580-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14580-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14580-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>30年ぶりくらいの倉庫から探し出してきました。使えるかな?</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14586-768x1024.jpg" alt="" class="wp-image-6229" style="width:442px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14586-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14586-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14586-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14586-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14586-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>両サイドに EPROMを並べて差し込んで、蓋を閉めてスイッチオン!</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14587-768x1024.jpg" alt="" class="wp-image-6230" style="width:446px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14587-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14587-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14587-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14587-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14587-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>30分程度で、消去完了。</p>



<h2 class="wp-block-heading">変換基板をつくる</h2>



<p>2364 と 2764 はピン数が違いますが、アドレス バスとデータ バスの位置はほとんど一緒 (A12以外)なので、回路図はそんなに難しくありません。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="642" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-4-1024x642.png" alt="" class="wp-image-6231" style="aspect-ratio:1.5950518464617063;width:708px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-4-1024x642.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-4-300x188.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-4-768x481.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-4.png 1284w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p> </p>



<p>上記の図では、ジャンパ線だけ書いてあります。その他は同じ位置でブリッジ ハンダです。</p>



<p>とりあえず、1つ分だけ作成して、N-BASICの 1番目だけテストで換装してみる。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064646-1024x768.jpg" alt="" class="wp-image-6232" style="width:431px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064646-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064646-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064646-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064646-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064646-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>3つの ROMの間は、2ピン分しか空いていないので、かなりコンパクトにぴっちり作成しないと干渉しちゃいますね。</p>



<p>もしくは、1枚の基板にすべて乗せてという手もありますが、ハンダ付けが結構難しい。これはちょっと悩みどころ。</p>



<h2 class="wp-block-heading">電源投入してテスト</h2>



<p>1つのROMだけ換装して、ちゃんと機能するかテスト。わかりやすいように  (C) を (@) に書き換えてEPROMに書き込みました。<br></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="672" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-5-1024x672.png" alt="" class="wp-image-6236" style="width:617px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-5-1024x672.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-5-300x197.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-5-768x504.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-5.png 1526w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064618-1024x768.jpg" alt="" class="wp-image-6233" style="width:573px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064618-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064618-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064618-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064618-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260307_064618-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>無事うまくいきましたね。</p>



<p>あとは、3つ分の換装でOKですね。</p>



<h2 class="wp-block-heading">microSDからマシン語ゲームをロード</h2>



<p>最初に紹介した、microSDから .cmtファイルを読み込む基板を取り付けて、当時衝撃的だったラリーXの読み込みテストをしてみました。無事に動きました。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191318-1024x768.jpg" alt="" class="wp-image-6234" style="width:387px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191318-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191318-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191318-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191318-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191318-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191325-1024x768.jpg" alt="" class="wp-image-6235" style="width:397px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191325-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191325-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191325-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191325-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/IMG_20260215_191325-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>これで、ようやく PC-8001の快適な環境が出来上がりました。</p>



<h2 class="wp-block-heading">PC-8001のマシン語開発について</h2>



<p>今は 2026年です。21世紀に入ってから四半世紀が立ってしまった現在、正直なところ実機でプログラム開発はしんどすぎるので、私は、秀丸でソースコードを書いて、AILZ80ASM でコンパイルして、DumpListEditor で .cmt ファイルを作成して、XM8 というエミュレータで動作テストという手順でクロス開発しています。なかなか快適です。</p>



<p>また、画面の設計も方眼紙ではきついので、IORI を利用させていただいております。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="821" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-6-821x1024.png" alt="" class="wp-image-6237" style="aspect-ratio:0.8017718715393134;width:368px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-6-821x1024.png 821w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-6-241x300.png 241w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-6-768x958.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-6-1231x1536.png 1231w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-6.png 1346w" sizes="(max-width: 821px) 100vw, 821px" /></figure>



<p>あとは、PC-8001でグラフィカルなタイトル画面を作成するときに、凝ったものを描画するのは大変なので、Photo Shop や Illustrator で作成した画像ファイルを最終的には Photo Shop で8色の GIFファイルにします。</p>



<p>これをDelphi で自作したツールで、読み込んで 160×100 (PC8001のグラフィックス解像度) の16進数データに変換して、マシン語データとして組み込みます。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="593" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-7-1024x593.png" alt="" class="wp-image-6238" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-7-1024x593.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-7-300x174.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-7-768x444.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-7.png 1194w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>実際 PC8001 で画面いっぱいのグラフィクスを描くとなると、テキスト画面で 40×25の 1000byteとアトリビュートエリア (色付けなどの装飾データ) 1,000byte の 合計2,000byte をデータとして持たなければならないので、フル増設 32KBしたPC-8001でもフリーエリアは最大で27KB前後しかありませんので、ゲーム本体をかなりコンパクトにつくらなければなりません。</p>



<div class="wp-block-essential-blocks-advanced-video  root-eb-advanced-video-92dns"><div class="eb-parent-wrapper eb-parent-eb-advanced-video-92dns "><div class="eb-advanced-video-wrapper eb-advanced-video-92dns none" data-id="eb-advanced-video-92dns"><div class="eb-player-wrapper eb-advanced-video-92dns"><div class="eb-player-option none right" data-id="eb-advanced-video-92dns" data-url="https://youtu.be/sXZLCdzft7s" data-option="none" data-controls="false" data-loop="false" data-muted="false" data-playing="false" data-overlay="false" data-light="https://expertgig.jp/wp/wp-content/plugins/essential-blocks/assets/images/adv-video-placeholder.png" data-customplayicontype="image" data-customplayiconlib="fas fa-play-circle" data-customplayicon="true" data-playicon="https://expertgig.jp/wp/wp-content/plugins/essential-blocks/assets/images/adv-video-playicon.svg" data-download="false"></div></div></div></div></div>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-4-3 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<p class="responsive-video-wrap clr"><iframe title="血球パニック for PC-8001 (BASIC+マシン語)" width="1200" height="900" src="https://www.youtube.com/embed/6uamtzlzEP8?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/2026/03/07/pc-8001-%e3%81%ae-basic-rom%e3%82%92-ver1-0-%e2%86%92-1-1-%e3%81%ab-2364-%e2%86%92-2764-%e6%8f%9b%e8%a3%85/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>レトロPC用のEPROM ライターについて</title>
		<link>https://expertgig.jp/2026/03/06/%e3%83%ac%e3%83%88%e3%83%adpc%e7%94%a8%e3%81%aeeprom-%e3%83%a9%e3%82%a4%e3%82%bf%e3%83%bc%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/</link>
					<comments>https://expertgig.jp/2026/03/06/%e3%83%ac%e3%83%88%e3%83%adpc%e7%94%a8%e3%81%aeeprom-%e3%83%a9%e3%82%a4%e3%82%bf%e3%83%bc%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Thu, 05 Mar 2026 15:32:37 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[2716]]></category>
		<category><![CDATA[2732]]></category>
		<category><![CDATA[2764]]></category>
		<category><![CDATA[EPROM ライター]]></category>
		<category><![CDATA[GQ-4x4]]></category>
		<category><![CDATA[レトロPC]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6214</guid>

					<description><![CDATA[レトロPCをいじくる中で、ROMの換装という話になることもあるかと思います。今と違って 45年くらい前の物ですので、ROMのサイズも 2KB, 4KB, 8KB というサイズ感。よって EPROMもそういうサイズのものを [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>レトロPCをいじくる中で、ROMの換装という話になることもあるかと思います。今と違って 45年くらい前の物ですので、ROMのサイズも 2KB, 4KB, 8KB というサイズ感。よって EPROMもそういうサイズのものを使うことになります。当時のEPROM 2708,2716,2732 などは 25V で書き込む必要があり、最近の EPROMライターでは対応していません。私も対応するものを探すのに手間取りましたが、発見し購入、Read / Write テストしましたので、情報をシェアしておきます。</p>



<p>現状、ほぼこれ一択です。<br><br></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14455-1024x768.jpg" alt="" class="wp-image-6215" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14455-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14455-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14455-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14455-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14455-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>それと、私の場合は、ノートPCに多数のものがインストールされていたり、様々なデバイスを接続するので、USBコントローラーが同じで、誤認識して違うものとしてつながってしまうという現象があり、原因究明に苦労しましたので、そんな方のために対処法も書いておきます。</p>



<p>GQ-4&#215;4 の USBコントローラーは、 Cypress（Infineon）のUSBチップを使用しています。これと同じチップのドライバが以前インストールされていたりするとエラーになります。</p>



<h2 class="wp-block-heading">認識しないときの対処方法</h2>



<p>イベントビューワーの Windowsログ &#8211;> システムを開いて、GQ-4&#215;4 のUSBを抜き差しする。<br>F5で最新情報を表示。私の場合は次のようなエラーが発生します。<br></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="937" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-2-1024x937.png" alt="" class="wp-image-6216" style="aspect-ratio:1.0928606277443487;width:728px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-2-1024x937.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-2-300x275.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-2-768x703.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-2.png 1372w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>つまり「IntraoralRYIWinSvc」サービスでエラーとなっています。GQ-4&#215;4 とは全く関係のないデバイスとして認識して、エラーとなっています。そして、そのエラーの次のイベント　「情報」には、次のような記述があります。<br></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="957" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-3-957x1024.png" alt="" class="wp-image-6217" style="aspect-ratio:0.934582688663665;width:645px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-3-957x1024.png 957w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-3-280x300.png 280w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-3-768x822.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-3.png 1075w" sizes="(max-width: 957px) 100vw, 957px" /></figure>



<p>はい。これが原因です。 VID_04B4&amp;PID_8613 これはGQ-4&#215;4 の USBコントローラーのチップと同じです。</p>



<p>Win + X で開くメニューから、ターミナル (管理者) を選択して、ターミナルを管理者モードで開きます。</p>



<p><code>sc.exe stop IntraoraRYlWinSvc<br>sc.exe delete IntraoraRYlWinSvc</code></p>



<p>これで、サービスの停止と削除となります。</p>



<p>しかし、これだけでは不十分で、何かのタイミングでゾンビのように復活してしまうので、</p>



<p><code data-enlighter-language="generic" class="EnlighterJSRAW">pnputil /enum-drivers</code></p>



<p>でドライバーを列挙するとすべてのドライバーが列挙されますので、このテキストをコピーして、エディタなどに貼り付けて、文字列を検索します。私の例では、 Intra や oral という文字を含むものを探します。</p>



<p><code data-enlighter-language="generic" class="EnlighterJSRAW">公開名: oem220.inf<br>元の名前: intraoralsensor.inf<br>プロバイダー名: IOS Manufacturer<br>クラス名: Image<br>クラス GUID: {6bdd1fc6-810f-11d0-bec7-08002be2092f}<br>ドライバー バージョン: 12/12/2022 11.19.39.922<br>署名者名: Microsoft Windows Hardware Compatibility Publisher<br>属性: Declarative</code></p>



<p><code data-enlighter-language="generic" class="EnlighterJSRAW">公開名: oem221.inf<br>元の名前: intraoralsensor.inf<br>プロバイダー名: IOS Manufacturer<br>クラス名: Image<br>クラス GUID: {6bdd1fc6-810f-11d0-bec7-08002be2092f}<br>ドライバー バージョン: 01/30/2026 17.7.11.901<br>署名者名: Microsoft Windows Hardware Compatibility Publisher<br>属性: Declarative</code></p>



<p>この2件がヒットしました。 oem220 と oem221 が探しているものとなります。<br>以下のコマンドで撃退します。</p>



<p><code data-enlighter-language="generic" class="EnlighterJSRAW">pnputil /delete-driver oem221.inf /uninstall /force</code><br><code data-enlighter-language="generic" class="EnlighterJSRAW">pnputil /delete-driver oem221.inf /uninstall /force</code></p>



<p>これで、GQ-4&#215;4を認識します。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2026/03/06/%e3%83%ac%e3%83%88%e3%83%adpc%e7%94%a8%e3%81%aeeprom-%e3%83%a9%e3%82%a4%e3%82%bf%e3%83%bc%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MZ-80K/C の モニタ ROMを換装する (2332 → 2732)、CG-ROM　も一緒に換装 (2316 → 2732 )</title>
		<link>https://expertgig.jp/2026/03/05/mz-80k-c-%e3%81%ae-%e3%83%a2%e3%83%8b%e3%82%bf-rom%e3%82%92%e6%8f%9b%e8%a3%85%e3%81%99%e3%82%8b-2332-%e2%86%92-2732/</link>
					<comments>https://expertgig.jp/2026/03/05/mz-80k-c-%e3%81%ae-%e3%83%a2%e3%83%8b%e3%82%bf-rom%e3%82%92%e6%8f%9b%e8%a3%85%e3%81%99%e3%82%8b-2332-%e2%86%92-2732/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Thu, 05 Mar 2026 05:55:18 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[技術全般]]></category>
		<category><![CDATA[2316]]></category>
		<category><![CDATA[2332]]></category>
		<category><![CDATA[2732]]></category>
		<category><![CDATA[CG-ROM]]></category>
		<category><![CDATA[EPROM]]></category>
		<category><![CDATA[MZ-80]]></category>
		<category><![CDATA[ROM換装]]></category>
		<category><![CDATA[SP-1002]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6186</guid>

					<description><![CDATA[MZ-80のモニタ プログラム (IPL) と言えば、 SP-1002 ですが、これを少し改造する必要がでてきました。とりあえず、うまくいきましたので情報をシェアしておきます。 ついでといってはなんですが、 CG-ROM [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>MZ-80のモニタ プログラム (IPL) と言えば、 SP-1002 ですが、これを少し改造する必要がでてきました。<br>とりあえず、うまくいきましたので情報をシェアしておきます。 </p>



<p>ついでといってはなんですが、 CG-ROMの 2316 → 2732 の回路図も後半に掲載します。<br><br>最初は、 EPROMに書き込んで、差し替えればいいのかなと思っていたのですが、ピン配列の差異があるため、そのままというわけには行きませんでした。PROMの2332 を EPROM 2732 に換装するという事例は、海外のCommodore PET-2001や C64 をターゲットにした記事がいくつかあるのみ。日本でも紹介されている記事はあるものの具体的な配線については言及されていませんでした。</p>



<p>仕方ないので、まずはそれぞれのデータシートのピン配列を確認して、結線について考えました。</p>



<p>2332と 2732 は、その「32」が示す通り、 32KBit すなわち 4KByte のROMですので、容量は一緒。そしてピン配列もおおよそ一緒。違うのは 3ヵ所のみ。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-1024x683.png" alt="" class="wp-image-6187" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-1024x683.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-300x200.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-768x512.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image.png 1484w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>2332 の /CE1 と M2732Aの E̅ は、両方とも Low で ROM が有効 (Active Row) という意味なりますので、これを結線。<br>M2732Aの ピン20 ( G̅Vpp) は、2332 の ピン12 (GND) に繋ぎます。<br>それと、それぞれの A11を結線。<br><br>ということで簡単なのですが、ユニバーサル基板にコンパクトに作成することを考えると、少し工夫が必要でした。<br>実は、基板作成には 2回失敗して、3回目にうまく行きました。しっかりとMZ-80K/C側のICソケットに刺さることが必要です。不安定になってしまいます。</p>



<h2 class="wp-block-heading">うまくいった作成方法</h2>



<p>最初に失敗だったのは、手持ちの角ピンのピンヘッドを使ったこと。これが結構 ICソケットに対しては刺さりが悪いです。Arduino や ESP32などの Break out 作成やジャンパ用には良かったのですが、適材適所ということで。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14820-768x1024.jpg" alt="" class="wp-image-6191" style="aspect-ratio:0.7500123098133832;width:211px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14820-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14820-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14820-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14820-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14820-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>秋月で、両端がピンのものと、片側が丸穴ソケットになっているものを購入。<br></p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14819-768x1024.jpg" alt="" class="wp-image-6192" style="width:285px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14819-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14819-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14819-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14819-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14819-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14818-768x1024.jpg" alt="" class="wp-image-6193" style="aspect-ratio:0.7500109318291136;width:282px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14818-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14818-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14818-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14818-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14818-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>ユニバーサル基板の端っこに、写真のようにハンダ付け。ピン位置が同じ部分は「渡しハンダ」(言い方が古い? ) 、今風に言えば ハンダ ブリッジ (solder brigde) かな? <br>作成手順</p>



<p>① 基板をランド側 (ハンダ付けする側) を上にしてテーブル上に置いて、片側丸穴ソケットのピンを刺します。つまり、ピンの脚が浮いた状態で、基板の逆側に飛び出さない形にしてハンダ付け。垂直になるように一カ所だけハンダ付けして、垂直を調整して固定します。そのあと残りのピンをすべてハンダ付け。これを2つ分。 ( 2732を刺しますのでピッチに注意 )</p>



<p>② 両端がピンになっているものをハンダ付け。ピンをブレッドボードに差して、そこに基板を乗せてハンダ付けするとかなり垂直になります。ブレッドボードがあれば是非そうしてください。</p>



<p>③ 同一ピンは、渡しハンダで導通させます。テスターで1つずつ確認しましょう。</p>



<p>④ 18,20,21ピンを写真のように配線。</p>



<p>とりあえず以上でハンダ付け完了です。</p>



<h2 class="wp-block-heading">そのままトライしてみる</h2>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14813-1024x768.jpg" alt="" class="wp-image-6194" style="width:375px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14813-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14813-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14813-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14813-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14813-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>基板が大きいままなので、コンデンサに当たってしまうため、2段下駄を履かせて高さ調整。</p>



<p>そして MZ-80K2の電源をON!</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14814-1024x768.jpg" alt="" class="wp-image-6195" style="width:369px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14814-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14814-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14814-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14814-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14814-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>モニターのプログラムを改造したことがわかるように、SP-1002A (Aの文字を追加) としましたので、配線がうまく行ったことが確認できました。</p>



<h2 class="wp-block-heading">基板を加工する</h2>



<p>作成した基板のままでは大きすぎるので、コンターマシン (エンドレスのバンドソー) でおおよその大きさに切り出し。<br>写真では2つありますが、これは 2316 → 2732 (キャラグラROMの換装 ) 基板も同時に作ったためです。こちらはまた配線が少し違いますので、別途紹介いたします。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14823-1024x768.jpg" alt="" class="wp-image-6196" style="width:337px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14823-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14823-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14823-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14823-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14823-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>次にグラインダーで細かく、できるだけ小さくなるように加工。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14824-1024x768.jpg" alt="" class="wp-image-6197" style="width:289px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14824-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14824-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14824-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14824-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14824-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<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/2026/03/14825-1024x576.jpg" alt="" class="wp-image-6198" style="width:396px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14825-1024x576.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14825-300x169.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14825-768x432.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14825-1536x864.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14825-800x450.jpg 800w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14825.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<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/2026/03/14826-1024x576.jpg" alt="" class="wp-image-6199" style="width:388px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14826-1024x576.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14826-300x169.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14826-768x432.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14826-1536x864.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14826-800x450.jpg 800w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14826.jpg 1920w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>出来上がり。</p>



<h2 class="wp-block-heading">実装</h2>



<p>写真の下側が モニタROMを換装したもので、上部は CG-ROM を換装したものです。モニタROM が4KBなのに対して、CG-ROMは2KBですので、配線は少し違います。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14830-768x1024.jpg" alt="" class="wp-image-6200" style="width:412px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14830-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14830-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14830-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14830-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14830-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<h2 class="wp-block-heading">起動そして確認</h2>



<p>今回は、MZ-80K/C で SDカードから mztファイルを読み込む基板を手に入れたので、それを利用するため モニタROMの改造をしました。また CG-ROMについては、MZ-80Aという海外版に実装されたキャラクター ROM の内容に差し替えてみたかったからです。海外向けは「カタカナ」が不要ですので、そこに結構面白い記号や図形が登録されています。PCGがなくても面白いキャラグラができそうな感じです。</p>



<p>二つの ROMを換装して電源を入れて、キー入力で表示できるものを表示してみまたした。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14832-1024x768.jpg" alt="" class="wp-image-6202" style="width:517px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14832-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14832-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14832-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14832-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14832-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>あとで、256個のキャラをすべて表示するプログラムを作成して公開いたします。</p>



<h2 class="wp-block-heading">CG-ROM (2316 → 2732) の換装</h2>



<p>CG-ROMは、 8×8ドットのキャラ文字 256種ということで、2046byte (2KB) のPROM 2316 となっています。これを EPROM 2732に換装するということで、前半2KBだけ利用します。ということで A11はGNDに固定。</p>



<p>切り替えスイッチを付けて 日本版と輸出版のCG-ROMデータを切り替えなんてこともできると思いますが、とりあえずは換装するだけの回路図となります。こちらはとてもシンプルです。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="589" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-1-1024x589.png" alt="" class="wp-image-6206" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/image-1-1024x589.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-1-300x172.png 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-1-768x441.png 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/image-1.png 1472w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">道具は重要</h2>



<p>最初の2回の失敗は、基板の設計や部品に問題がありましたが、そのほかも重要でした。</p>



<p>ちょっと良いハンダこて、フラックス、ハンダ吸い取り線、テスター</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14815-1024x768.jpg" alt="" class="wp-image-6203" style="width:355px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14815-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14815-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14815-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14815-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14815-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">失敗の巻 (第一回トライ)</h2>



<p>初回、2回目は、基板の設計の問題、ハンダ付け、ピンの刺さり具合など問題だらけでした。反省の念を込めて写真をアップ。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14538-768x1024.jpg" alt="" class="wp-image-6188" style="aspect-ratio:0.7500116490377895;width:288px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14538-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14538-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14538-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14538-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14538-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14539-768x1024.jpg" alt="" class="wp-image-6189" style="aspect-ratio:0.7500157937961969;width:234px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14539-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14539-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14539-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14539-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14539-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="768" src="https://expertgig.jp/wp/wp-content/uploads/2026/03/14540-1024x768.jpg" alt="" class="wp-image-6190" style="width:281px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/03/14540-1024x768.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14540-300x225.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14540-768x576.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14540-1536x1152.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2026/03/14540-2048x1536.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2026/03/05/mz-80k-c-%e3%81%ae-%e3%83%a2%e3%83%8b%e3%82%bf-rom%e3%82%92%e6%8f%9b%e8%a3%85%e3%81%99%e3%82%8b-2332-%e2%86%92-2732/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>今年は細々とMZ80Kのマシン語を組む</title>
		<link>https://expertgig.jp/2026/01/30/%e4%bb%8a%e5%b9%b4%e3%81%af%e7%b4%b0%e3%80%85%e3%81%a8mz80k%e3%81%ae%e3%83%9e%e3%82%b7%e3%83%b3%e8%aa%9e%e3%82%92%e7%b5%84%e3%82%80/</link>
					<comments>https://expertgig.jp/2026/01/30/%e4%bb%8a%e5%b9%b4%e3%81%af%e7%b4%b0%e3%80%85%e3%81%a8mz80k%e3%81%ae%e3%83%9e%e3%82%b7%e3%83%b3%e8%aa%9e%e3%82%92%e7%b5%84%e3%82%80/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Fri, 30 Jan 2026 12:45:46 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[MZ-80]]></category>
		<category><![CDATA[Z80]]></category>
		<category><![CDATA[エミュレータ]]></category>
		<category><![CDATA[マシン語]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6118</guid>

					<description><![CDATA[去年(2025) はPC-8001向けに、マシン語のゲームを2つ作成したので、今年(2026) は来年の干支 「羊」をテーマにしたゲームをMZ-80Kのマシン語で開発することにする。同じZ80なのでPC-8001向けにプ [&#8230;]]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="6118" class="elementor elementor-6118" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-b7754f7 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b7754f7" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2734d9b" data-id="2734d9b" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3ffaf46 elementor-widget elementor-widget-text-editor" data-id="3ffaf46" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>去年(2025) はPC-8001向けに、マシン語のゲームを2つ作成したので、今年(2026) は来年の干支 「羊」をテーマにしたゲームをMZ-80Kのマシン語で開発することにする。同じZ80なのでPC-8001向けにプログラミングするのとそんなに違いはありませんが、私の一番思い入れの強いMZ-80K2向けにオールマシン語でゲームを開発するというのは大変意味のある事なんです(笑)。</p>
<p>とはいえ、実機を使って当時のアセンブラで開発するというは、現代ではなかなかの苦行ですので、例によってクロス開発環境を整える。</p>
<p>Z80のアセンブリコードは秀丸を利用。<br />アセンブラは AILZ80ASM を利用。<br />.mztファイルの生成には DumpListEditor Ver 0.80を利用。</p>
<p>こんな構成で行きます。<br />PC8001のときから少し時間がたってしまったので、手順をおさらいします。</p>
<p>テストコードとして、「VRAMをクリアして、VRAMの先頭からディスプレイコードすべてを書き込む」というプログラムを作成します。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-8aa20da elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8aa20da" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-9def595" data-id="9def595" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-7b0831b elementor-widget elementor-widget-heading" data-id="7b0831b" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">1. 秀丸でアセンブリコードを記述して保存</h2>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-9b183a7 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="9b183a7" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e742c15" data-id="e742c15" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap">
							</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-d8863a6 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="d8863a6" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-ab333d3" data-id="ab333d3" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-0221cb6 elementor-widget elementor-widget-code-highlight" data-id="0221cb6" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-less line-numbers">
				<code readonly="true" class="language-less">
					<xmp>;============================================================
; MZ-80K Display Code Table Viewer
;============================================================

            ORG     1200h

;----------------------------
; MZ-80K 定義
;----------------------------
VRAM        EQU     0D000h	; テキストVRAM先頭
COLS        EQU     40		; 画面の横文字数
ROWS        EQU     25		; 画面の縦文字数
VRAM_SIZE   EQU     COLS*ROWS	; 1000 bytes
SPC         EQU     00h		; スペース

;============================================================
START:
;----------------------------
; 1) VRAMクリア（SPC=$00）
;----------------------------
	LD	HL, VRAM
	LD	(HL), SPC
	LD	DE, VRAM+1
	LD	BC, VRAM_SIZE-1
	LDIR

;----------------------------
; 2) 表示コードを 00h→FFh 順に書く
;----------------------------
	LD	HL, VRAM
	LD	A, 00h

DISP_LOOP:
	LD	(HL), A		; VRAMに文字を書きこむ
	INC	HL		;
	INC	A		; 00→01→…→FF→00…

	CP	FFh
	JR	NZ, DISP_LOOP

;----------------------------
; 3) CPU停止
;----------------------------
STOP_CPU:
	HALT

END
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-51db709 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="51db709" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-754ae2c" data-id="754ae2c" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-8a5ff8e elementor-widget elementor-widget-text-editor" data-id="8a5ff8e" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>保存するファイル名を VRAMTEST.z80 として保存します。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-b969496 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b969496" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b041249" data-id="b041249" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9de71e2 elementor-widget elementor-widget-heading" data-id="9de71e2" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">2. アセンブラでバイナリファイルを生成</h2>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-514a902 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="514a902" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3edb7f9" data-id="3edb7f9" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-78561bd elementor-widget elementor-widget-text-editor" data-id="78561bd" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>AILZ80ASMはコマンドラインで利用するアセンブラですので、次のような batファイルを作成すると便利だろう。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-36dc421 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="36dc421" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5006cc2" data-id="5006cc2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-da1badc elementor-widget elementor-widget-code-highlight" data-id="da1badc" data-element_type="widget" data-e-type="widget" data-widget_type="code-highlight.default">
				<div class="elementor-widget-container">
							<div class="prismjs-default copy-to-clipboard ">
			<pre data-line="" class="highlight-height language-bash line-numbers">
				<code readonly="true" class="language-bash">
					<xmp>cd C:\work\2025\05_PERSONAL\Emulator\MZ80マシン語テスト
ailz80asm VRAMTEST.z80 -bin -lst -sym -f
pause
</xmp>
				</code>
			</pre>
		</div>
						</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-1372c60 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="1372c60" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7b98f83" data-id="7b98f83" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-7101b05 elementor-widget elementor-widget-text-editor" data-id="7101b05" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>バッチファイルを実行すると次のようなファイルが生成される。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-4a140fa elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4a140fa" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d79166a" data-id="d79166a" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-221e551 elementor-widget elementor-widget-image" data-id="221e551" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="211" height="148" src="https://expertgig.jp/wp/wp-content/uploads/2026/01/d432fa515bd7e8287f17d9ec63d019b9.jpg" class="attachment-large size-large wp-image-6123" alt="" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-94ef25a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="94ef25a" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f72296f" data-id="f72296f" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-bf9f0d2 elementor-widget elementor-widget-text-editor" data-id="bf9f0d2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>*.sym はシンボリックファイルで、アセンブリソース記述した「EQU」で設定した値と「ラベル」の位置のアドレスが一覧になっている。EQUは、他の言語で言えば const である。これを頼りにしてソースコードとにらめっこしてデバッグしていくのである。</p>
<p>*.lst は、アドレス、クロック数、アセンブルした16進数のコード、アセンブリソースを一体化したもので、プログラムの解析に利用する。</p>
<p>*.bin はアセンブリソースをマシン語に変換したバイナリプログラムでこれが実行プログラムになる。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-9564ebe elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="9564ebe" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-04fef43" data-id="04fef43" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-39bbd5f elementor-widget elementor-widget-heading" data-id="39bbd5f" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">3. DumpListEditor で mztファイルを生成する</h2>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-2a68c05 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="2a68c05" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-769dd4f" data-id="769dd4f" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ade9856 elementor-widget elementor-widget-text-editor" data-id="ade9856" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>binファイルができたので、これをエミュレータで読み込める形式にするため、このツールを使う。</p>
<p>最初に「MZ-80K」モードにする。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-8109d20 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8109d20" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-b4640b0" data-id="b4640b0" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-93b5e0b elementor-widget elementor-widget-image" data-id="93b5e0b" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="424" height="223" src="https://expertgig.jp/wp/wp-content/uploads/2026/01/2b5c935017301a56d7ea9d97d8579833.jpg" class="attachment-large size-large wp-image-6124" alt="" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/01/2b5c935017301a56d7ea9d97d8579833.jpg 424w, https://expertgig.jp/wp/wp-content/uploads/2026/01/2b5c935017301a56d7ea9d97d8579833-300x158.jpg 300w" sizes="(max-width: 424px) 100vw, 424px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-1f58dde elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="1f58dde" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d4db180" data-id="d4db180" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-9881185 elementor-widget elementor-widget-text-editor" data-id="9881185" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>次に 「ファイル読み込み」メニューから「BINファイル読み込み&amp;ダンプリスト表示」で作ほど作成した「VRAMTEST.bin」を読み込む。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-f4fecfb elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="f4fecfb" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7af4204" data-id="7af4204" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-476408b elementor-widget elementor-widget-image" data-id="476408b" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="870" height="343" src="https://expertgig.jp/wp/wp-content/uploads/2026/01/418c80b53d7d74248d924ba2c1823cee.jpg" class="attachment-large size-large wp-image-6125" alt="" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/01/418c80b53d7d74248d924ba2c1823cee.jpg 870w, https://expertgig.jp/wp/wp-content/uploads/2026/01/418c80b53d7d74248d924ba2c1823cee-300x118.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/01/418c80b53d7d74248d924ba2c1823cee-768x303.jpg 768w" sizes="(max-width: 870px) 100vw, 870px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-ed6bf47 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="ed6bf47" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-360432e" data-id="360432e" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-31a2c54 elementor-widget elementor-widget-text-editor" data-id="31a2c54" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>先頭の行に「$1200」と入力して、「アドレス補正」ボタンを押すと次のように水色にハイライトされる。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-3038de8 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3038de8" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-f2a0c54" data-id="f2a0c54" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-e51d061 elementor-widget elementor-widget-image" data-id="e51d061" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="834" height="413" src="https://expertgig.jp/wp/wp-content/uploads/2026/01/804784694ad54d387a75d33f157c5d76.jpg" class="attachment-large size-large wp-image-6126" alt="" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/01/804784694ad54d387a75d33f157c5d76.jpg 834w, https://expertgig.jp/wp/wp-content/uploads/2026/01/804784694ad54d387a75d33f157c5d76-300x149.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/01/804784694ad54d387a75d33f157c5d76-768x380.jpg 768w" sizes="(max-width: 834px) 100vw, 834px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-5930c2a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="5930c2a" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-63e6f89" data-id="63e6f89" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-ff6925f elementor-widget elementor-widget-text-editor" data-id="ff6925f" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>そして「形式変換」ボタンを押せばバイナリファイルの先頭アドレスが「1200」からとなる。</p>
<p>右側のファイル名を確認して、必要であれば変更する。実行アドレスは先頭アドレスと同じであれば 1200とする。</p>
<p>「ファイル整理画面にPaste」ボタンを押すと「ファイル整理」タグに移動し、binファイルが生成される。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-609df14 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="609df14" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-07c0a55" data-id="07c0a55" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-98e8094 elementor-widget elementor-widget-image" data-id="98e8094" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="566" height="307" src="https://expertgig.jp/wp/wp-content/uploads/2026/01/becc0f2f7610b9f2ce6171bd5ded2453.jpg" class="attachment-large size-large wp-image-6127" alt="" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/01/becc0f2f7610b9f2ce6171bd5ded2453.jpg 566w, https://expertgig.jp/wp/wp-content/uploads/2026/01/becc0f2f7610b9f2ce6171bd5ded2453-300x163.jpg 300w" sizes="(max-width: 566px) 100vw, 566px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-8bcb05b elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="8bcb05b" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-179ddd2" data-id="179ddd2" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-396a505 elementor-widget elementor-widget-text-editor" data-id="396a505" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>これで、「mzt書出し」ボタンを押して、保存すれば mztファイルの出来上がり。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-4b5d406 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="4b5d406" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3946583" data-id="3946583" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-037c950 elementor-widget elementor-widget-image" data-id="037c950" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="646" height="163" src="https://expertgig.jp/wp/wp-content/uploads/2026/01/987e362b24a78f2af719a296c3f96c94.jpg" class="attachment-large size-large wp-image-6128" alt="" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/01/987e362b24a78f2af719a296c3f96c94.jpg 646w, https://expertgig.jp/wp/wp-content/uploads/2026/01/987e362b24a78f2af719a296c3f96c94-300x76.jpg 300w" sizes="(max-width: 646px) 100vw, 646px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-6170b3f elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="6170b3f" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-cca4ce4" data-id="cca4ce4" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2add1d4 elementor-widget elementor-widget-heading" data-id="2add1d4" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">4. MZ-80Kのエミュレータで実行させる</h2>				</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-f5df6b5 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="f5df6b5" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2f0677b" data-id="2f0677b" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-37803c3 elementor-widget elementor-widget-text-editor" data-id="37803c3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Emulator を起動して、生成した VRAMTEST.mzt を選択して、「LOAD」+ CR (Enter) でプログラムがロードされます。mzt ファイルにはプログラムの読み込みアドレス、実行アドレスが書き込まれているので、読み込むが完了すると自動的に実行されます。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-0ec9bb9 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="0ec9bb9" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-44f9ae6" data-id="44f9ae6" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-dc900c2 elementor-widget elementor-widget-image" data-id="dc900c2" data-element_type="widget" data-e-type="widget" data-widget_type="image.default">
				<div class="elementor-widget-container">
															<img loading="lazy" decoding="async" width="1024" height="717" src="https://expertgig.jp/wp/wp-content/uploads/2026/01/57cb2d8bad3c0566ad951fbbad01f1bc-1024x717.jpg" class="attachment-large size-large wp-image-6129" alt="" srcset="https://expertgig.jp/wp/wp-content/uploads/2026/01/57cb2d8bad3c0566ad951fbbad01f1bc-1024x717.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2026/01/57cb2d8bad3c0566ad951fbbad01f1bc-300x210.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2026/01/57cb2d8bad3c0566ad951fbbad01f1bc-768x538.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2026/01/57cb2d8bad3c0566ad951fbbad01f1bc.jpg 1440w" sizes="(max-width: 1024px) 100vw, 1024px" />															</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-15e3ec1 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="15e3ec1" data-element_type="section" data-e-type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-657cb63" data-id="657cb63" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-6a95f89 elementor-widget elementor-widget-text-editor" data-id="6a95f89" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>おー、パチパチパチ。<br />めでたく実行されました。MZ-80Kに設定されているキャラクタはちょっと楽しい感じですね。グラフィクスを描画できないので、ゲームをつくるときは、この文字を組み合わせて、それっぽい感じにすることになります。センスが問われるのがおもしろいところ。</p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2026/01/30/%e4%bb%8a%e5%b9%b4%e3%81%af%e7%b4%b0%e3%80%85%e3%81%a8mz80k%e3%81%ae%e3%83%9e%e3%82%b7%e3%83%b3%e8%aa%9e%e3%82%92%e7%b5%84%e3%82%80/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>8253 PIT (Programmable Interval Timer )の動きを整理</title>
		<link>https://expertgig.jp/2025/08/09/8253-pit-programmable-interval-timer-%e3%81%ae%e5%8b%95%e3%81%8d%e3%82%92%e6%95%b4%e7%90%86/</link>
					<comments>https://expertgig.jp/2025/08/09/8253-pit-programmable-interval-timer-%e3%81%ae%e5%8b%95%e3%81%8d%e3%82%92%e6%95%b4%e7%90%86/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Fri, 08 Aug 2025 22:57:16 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[8253]]></category>
		<category><![CDATA[MZ80K]]></category>
		<category><![CDATA[エミュレータ]]></category>
		<category><![CDATA[カウンタ]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6112</guid>

					<description><![CDATA[MZ80Kのエミュレータを完成させるには、8253 PITと 8255 PIO の動きを完全に理解してエミュレートしないとだめなので、ここで整理しておく。ちなみに回路としてはその下に タイマーICの555もあるので、これ [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>MZ80Kのエミュレータを完成させるには、8253 PITと 8255 PIO の動きを完全に理解してエミュレートしないとだめなので、ここで整理しておく。ちなみに回路としてはその下に タイマーICの555もあるので、これもやらないとな。。</p>



<p>さて、8253 PIT とは何なのかというと、カウンタです。設定した値からカウントダウンして0になると終わったよと知らせてくれます。このカウンタが C0～2 の3 つのカウンタが搭載されていて、それぞれ動作モードや値を設定して独立したカウンタとして機能します。カウントダウンは外部からクロックを入れることでカウントダウンを行います。GATEピンでカウントダウンする、しないを制御することもできます。</p>



<p>MZ80Kでは、この8253 を サウンド出力とタイマに利用しています。</p>



<p>MZ80K2に付属してきた取扱説明書のページで、MZ80Kがどのように利用しているか解説されています。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="658" src="https://expertgig.jp/wp/wp-content/uploads/2025/08/image-1024x658.png" alt="" class="wp-image-6113" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/08/image-1024x658.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/08/image-300x193.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/08/image-768x493.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/08/image.png 1241w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>MZ80Kでは、メモリマップドI/O という方式が採用されていて、メモリの E000h～E008h が 8255と8253 につながっていて、そこのアドレスに値に読み書きして 8255と8253 を制御するわけです。</p>



<p>MZ80Kに電源を入れて表示される モニタ SP-1002 では、8253の C0 にサウンド・コントロール用にコントロールワードをセットしています。 </p>



<p>MZ80Kの8253 周辺の回路図を見てみましょう。</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="831" src="https://expertgig.jp/wp/wp-content/uploads/2025/08/image-1-1024x831.png" alt="" class="wp-image-6114" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/08/image-1-1024x831.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/08/image-1-300x243.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/08/image-1-768x623.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/08/image-1.png 1043w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>CLK1 に 31.25Kのクロックが入っていて、そのOUT1 がCLK2 に接続されています。つまりこの二つのカウンタは回路上で連携しているのです。</p>



<h2 class="wp-block-heading">細かい挙動</h2>



<ol class="wp-block-list">
<li>コントロールワードを設定しただけではカウントダウンはスタートしない</li>



<li>カウントダウンしているときにコントロールワードを設定してもカウントダウンは続いている</li>



<li>1byte または 2byteのカウンタ値が与えられたらカウントダウンスタート</li>



<li>カウンタの値はカウントラッチしてもしなくても読みとれるが2byteのときは値がずれる</li>



<li>カウントラッチした値があれば、その値を返して、カウントラッチを解除する</li>



<li>カウントラッチしたまま、カウントダウンがつづいて0になってもカウントラッチの値はそのまま</li>



<li>コントロールワードで再ラッチしても値は元のまま</li>



<li>コントロールワードで新しくタイマの設定がされたらラッチは解除</li>
</ol>



<p>細かい挙動については、今後も継続メンテ。<br><br>このページもまだ途中なので、継続メンテ</p>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2025/08/09/8253-pit-programmable-interval-timer-%e3%81%ae%e5%8b%95%e3%81%8d%e3%82%92%e6%95%b4%e7%90%86/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>MZ-80K2 取扱説明書を書庫から発掘</title>
		<link>https://expertgig.jp/2025/08/02/mz-80k2-%e5%8f%96%e6%89%b1%e8%aa%ac%e6%98%8e%e6%9b%b8%e3%82%92%e6%9b%b8%e5%ba%ab%e3%81%8b%e3%82%89%e7%99%ba%e6%8e%98/</link>
					<comments>https://expertgig.jp/2025/08/02/mz-80k2-%e5%8f%96%e6%89%b1%e8%aa%ac%e6%98%8e%e6%9b%b8%e3%82%92%e6%9b%b8%e5%ba%ab%e3%81%8b%e3%82%89%e7%99%ba%e6%8e%98/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Sat, 02 Aug 2025 06:43:52 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[MZ-80]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6105</guid>

					<description><![CDATA[今日、休みだったので会社で、レトロPC本の I/O を整理していたら、MZ-80K2 の取扱説明書をきれいな状態で発掘。 ずっと行方不明だったのですが、 重ねてあった古い I/O の間にありました。よかったよかった。 何 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>今日、休みだったので会社で、レトロPC本の I/O を整理していたら、MZ-80K2 の取扱説明書をきれいな状態で発掘。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="768" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2025/08/IMG_20250802_152950-768x1024.jpg" alt="" class="wp-image-6106" style="width:437px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/08/IMG_20250802_152950-768x1024.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2025/08/IMG_20250802_152950-225x300.jpg 225w, https://expertgig.jp/wp/wp-content/uploads/2025/08/IMG_20250802_152950-1152x1536.jpg 1152w, https://expertgig.jp/wp/wp-content/uploads/2025/08/IMG_20250802_152950-1536x2048.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2025/08/IMG_20250802_152950-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<p>ずっと行方不明だったのですが、 重ねてあった古い I/O の間にありました。よかったよかった。</p>



<p>何年か前に、MZ-80K2のエミュレータを作り出したつきに色々と資料を漁っていたのですが、</p>



<p>これが見つからなくて、Web上で公開されていたぼやけたの文字を読んでました。</p>



<p>とりあえず、さっそくデータ化ということで、PDFにしてみました。<br></p>



<div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="https://expertgig.jp/wp/wp-content/uploads/2025/08/adae004b035a13943b957803666a3484.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="MZ80K2_取扱説明書の埋め込み。"></object><a id="wp-block-file--media-ca791404-005e-4e2e-b041-7a82b6cf46f6" href="https://expertgig.jp/wp/wp-content/uploads/2025/08/adae004b035a13943b957803666a3484.pdf">MZ80K2_取扱説明書</a><a href="https://expertgig.jp/wp/wp-content/uploads/2025/08/adae004b035a13943b957803666a3484.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-ca791404-005e-4e2e-b041-7a82b6cf46f6">ダウンロード</a></div>



<p></p>



<p>この中で重要なのは、8255と8253 の メモリマップド I/O の部分です。これがはっきりしないとエミュレータが完成しない。</p>



<p>著作権上はちょっと問題ありますが、重要な情報ということで公開します。</p>



<p>問題がある場合は、お知らせください。すぐに非公開いします。</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2025/08/02/mz-80k2-%e5%8f%96%e6%89%b1%e8%aa%ac%e6%98%8e%e6%9b%b8%e3%82%92%e6%9b%b8%e5%ba%ab%e3%81%8b%e3%82%89%e7%99%ba%e6%8e%98/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Raspi Zero 2W ベアメタル開発 9 (キー入力の基礎知識 編)</title>
		<link>https://expertgig.jp/2025/06/21/raspi-zero-2w-%e3%83%99%e3%82%a2%e3%83%a1%e3%82%bf%e3%83%ab-10-%e3%82%ad%e3%83%bc%e5%85%a5%e5%8a%9b%e3%81%ae%e5%9f%ba%e7%a4%8e%e7%9f%a5%e8%ad%98-%e7%b7%a8/</link>
					<comments>https://expertgig.jp/2025/06/21/raspi-zero-2w-%e3%83%99%e3%82%a2%e3%83%a1%e3%82%bf%e3%83%ab-10-%e3%82%ad%e3%83%bc%e5%85%a5%e5%8a%9b%e3%81%ae%e5%9f%ba%e7%a4%8e%e7%9f%a5%e8%ad%98-%e7%b7%a8/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Fri, 20 Jun 2025 17:22:06 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[KEYSTROBE]]></category>
		<category><![CDATA[MZ-80]]></category>
		<category><![CDATA[Raspi Zero 2W]]></category>
		<category><![CDATA[Ultibo]]></category>
		<category><![CDATA[Z80]]></category>
		<category><![CDATA[キーストローブ]]></category>
		<category><![CDATA[キーマトリクス]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6098</guid>

					<description><![CDATA[MZ80K のキーボードの実装を進めていきたいと思う。 キーボードの実装に当たっては、MZ80K がマップドI/O方式について理解する必要がある。 今、この瞬間に押されてるキーボードは何か? あのキーボードは押されている [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>MZ80K のキーボードの実装を進めていきたいと思う。</p>



<p>キーボードの実装に当たっては、MZ80K がマップドI/O方式について理解する必要がある。</p>



<p>今、この瞬間に押されてるキーボードは何か? あのキーボードは押されているのか押されていないのか? リアルタイムなゲームを作るうえでは欠かせない情報である。MZ80KのBASICでは、キーの状態をリアルタイムに検知する機能はない。</p>



<p>MZ80KのBASIC ( SP-5030等) の場合、INKEY$ でキー入力が発生するまで、ループして押された瞬間を検知することはできるが、今どんな状態かを知ることができない。しかしマシン語を使えば、簡単である。<br>メモリの $E000 と $E001 に接続された Intel 8255 ( Programmable Peripheral Interface ) PPI の対して、操作を行えばいいのである。</p>



<p>具体的には、メモリの$E000 の 上位4ビットは常に1111B として、下位4ビットには下図の知りたいキーがある場所のKEYSTROBE番号をセットして、$E0001 のDATAビットの状態をしらべれば良い。 MZ700やMZ1500のキーマトリクスはネットでもちらほら散見するが、今となっては MZ80Kのキーマトリクスの情報が無いと思われるので、ここに情報を公開しておこう。だれかの役に立つかもしれないので。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="669" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-16-1024x669.png" alt="" class="wp-image-6099" style="width:715px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-16-1024x669.png 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-16-300x196.png 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-16-768x501.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-16.png 1438w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>例えば、【V】キーが押されているかどうか知りたかったら、$E000 に F7h (11110111B) をセットして、$E000 の値が FDh (1111 1101B) ならば、Vキーがおされているということになる。</p>



<p>Z80のマシン語だとこんな感じ。BITの状態を調べて条件分岐。</p>



<pre class="wp-block-code"><code class="">LD ($E000),$F7<br>LD A,($E001) <br>BIT 2,A<br>JP Z,V_KEY_PRESSED</code></pre>



<p>もしくは、AND (論理積) を使って明示的に下記のようにするのも良い。</p>



<pre class="wp-block-code"><code class="">LD ($E000),$F7<br>LD A,($E001) <br>AND %00000100     ; Bit2だけマスク（0b00000100）<br>JP Z,V_KEY_PRESSED</code></pre>



<p>鋭い人であれば、これが複数キーの状態も検知できそうだと気づくだろう。つまり同時押しも検知できるのである。</p>



<p>ただし、キーマトリクスの回路の弱点として、ある特定のパターンで3つ以上のキーを押すと回路のショートルートができ、違うキーが押された誤検知するという現象があり、ゴーストキーと呼ばれています。 </p>



<h2 class="wp-block-heading">エミュレータでどのように組み込むか</h2>



<p>エミュレータでは、マップされたI/O $E000～$E008 のメモリに対して読み書きがあったら、上記処理をすれば良い。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://expertgig.jp/2025/06/21/raspi-zero-2w-%e3%83%99%e3%82%a2%e3%83%a1%e3%82%bf%e3%83%ab-10-%e3%82%ad%e3%83%bc%e5%85%a5%e5%8a%9b%e3%81%ae%e5%9f%ba%e7%a4%8e%e7%9f%a5%e8%ad%98-%e7%b7%a8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Raspi Zero 2W ベアメタル開発 08 (VRAM描画解決 編)</title>
		<link>https://expertgig.jp/2025/06/19/raspi-zero-2w-%e3%83%99%e3%82%a2%e3%83%a1%e3%82%bf%e3%83%ab%e9%96%8b%e7%99%ba-08-vram%e6%8f%8f%e7%94%bb%e8%a7%a3%e6%b1%ba-%e7%b7%a8/</link>
					<comments>https://expertgig.jp/2025/06/19/raspi-zero-2w-%e3%83%99%e3%82%a2%e3%83%a1%e3%82%bf%e3%83%ab%e9%96%8b%e7%99%ba-08-vram%e6%8f%8f%e7%94%bb%e8%a7%a3%e6%b1%ba-%e7%b7%a8/#respond</comments>
		
		<dc:creator><![CDATA[Ariyuki Tano]]></dc:creator>
		<pubDate>Wed, 18 Jun 2025 23:42:18 +0000</pubDate>
				<category><![CDATA[マイコン]]></category>
		<category><![CDATA[情報発信基地]]></category>
		<category><![CDATA[Lazarus]]></category>
		<category><![CDATA[MZ-80]]></category>
		<category><![CDATA[Raspi Zero 2W]]></category>
		<category><![CDATA[Ultibo]]></category>
		<category><![CDATA[エミュレータ]]></category>
		<guid isPermaLink="false">https://expertgig.jp/?p=6093</guid>

					<description><![CDATA[先週は、VRAMイメージの描画で、VRAMの内容を一発表示する分には、まぁまぁ問題なかったのですが、描画Threadを回すと、画面がゴミだらけで、まともに表示されるまで何分も待つという不思議な現象に悩まされていました。  [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>先週は、VRAMイメージの描画で、VRAMの内容を一発表示する分には、まぁまぁ問題なかったのですが、描画Threadを回すと、画面がゴミだらけで、まともに表示されるまで何分も待つという不思議な現象に悩まされていました。</p>



<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_20250613_214530-1-1024x576.jpg" alt="" class="wp-image-6096" style="width:480px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250613_214530-1-1024x576.jpg 1024w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250613_214530-1-300x169.jpg 300w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250613_214530-1-768x432.jpg 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250613_214530-1-1536x864.jpg 1536w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250613_214530-1-2048x1153.jpg 2048w, https://expertgig.jp/wp/wp-content/uploads/2025/06/IMG_20250613_214530-1-800x450.jpg 800w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>その原因が、いわゆる V-Sync (垂直同期) の問題と思っていて、どうやって Raspi Zero 2Wから V-Sync完了の情報をもらうか、そしてどれだけ速く書き込むか (次のV-Syncまでの間に画面生成完了させる。) 、Double Buffer にしてどうするとか。。</p>



<p>さんざんいじくりまわした挙句、元に戻すこともできなくなり、前回の投稿のように Z80エミュレート部分のスピードアップにいそしんだというわけです。</p>



<p>まぁしかし、怪我の功名。Z80のスピードは3.5倍になっただけでなく、新たなアプローチで原因を探すきっかけとなり、見事解決。</p>



<p>結果からいうと、CPUのL1 キャッシュの問題でした。</p>



<p>どういうことかというと、現代のCPU は、プログラムを先読みしてキャッシュしたり分岐の予測をしりして動作スピードをアップさせているわけなんですが、その先読み部分のデータについては、画面描画プログラムは高速で随時書き換えているわけです。</p>



<p>ですから、CPUが先走って読み込んだあとに対象の部分をプログラムが書き換えているので、データの不整合がおきるわけですね。</p>



<p>その結果画面はゴミが残ったような状態になったり、文字が欠けていたりしたわけです。</p>



<p>そこで、VRAM書き換え直後に キャッシュクリアしたら、あっさり解決。勉強になりました。</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="889" height="1024" src="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-15-889x1024.png" alt="" class="wp-image-6094" style="width:435px;height:auto" srcset="https://expertgig.jp/wp/wp-content/uploads/2025/06/image-15-889x1024.png 889w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-15-260x300.png 260w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-15-768x885.png 768w, https://expertgig.jp/wp/wp-content/uploads/2025/06/image-15.png 908w" sizes="(max-width: 889px) 100vw, 889px" /></figure>



<p><br></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="Raspi Zero 2W で MZ80K emu 開発。VRAM描画もうまくいった件 #raspi #emulator #mz80 #ultibo" width="1200" height="675" src="https://www.youtube.com/embed/f58UqlGKObI?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/06/19/raspi-zero-2w-%e3%83%99%e3%82%a2%e3%83%a1%e3%82%bf%e3%83%ab%e9%96%8b%e7%99%ba-08-vram%e6%8f%8f%e7%94%bb%e8%a7%a3%e6%b1%ba-%e7%b7%a8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
