<?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>パピコニアンの倉庫 - 整頓中 &#187; RETROPC</title>
	<atom:link href="http://www.retropc.net/mm/archives/category/retropc/feed" rel="self" type="application/rss+xml" />
	<link>http://www.retropc.net/mm</link>
	<description>コメントスパムがひどいのでコメント欄を閉じています。ご用の方はTWITTER(@morian)へ</description>
	<lastBuildDate>Mon, 30 Mar 2026 14:28:56 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>X1のEMM</title>
		<link>http://www.retropc.net/mm/archives/1809</link>
		<comments>http://www.retropc.net/mm/archives/1809#comments</comments>
		<pubDate>Mon, 10 Dec 2018 14:20:03 +0000</pubDate>
		<dc:creator>moriyan</dc:creator>
				<category><![CDATA[RETROPC]]></category>

		<guid isPermaLink="false">http://www.retropc.net/mm/?p=1809</guid>
		<description><![CDATA[X1にもEMMにも詳しくないのですが、どういうものなのか、どのように使うのかを知りたかったので調べてみました。間違いがありそうなので、気が付いたら随時修正していきます。 純正品は、こちらの「X1用EMMボード」を参考にさせていただきました。つまり・・・ ・純正品の320Kbyteメモリボードの事をEMMボードと呼ぶ。320Kbyteの領域がある。 ・320KByte以外のボードは非純正品。（互換性はある） ということですね。 あと、I/O誌の1986年3,4,5月号にもEMMボードの製作記事が掲載されているようです。 320KByteということは、000000h &#8211; 04FFFFhのメモリ空間を持つということになって、Hu-BASICでは、この領域をEMM0:というデバイス名で表記するようです。 また、EMM:はEMM0:と同じデバイスになります。 アドレスの最大が04FFFFhなので、アドレス指定に3バイト必要になるということですね。 上位 00h ～ 04h 中位 00h ～ FFh 下位 00h ～ FFh 上位バイトには余裕があるので、その気になれば、000000h &#8211; FFFFFFhまで使えることになると。 FFFFFFh Byte => 1677216Byte => 約16.384MByteということでしょうかね。 ハードウェアレベルでは、3バイトのアドレス指定用のI/Oポートと、指定アドレスの読み書き用1バイトのI/Oポートを通してアクセスするようです。わかりやすいですね。また、読み書きをすると、自動的にアドレスが+1されるようです、便利ですね。 0D00h アドレス下位指定(00h-FFh) OUT 0D01h アドレス中位指定(00h-FFh) OUT 0D02h アドレス上位指定(00h-04h) OUT 0D03h データ リード/ライト IN/OUT Hu-BASICでは、EMM0:以外に、EMM1:、EMM2:&#8230;といった指定ができるようですが、これはボードを複数枚挿し込んだ時のデバイス名として識別されるようです。 この場合、EMM1:は0D04H, EMM2:は0D08h・・・のように、I/Oポートのアドレスをずらしてアクセスすることが出来ます。 Hu-BASICでは、EMM0:のデバイスをフロッピーディスクのように扱えるので、FILES,LOAD,SAVEといった命令を使って、EMM上にファイルを保存できます。ただし、X1本体の電源を切ったら消えると思います。 これらの命令を使う前に、INIT &#8220;EMM:&#8221;命令でデバイスを初期化しておく必要があるようです。こうすることで78クラスタ分の領域が確保されるようです。（1クラスタって4KBbyteくらい???） ここまでは320KByteメモリボードの話です。 非純正品の1MByteメモリボードは、BIOS/Hu-BASICのアドレスチェックにより、320KByte以上の領域は扱うことが出来ません。そこでボード側で1MByteのメモリを3つの320KByteの領域に分割してアクセス出来るようにDIPスイッチで切り替えが出来るようになっているようです。 ※上記の記事を書くにあたり、Ｏｈ！石さんからご助言をいただきました。ありがとうございます。]]></description>
		<wfw:commentRss>http://www.retropc.net/mm/archives/1809/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BUBCOM80のDSUBコネクタ</title>
		<link>http://www.retropc.net/mm/archives/1802</link>
		<comments>http://www.retropc.net/mm/archives/1802#comments</comments>
		<pubDate>Mon, 16 Apr 2018 12:43:31 +0000</pubDate>
		<dc:creator>moriyan</dc:creator>
				<category><![CDATA[RETROPC]]></category>

		<guid isPermaLink="false">http://www.retropc.net/mm/?p=1802</guid>
		<description><![CDATA[BUBCOM80の正面には2つのDSUB端子があります。 過去の書籍・雑誌情報によると、ジョイスティックが接続できるということはわかっていたのですが、接続可能なジョイスティックの種類や端子の信号が不明でしたので調べてみました。 結果的には「いわゆるATARI規格」でした。 ※国産マイコンのATARI規格については、こちらのページに詳しく書かれています。 いわゆる「ATARIジョイスティックポート」の変遷についてまとめてみる 手持ちのPC-6001用ジョイスティックを接続してみたところ、そのまま使えました。BASICから見た端子の用途は以下のようになります。 1 UP 2 DOWN 3 LEFT 4 RIGHT 5 不明 6 TRIGGER 1 7 不明 8 COMMON 9 不明 正面からみて左がJOYSTICK1,右がJOYSTICK2です。1と2はBASICでの指定番号です(0がキーボードのカーソルキー)。 5,7,9番ピンが不明で、基板裏面を様子では未接続に思えます。もしかすると本家ATARI規格のようにアナログ信号の入力に対応している可能性があるのかもしれませんが未調査です。 PC-6001やX1のように汎用的なI/O端子としての利用もできる可能性もありますが未調査です。 BASICからは、STRICK命令を使うことで8方向の入力を1-8の数値で読み取れます。STRIG命令でトリガーボタンの状態が0か１かで読み取れます。PC-6001と同じですね・・・って、同じMicrosoft系のBASICだからでしょうか。それとも、海外のATARI規格のコネクタを搭載したマイコンのBASICと揃えたのでしょうか。その辺の経緯はマイコン史研究家にお任せしたいと思います。 下のキャプチャ画像だとBASIC起動時のメッセージが1982年になっていますが、後に発売されたROM版BASICで年表記も改定されたのかもしれません。 一応、補足しておきますが、ATARI規格という言葉はBUBCOM80の書籍・雑誌資料には出てきていません。もしかするとBUBCOMのマニュアルには記載があるかもしれませんが、未所有なので不明です。 また、PC-6001のマニュアルやカタログでもATARI規格という言葉が使われていません。私が知っている範囲では、X1のカタログでATARI規格という言葉が登場しています。]]></description>
		<wfw:commentRss>http://www.retropc.net/mm/archives/1802/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>BUBCOM80の解析</title>
		<link>http://www.retropc.net/mm/archives/1785</link>
		<comments>http://www.retropc.net/mm/archives/1785#comments</comments>
		<pubDate>Sun, 08 Apr 2018 02:50:12 +0000</pubDate>
		<dc:creator>moriyan</dc:creator>
				<category><![CDATA[RETROPC]]></category>

		<guid isPermaLink="false">http://www.retropc.net/mm/?p=1785</guid>
		<description><![CDATA[BUBCOM80の実機をお借りする機会を得ましたので、とことん調べてみました。 実機の写真はこちらにUpしてあります。 Googleフォト &#8211; BUBCOM80 本体内の主要なICは以下の通りです。 名称 用途 SHARP Z80A CPU NEC D8257C-5 DMA MB471 8bitラッチ付き3ステート出力バッファ M8008A LX11 謎 MB8863H 通信用?RS-232C? NEC D3301D-2 CRTC SHARP Z80-CTC タイマ お借りしたBUBCOM80は、電源投入ですぐにBASICが起動するようになっていました。本体基板の左上隅にBASIC用ROMが搭載されていると思われるボードがありましたが、ROMが基板に直付けされていて、その基板自体も取り外しが難しく、詳細は不明です。 本体起動直後は、起動用ROM(MB8516)のプログラムが各種初期化処理を行ってから、起動デバイスの検索と起動処理を実行しています。ROM BASICの起動シーケンスは、ROM BASICの有無確認、I/O空間経由でROM BASICをRAMへ転送、RAM上のBASICを起動という流れになっています。 MB8516は2716互換のEPROM(2KByte)でしたので、手持ちのROMライタで吸出しが可能でした。また、別途用意したMB8516を使って自作プログラムの書き込みと起動確認もできました。 ROM BASICはハード的な吸出しは出来ませんでしたが、BASIC上からアクセスする方法が判明したので、吸出しをしました。（吸出しプログラム自体は簡単なものですが、その後のコンバートが面倒なので非公開です） ROM BASIC自体のサイズは0x9C00byteのようです。 BASICの解析はしていません。国会図書館にあったBUBCOM80のBASICの解析本によると、0000-F1FFがBASIC本体とプログラムエリア、F200からがVRAM、FDB8からFFFFがBASICのワークエリアのようです。 いくつかのBASICの命令を実機で実行してみた結果を録画してYOUTUBEにUpしました。 Z80周りの信号線の様子も見てみました。 CPUには4MHzが供給されています。NMIとWAIT信号は変化がありませんでした。 BUSREQが約500us毎に発生しています。下のキャプチャでは500us毎の塊になっていますが、拡大すると細かなパルスで構成されています。用途は不明です。 INT信号は約10004us(10.004ms)毎に発生しています。タイマ割り込みかもしれませんが、こちらも用途は不明です。]]></description>
		<wfw:commentRss>http://www.retropc.net/mm/archives/1785/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>X1 BASIC ROM(CZ-8RB)</title>
		<link>http://www.retropc.net/mm/archives/1760</link>
		<comments>http://www.retropc.net/mm/archives/1760#comments</comments>
		<pubDate>Mon, 01 Aug 2016 13:30:48 +0000</pubDate>
		<dc:creator>moriyan</dc:creator>
				<category><![CDATA[RETROPC]]></category>

		<guid isPermaLink="false">http://www.retropc.net/mm/?p=1760</guid>
		<description><![CDATA[X1用のBASIC ROMボード(CZ-8RB)についてあれこれと調べてみましたので、以下のリンクからどうぞ。 X1 BASIC-ROM(CZ-8RB)]]></description>
		<wfw:commentRss>http://www.retropc.net/mm/archives/1760/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YAMAHA YISの実機写真</title>
		<link>http://www.retropc.net/mm/archives/1746</link>
		<comments>http://www.retropc.net/mm/archives/1746#comments</comments>
		<pubDate>Tue, 12 Jan 2016 14:30:27 +0000</pubDate>
		<dc:creator>moriyan</dc:creator>
				<category><![CDATA[RETROPC]]></category>

		<guid isPermaLink="false">http://www.retropc.net/mm/?p=1746</guid>
		<description><![CDATA[ある方から、YAMAHA YISの本体とキーボードをお借りできましたので、とことん写真に収めてみました。 YAMAHA YIS写真集 以前、「ヤマハYIS」というタイトルでYISについて調べたことをまとめましたので、記事内容と比べながら写真を見ると、ハードの理解が深まると思います。 お借りした本体は4枚のボードがささっていたので、PU-1-20です。 以前調べたとおり、外部の映像出力は映像処理用のカードではなく、DDAカードから出力されていましたが、映像処理用のカードにも2つの外部出力端子がありました。（用途不明） キーボードにはスピーカーとボリュームらしきものがありました。 起動用のOSがないのと、不用意に通電したくなかったので動作は未確認です。]]></description>
		<wfw:commentRss>http://www.retropc.net/mm/archives/1746/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FX-9000P分解写真</title>
		<link>http://www.retropc.net/mm/archives/1741</link>
		<comments>http://www.retropc.net/mm/archives/1741#comments</comments>
		<pubDate>Sat, 05 Dec 2015 09:46:38 +0000</pubDate>
		<dc:creator>moriyan</dc:creator>
				<category><![CDATA[RETROPC]]></category>

		<guid isPermaLink="false">http://www.retropc.net/mm/?p=1741</guid>
		<description><![CDATA[FX-9000Pを分解する機会を得られたので写真を撮ってみました。 Googleフォト:FX-9000P分解写真 内部の基板が破損しているため起動しません。2つのROM（4Kbyte+8KByte）は直付けなので、剥がしてから吸い出ししてみようと思います。]]></description>
		<wfw:commentRss>http://www.retropc.net/mm/archives/1741/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ArduinoでMSXカートリッジを読み出してみる</title>
		<link>http://www.retropc.net/mm/archives/1730</link>
		<comments>http://www.retropc.net/mm/archives/1730#comments</comments>
		<pubDate>Sun, 08 Nov 2015 07:04:51 +0000</pubDate>
		<dc:creator>moriyan</dc:creator>
				<category><![CDATA[RETROPC]]></category>

		<guid isPermaLink="false">http://www.retropc.net/mm/?p=1730</guid>
		<description><![CDATA[最初に書いておきますが、ArduinoでIOエキスパンダICを使うのが主な目的で、読み込むカートリッジはメガロムとかではなくて32KByteのものです。 MSXのカートリッジは16bitのアドレス線と8bitのデータ線と何本かの制御線を使って読み込むことができます。一方、ArduinoのI/Oポートはボードサイズの割には本数が多いのですが、アナログ/デジタル兼用だったりデジタル14本で16bitまとめて扱えなかったりと、直結するには少しだけ面倒です。 そこで、MCP23017というICを使って、ArduinoのI/Oポートを増やします。 MCP23017は秋月で1個120円程度で売っています。 詳しい使い方は秋月の商品ページにあるデータシートを眺めてみるのがいいと思います。英語ですが、機能の割にはArduinoのライブラリが揃っているので使い方は単純です。 あと、製品名で検索すると、実際に回路を組んでいる方のページがいくつかヒットします。こちらのページ→ 素子：Ｉ／Ｏエキスパンダ　ＭＣＰ２３０１７に機能の詳細が書かれています。 ざっくりまとめると、ArduinoにMCP23017をつなげると、2本の制御線で16本の入出力ピンを扱えるようになるということです。便利ですね。唯一の欠点は、2本←→16本という変換が入るので、入出力の速度が遅いということです。 データシートに出て来る単語で理解しにくかったのがBANKです。これについて説明します。 MCP23017は、16本のI/Oポートがありますが、内部的にはPORT-AとPORT-Bの2つの8bitに別れていて、I2Cを通したデータのやり取りは8bit単位です。データの読み書きはMCP23017のレジスタを使うのですが、レジスタは8bitサイズになっています。例えば、16Bitのデータを読み取りたい場合は、「読み取り先レジスタにPORT-Aを指定→データ読み取り→読み取り先にPORT-Bを指定→データ読み取り」という処理になりますが、I2Cでのやり取りは遅いので、出来るだけ信号のやり取りを減らしたいのです。 そこで、MCP23017にはシーケンシャルモードというものがあり、このモードにしてから、読み書きレジスタを指定してからレジスタから読み/書き込みをすると、自動的に読み書き対象のレジスタ番号が+1されるようになって、「読み取り先レジスタにPORT-Aを指定→データ読み取り(PORT-A)→データ読み取り(PORT-B)」でレジスタ指定の処理を減らせるようになります。 ここでMCP23017のレジスタ一覧をみてみると、BANK=0の時は、PORT-A(GPIOA)とPORT-B(GPIOB)のレジスタ番号は隣り合っているので、PORT-AとPORT-Bを連続して読むことが出来るわけですね。 一方、BANK=1の時はというと、レジスタ番号を並び変えて読むとわかるように、PORT-Aに関するレジスタとPORT-Bに関するレジスタが分離した並びになるので、PORT-A/PORT-Bのどちらかを一括して設定する時などに便利です。 BANKの切り替えは、IOCONレジスタという、MCP23017のモードを切り換えるレジスタを操作します。 シーケンシャル動作が不要で、常に同じPORTからデータを読みたいのであれば、バイトモードに切り換えます。電源投入時のデフォルトではシーケンシャルモードのようです。 ■ ArudinoとMCP23017をつなげる 基本回路は単純です。 ArduinoのA4,A5端子をI2C用に使っています。2個のMCP23017はI2Cバスに繋げるだけでよいので配線も単純です。2個のMCP23017を識別するためにアドレスを電源とGNDにつないでアドレスを固定しています。あとは、MCP23017のI/Oピンにデバイスを繋げるだけです。 ArduinoからMCP23017を扱うには、I2C通信のプログラムをわざわざ書くまでもなく、ArduinoにはI2Cのライブラリが含まれていますし、ネットで探すと、MCP23017の制御ライブラリがあります。 https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library ページ右端にあるDownload ZIPをクリックしてZIPファイルを展開し、Adafruit_MCP23017というフォルダを作ってファイル一式を入れて、そのフォルダをArduinoがインストールしてあるフォルダにあるlibrariesへと移動します。私のPCでは、Arduino-IDE\libraries\Adafruit_MCP23017\です。 ライブラリのファイルを移動してから、ArudinoのIDEを起動すると、メニューのスケッチ→Include LibraryにAdafruit_MCP23017という項目が増えているはずです。 Adafruit_MCP23017のZIPファイルにはボタンとLEDを使ったサンプルプログラムが含まれているので、Lチカさせて動作確認するとよいかもです。 ■ Adafruit_MCP23017を拡張する Adafruit_MCP23017にはMCP23017を扱うための関数が用意されていますが、ちょっと物足りなかったので勝手に2つほど拡張して、8bit単位での出力関数を追加しました。（今みると関数名と引数がイマイチですね・・・） Arduinoのライブラリの仕組みがわかってないのですが、これってC++なんでしょうか。 Adafruit_MCP23017.cpp void Adafruit_MCP23017::pinMode8(uint8_t p, uint8_t d) { writeRegister(p, d); } void Adafruit_MCP23017::writeGPIO(uint8_t p, uint8_t a) { Wire.beginTransmission(MCP23017_ADDRESS &#124; i2caddr); if (p == 0) wiresend(MCP23017_GPIOA); else [...]]]></description>
		<wfw:commentRss>http://www.retropc.net/mm/archives/1730/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MSXのゲーム ガイアとはなんだったのか</title>
		<link>http://www.retropc.net/mm/archives/1721</link>
		<comments>http://www.retropc.net/mm/archives/1721#comments</comments>
		<pubDate>Tue, 06 Oct 2015 13:43:56 +0000</pubDate>
		<dc:creator>moriyan</dc:creator>
				<category><![CDATA[RETROPC]]></category>

		<guid isPermaLink="false">http://www.retropc.net/mm/?p=1721</guid>
		<description><![CDATA[ガイア(GAIA)はMSXで動くゲームです。数あるMSXゲームの一つなのですが、出回りが少なかったからか、昔から入手しにいゲームだったようです。もちろん私も遊んだ事がありません。 広告やパッケージデザインの面白さもあってか、ガイアを求める（一部の）熱狂的な方々が現れ、その方々の声が面白くもあり、またそれに便乗する人も現れ(ボクもそうですネ)、「はたしてガイアは本当に実在するのか？！」みたいな、ちょっとした悪のり感があったりもします。 無い無い騒いでいたら、むしろ世間評価での希少性が高まって、それほど貴重なら手放すまいと思うコレクターさんや、金ならいくらでも出すコレクターさんが現れてくるので、より入手できなくなると思うのですが（笑） このあたり、実際のゲーム自体の評価ではなく、後の騒がれ方で（一部で）価値が高まり（一部で）伝説と化してしまったというのが面白い話だと思います。個人的には、プレステ2のびっくりマウスを思い起こさせます。2chのスレ、まだ続いてて、毎日書き込みされてるんですよ。 それはともかく、ガイアが実在するのかどうかといったら、それはまぁ、これまでネットに上がっている情報だけでもあると断言できるのです。 例えば広告ですが、「往訪、サムソンSOFT。」に広告の画像があります。 しかし、広告を出したはいいけど、ゲームが完成せずに発売に至らなかった、そんな話はゲーム業界にいくらでもあるので、実在するとは限らないのです。 まだ情報はあります。同サイトでは、MSXマガジンの紹介記事が掲載されていました→「奇しくも、同じページに。」 この画面、まさにMSXですね！画面制御ICにTMS9918を使ってたらMSXじゃなくても同じような画面になりますが。 しかし、ゲーム画面が雑誌に紹介されたけど、ゲームが完成せずに発売に至らなかった、そんな話はゲーム業界にいくらでもあるので、実在するとは限らないのです。 そこで次の資料を。MSX MAGAZINE 1986年9月号INFORMATIONコーナーではガイアの遊び方が説明されているどころか、ページ隅にはガイア開発・販売元のサムスンSOFTの方が直々にコメントされているのです。 この記事にちりばめられた数々のキーワードから、このゲームの内容をうかがい知ることができます。パズルでありシューティングでありPRGでもあるこのゲームは、ヘルメット、盾、鍵、タイマー、オイル、爆弾といった6つのアイテムを駆使し、落下物と動く壁に注意しながら、画面右下にあるエネルギーバルブから充電して右上のドアに向かう、そんなゲームのようです。「うらガイア」とはいったい・・・！？ もう、これだけの情報があったら、想像だけでガイアを移植できそうですし、かつて私も妄想だけでガイアを移植しようと思ったりもしましたが、作っているうちに『ガイア、これは人類が手を出してはいけない領域なのでは・・・』と恐ろしくなり手を引きました。まぁ、ドット絵を描くのが面倒になっただけなのですが。誰かドット絵を描いてください。あとBGMも。いやそもそもMSXのガイアってBGMあるんですかね？Mマガのレビューには「しみじみと静かなアクションゲームでーす」って書いてあるのでBGMは無いかもですね。 それはともかく、当時、ガイアはどのような評価を受けたゲームだったのでしょうか？その答えの一つがログイン1988年5月号にありましたので、引用します。 おぉなるほど、当時から幻扱いだったことが読み取れますね、って、発売から2年後の記事なんですけどね。 肝心の評価は手厳しいというか、私がこのレビューから読み取ったガイアの感想は「退屈ゲーム」だったんではなかろうかと。たまにありますね、つまらないとかわかんないじゃなくて、退屈なゲーム。途中でもういいですー・・・って思っちゃうゲームありますね。 2015年の今、面白いとか面白くないとかいう観点でレトロゲームを評価すると、各方面から大人気ないとか、遊んでもいないゲームを想像で評価するなとかおしかりを受けそうですが、この先、このガイアを実際に遊べる機会は無さそうなので、想像で自己レビューするくらいはお許しください。 ここまできたらもうガイアは実在すると言えるでしょう。 こうなると、むしろ実在しない方がネタとして面白いわけでし、実際にガイアの動画がネットにでもアップされでもした日には「へーこういうゲームだったんだー」の一言で30年来の幻が一瞬で終わってしまうでしょうから、幻のゲームであるガイアの伝説を守るためにも「ガイアがどのようなゲームなのかはいまだ謎である」といった記録だけをゲーム史に刻んで頂きたいものであります。 そのほか参考資料：春のガイア祭2012 検索向けキーワード：ガイアの紋章、ガイア幻想記、ガイアが俺にもっと輝けと囁いて以下略]]></description>
		<wfw:commentRss>http://www.retropc.net/mm/archives/1721/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PC-6001mkII版ハイドライドをSMC-777に移植</title>
		<link>http://www.retropc.net/mm/archives/1675</link>
		<comments>http://www.retropc.net/mm/archives/1675#comments</comments>
		<pubDate>Tue, 07 Jul 2015 12:27:18 +0000</pubDate>
		<dc:creator>moriyan</dc:creator>
				<category><![CDATA[PC-6001]]></category>
		<category><![CDATA[RETROPC]]></category>

		<guid isPermaLink="false">http://www.retropc.net/mm/?p=1675</guid>
		<description><![CDATA[移植しようとしたきっかけとか、まるで無くて、なんとなーく移植してみたくなったので移植しました。オモチャ（SMC-777）が手元にあったから、という以外の理由が思い当たらず、趣味のプログラミングとして楽しんだというところです。かかる費用は自分の時間だけですし。 ■ まずはトーフの表示 SMC-777の基本スペックはWikipediaでもみてください（間違いもありますが）。 SMC-777は仕様がオープンなマイコンです。というのも、付属のマニュアルにはハードウェアの回路図から各種設定項目まで全てが記載されています。 VRAMに何かを書き込みたければ、マニュアルを読めば手順がわかりますし、それなりに丁寧に説明がされています。だからといって、簡単に絵が描けるかというと、それほど甘くはありません。 グラフィック画面のスペックは、320×200ドット16色、もしくは640×200ドット4色です。今回は320×200ドットの画面モードを使います。その場合のVRAMアドレスはこのようになっています。 1ドットは16色なので、1ドットあたり4ビット、1バイトには2ドット分の情報が詰まっていることになります。となりのバイトは2ドット隣になるので、1ドット単位で絵を動かすのが苦手（面倒）ということになります。もっとも、この時代のマイコンで1ドット単位で絵を動かす事は無理要求ではあります。 問題はVRAMのアドレスです。 2ドット隣は2バイト先のアドレスなので、1バイト当たりの座標は一致しているのですが、1バイト(2ドット)書き込む毎にアドレスを+2しなければならないので、横方向にドットを連続して打つコストが高めです。 縦方向は+$1000です。ただし、8ドット毎に+$A0されて、ついでに上位2バイトは$00にリセットされます。8×8ドットのものを描くのであればさほど苦労しませんが、8ドット目をまたぐ場合、ちょっと面倒なことになります。 面倒さはまだ続きます。 VRAMがどこにあるかというと、I/O空間にあります。SHARP X1と同じですね。VRAMサイズが32KByteで8ビット幅では足りないので、アドレスバス16ビットを使ってアクセスします。OUT (C),A命令を使うと、Cレジスタがアドレスバス下位に、Bレジスタがアドレスバスの上位に乗るというZ80の仕様を使ったハードウェア構成です。 ただし、SMC-777では、単純にZ80のアドレスバス16ビットがVRAMのアドレスバスに素直につながっているのではなく、上位8ビットと下位8ビットが入れ替わって接続されています。Cレジスタを固定してOUT (C),A → INC B → INC B → OUT (C),A&#8230;というように連続してVRAMに書き込みが出来るという、なんとなく効率よさそうな仕様なのですが、VRAMの並びが変則的なので、実際にはそんなに甘くありません。 まず、横方向については、Y座標が9の時とかでは、横方向のアドレスがBレジスタに収まらなくなり、桁あふれが起きます。つまり、INC BCのCが$FFを越える場合があるのです。INC BCはCレジスタの桁上がりが自動的にBレジスタに加算されますが、SMC-777では、BレジスタとCレジスタが逆並びでVRAMにつながっているので、INC CBという命令が欲しくなります。当然、そんな都合のいい命令はありません。 縦方向は先にも説明したとおり、Y+1ごとに+$1000だけども、8ドット毎に$A0され、尚且つ、+$1000されない(=$A0-$1000される)という条件になります。 このように線を1本描くだけでもレジスタのやり繰りが大変なのですね。Z80アセンブラ最適化ゲームとしてはなかなか面白いのかもしれませんが。 こういう仕様はカタログのスペック表からは読み取れませんから、よくあるマイコンスペック比較が無意味なのがよくわかります。 そんなSMC-777のハードウェア仕様を頭に入れて、VRAMに8×8ドットの白い四角が描けるようになれば、あとは応用でレンガ画像を敷き詰められるわけです。 この画像だけで既にハイドライドっぽい！始まりの予感！ 基本的にPC-6001mkII版のハイドライドは8×8ドットのパターンを並べて描画するようになっています。16×16ドットキャラや、縦線やボックスフィルのようなドット単位での描画処理もありますが、最初に8×8ドットが描ければ、そこから一気に移植が進むようになります。 美しい・・・。 PC-6001mkIIとSMC-777は共に16色(P6mkIIは黒と透明黒があるので見た目は15色)が表示できますが、パレットは並びだけでなく色自体が違います。 上がPC-6001mkIIのパレットで下がSMC-777です。SMC-777の方が渋い色がありますね。これを見比べて、なんとなく似た感じの色を割り当てました。 SMC-777Cのパレット機能か、SMC-777用のパレットボードを装着してパレット機能を使えば、PC-6001mkIIと同じ色に出来ると思うのですが、残念ながら所有していないのでした。 ■ メモリが足りない PC-6001mkIIの16色(見た目は15色)モードでは、スクリーンのメモリ上の解像度が160&#215;200ドットで、表示時に320&#215;200へと横方向に2倍化されます。 それに対して、SMC-777は16色で320ドットの表示が出来ますから、横方向解像度はSMC-777の方が高いということになりますが、それが良いかと、そうでもありません。単純に考えても、画像のデータ量が2倍になります。PC-6001mkII版のハイドライドは、オンメモリ動作で、グラフィックデータが30Kバイト弱ほどあり、それ以外のプログラムやマップデータでほぼRAM 64Kバイトを使い切っていますから、画像データが2倍になると64KバイトのRAMには収まらなくなります。 ハイドライドでは全ての敵が一度に出ることは無く、多くても一画面あたりの敵は4種類程度ですから、データの圧縮を使ってやりくりする事はできます。ただ、そうなると320ドット用にドットを打ち直すことになりますし、PC-6001mkII版がSMC-777を侵略、じゃなかった、PC-6001mkII版を素直に移植するのとは違う話になるので、PC-6001mkIIの解像度を再現する事に決めました。 つまり、1ドット単位で描くのではなく、2ドット同時に同じ色を書き込むということで横2倍化にしています。幸いにも、SMC-777のVRAMは16色4ビット構造なので、1バイト書き込むと2ドットとして画面に表示されますから都合が良いです。 ざっとまとめると、メモリ上の画像データは横半分状態になっているので、描画ルーチンで2倍化、つまり、4ビットデータを8ビットに広げています（敷衍化？）。例えば、$12を$11,$22に展開してVRAMに2バイト書き込むのですね。 余裕があったら、PC-8801版の8色グラフィック画像に差し替える案も考えていたのですが、そんな時間的な余裕はなく、あと、SMC-777のVRAMは垂直型16色4ビットなのに対してPC-8801は水平型8色で、動的な画像変換が重そうだったのでやめました。 ■ 移植話その1 PC-6001mkII版のプログラムコードは昔からちょっとずつ読み進めてて、7,8割くらいは解析してあります。一部の敵の動きのアルゴリズムを読んでなかったり、PC-6001mkII版ハイドライドのプログラムには自己書き換えがあったりもして、まだ知らないコードもあるのですが、PC-6001mkIIとSMC-777のCPUはどちらもZ80系ですし、RAMも64Kバイトなので、「I/O周りを整えれば同じように動作するでしょ」くらいの気楽さでPC-6001mkIIのコードをSMC-777にゴッソリ持ち込んでいます。 それに、元のハイドライドのプログラムが描画処理とそれ以外が比較的分離されていたので、移植しやすかったです。ハイドライドの神様に感謝です。 移植作業をもう少し具体的に説明すると、PC-6001エミュレータでハイドライドを起動して、テープロードが完了したゲーム開始前の状態のRAMをファイルに落として、必要な箇所だけを切り出して、それを逆アセンブルして、さらにそれをZ80のアセンブラ（今回はpasomoというアセンブラを使いました）でSMC-777のバイナリにして、D88形式のファイルに書き込んでいます。 D88形式のファイル生成には、bookwormさんのd88toolを使わせてもらっています。ただ、SMC-777エミュレータで扱えるD88形式はヘッダが異なるので、その辺は自作ツールで変更しています。 [...]]]></description>
		<wfw:commentRss>http://www.retropc.net/mm/archives/1675/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>X1のデジタルRGBをFRAMEMEISTERにつなぐ</title>
		<link>http://www.retropc.net/mm/archives/1618</link>
		<comments>http://www.retropc.net/mm/archives/1618#comments</comments>
		<pubDate>Fri, 31 Oct 2014 10:16:20 +0000</pubDate>
		<dc:creator>moriyan</dc:creator>
				<category><![CDATA[RETROPC]]></category>

		<guid isPermaLink="false">http://www.retropc.net/mm/?p=1618</guid>
		<description><![CDATA[X1のデジタルRGB出力を今時のテレビで観たい・遊びたい人向けの回路です。 X1のデジタルRGBをFRAMEMEISTERにつないでみる]]></description>
		<wfw:commentRss>http://www.retropc.net/mm/archives/1618/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
