X1turbo Agency

X1turbo Agency ブログ

8bitコンピュータ X1turboの探求サイト

X1turbo Agency

X1版 ドラゴンクエスト1

X1版 ドラゴンクエスト

1986年のあの日。
FC版ドラゴンクエスト1をプレイして、ああ、これが自分のマシンで動作したらどんな感じなんだろうか?
と思う人も多かったのではないでしょうか。

その熱気に当てられて作ったのが、X1版のドラゴンクエスト1。
プログラムよりもその素材(地形データ,絵素材,セリフ,BGM)を用意するのがはるかに大変でした。
BGMは友人に頼んで耳コピしてもらってたけど、とてもマネできないと思いました。
現在と違って楽譜も出回っていない頃だったので、とても大変でした。

途中で時間が無くなってしまって、完成しなかったんだけど、せっかくなので残しておく。

↓は動画を撮ってyoutube,ニコニコにアップしたもの。


【勝手に移植】ドラゴンクエスト1をSHARP X1に移植してみた

【勝手に移植】ドラゴンクエスト1をSHARP X1に移植してみた。 - ニコニコ動画

f:id:x1turbo_agency:20180603125128p:plain f:id:x1turbo_agency:20180603125149p:plain f:id:x1turbo_agency:20180603125159p:plain f:id:x1turbo_agency:20180603125211p:plain

映像表示について

X1の映像表示について

ご存じの通りX1/turboはデジタル/アナログRGB出力があり、アナログRGBの場合でも15KHz/24KHzの2種類がある。
純正ディスプレイ(CZ-600D)等であれば表示も可能だが、経年劣化もあり液晶ディスプレイの置き換えが必要になる。
2018年に発売されている液晶ディスプレイの多くは、15KHz,24KHzの表示に対応しておらず、
解像度 640x480以上の30KHzが中心になっている。

色々と試してみたが現在は電波新聞社のXPC-4を使用して液晶ディスプレイに表示している。
XPC-4はアナログRGBをダウン/アップスキャンしてS/コンポジット/D端子に出力できる変換装置。
X1(15/24KHz)や、D端子(コンポジット D2/D3/D4/D5 480p/525p/1080i)をDVI-Dやコンポジットに変換できる。

フレームバッファ内臓でアップスキャンとダウンスキャンのどちらにも対応している。
またファームウェアのバージョンアップで15KHzも対応しているので X1turboも対応できる。
コンポジット/S端子以外は大体変換して出力が可能なので、昔のPCとかD端子の家電とか色々接続できてとても便利。

設定はリモコン/本体で可能だが、たまに自動検出に失敗して表示が崩れる事がある。
その場合は背景色を青色等にして自動検出を行うと正常に表示されるようになる。

f:id:x1turbo_agency:20180527141756j:plain

X1turbo Remote Monitor

X1turbo Remote Monitorとは

X1turbo Remote Monitor は、X1turboとWindowsPCをシリアルケーブルで接続して制御を行うツールです。

X1turboでは RS232Cを使って通常9600Bpsで通信を行いますが、任意のボーレート設定が可能な
USBシリアル変換ケーブルを使用する事で9600Bps以上の速度で通信できます。

X1turbo Remote Monitor の特長

  • BASIC(CZ-8FB02/3)からのモニター起動
  • 起動ディスク作成
    • 以降は起動ディスクからモニターが起動できます。
    • S-OS U.C.様謹製 CZ-8EB4ブート作成
  • 最大62500Bpsでの通信設定が可能
  • フロッピーディスク(2D/2DD/2HD)の吸い出し
    • v1.1.3以降 データ圧縮による高速化
  • フロッピーディスク(2D/2DD/2HD)/EMMへの書き出し
    • 出力トラック指定可能 (v1.1.8以降)
    • EMM0(指定アドレスへの)の書込み (v1.1.8以降)
  • 実行ファイル指定 (v1.1.8以降)
    • 指定ファイル(.bin/.2D/.d88)をメインメモリに転送して実行可能。(v1.1.8)
  • メモリダンプ
  • ディスク読出し,通信時にデータ圧縮を行って転送時間を短縮。(v1.1.3以降)
  • ASCIIフォント,漢字フォント,BIOS ROMの読出し機能 (v1.1.5以降)
  • ディスクIDダンプ
  • 背景色変更

※ ディスク作成ができれば、X1側はキーボード操作を行わなくても済むようにしています。

スクリーンショット

X1turbo Remote Monitor のスクリーンショット

X1turbo Remote Monitor v1.2.1

ダウンロード・更新履歴

日付 バージョン ファイル
2022/12/18 Ver 1.2.2 x1_remote_monitor_v122.zip
・d88ファイルの種類によっては、読込時に例外が発生していたので対応を行いました。
2022/11/19 Ver 1.2.1 x1_remote_monitor_v121.zip
・FD書込み/FD読込みの安定性を向上と、書込み時のVerify機能を追加しました。
2022/10/22 Ver 1.2.0 x1_remote_monitor_v120.zip
・ディスク 2HD書込み時に77トラック以上のデータだとアプリケーションが落ちてしまっていたのを164トラックまで拡張しました。
2021/05/25 Ver 1.1.8 x1_remote_monitor_v118.zip
・ディスク書き出しにトラック指定を追加しました。
 プログラムを転送/実行機能を追加しました。
2019/07/28 Ver 1.1.6 x1_remote_monitor_v116.zip
・起動ディスク作成時に2HD版を指定できるようにしました。
 他機種作成用に 2HD形式のd88ファイルも同梱しました。
2018/07/07 Ver 1.1.5 x1_remote_monitor_v115.zip
・ROM読出し機能を追加しました。
 フォント(8x8,8x16,漢字),BIOSを読出してファイルに保存する事ができます。
 詳しい説明は「ROM読出し」を参照のこと。
2018/06/16 Ver 1.1.3 x1_remote_monitor_v113.zip
・ディスク読出し時、データ圧縮を行う事で高速化しました。
 25%程度速くなっているようですが、もちろんディスク内容に依ります。
2017/09/24 Ver 1.1.0 x1_remote_monitor_v110.zip
・読出し時にセクタエラー等が発生しても読出しを続行するように修正しました。
 (ディスクIDが読めないトラックがあった時は中止しています)
・ディスクID(CHRN)のダンプ機能を追加しました。
・背景色を黒/青から選択できるようにしました。主に画像調整用です。
・起動ディスクイメージに通常と最小の2種類を用意しました。
2016/05/15 Ver 1.0.3 x1_remote_monitor_v103.zip
・複数のシリアルポートが使用可能な場合に、指定と異なるポートを使用する不具合を修正しました。
・起動ディスクイメージを付属しました。
 ディスクイメージが作成可能なマシンがあれば、このファイルを使って起動ディスクを作成可能です。
・メモリダンプ時にアドレス表示を追加しました。
Windows7(32bit) , WindowsXP(32bit)の動作確認を行いました。
・初期D88ファイル(最大トラック数 160)の読み込みに対応しました。
2016/04/29 Ver 1.0.0 x1_remote_monitor_v100.zip
・公開バージョン

動作環境

  • WindowsPC

    • Microsoft Windows7/8.1 (64bit), XP (32bit)
    • .NET Framework 3.0以降

      • .NET Framework 3.0は必要であればインストールして下さい。
    • シリアルポート使用可能機種または、USBシリアル変換ケーブルを使用。

      • WindowsXPではオンボードのシリアル9Pでの動作チェックを行っています。
      • Windows7 はノートパソコンでのUSBシリアルでの動作チェックを行っています。
    • おススメ: USBシリアル変換ケーブル BUFFALO Avel SRC06-USB

  • X1turbo/II/III/Z/ZII/ZIII (使用アドレス SIO 1f90h-1f93h, CTC 1fa0h-1fa3h)

  • シリアルクロスケーブル

  • サンワサプライ KRS-L925-2K 等のインタリンクケーブルが最適ですが、
    オス/メスが逆なので、ジェンダーチェンジャを取り付けています。
    別ページでも書きましたがインタリンク対応ケーブルでない通常のクロスケーブルでも
    高速通信は成功していました。

内部でハードウェアフロー制御は入れてあるのですが、処理の前後にウェイトを入れている事もあって、
特段フロー制御は発生していないようです。

動作確認

使い方

インストール


zipファイルを展開し、フォルダを任意の場所に配置してください。
内部にある X1RemoteMonitor.exe を実行することで利用できます。
アンインストールする場合は、フォルダを削除して下さい。
レジストリは使用していません。

基本動作


  • 接続テスト Monitorにテストコマンドを送って、正常にコマンドがやりとりできるかどうかをチェックします。
  • ポート 通信を行うポート(COM1~COM10等)を指定します。
    シリアルポートを持っていないマシンではツール自体が使用できません。
  • ボーレート 9600(デフォルト)から、設定可能なボーレートに変更できます。
    Windows側でボーレートを設定すると、ボーレート変更コマンドをX1turbo Remote Monitor側に
    送信して、ボーレートを変更します。
    9600bps以外のボーレートは SRC06-USB 等の自由に速度が設定できるUSBシリアル変換ケーブルが必要です。
    現在こちらで確認が取れている最大ボーレートは、62500bps です。

v1.1.8以降では各コマンドの前後でボーレート設定を変更するように修正しました。
今までコマンドの途中でIPLリセットを掛けた場合など、Win側とX1turbo側との
ボーレートがずれると通信が正常に行われなくなっていました。
こちらを改善するために、コマンドの先頭でボーレート変更を行い、コマンドが
終了した時点で 9600bpsに戻すように修正しました。

セットアップ


[1] WindowsPCとX1turboをRS232Cシリアルケーブルで接続して下さい。

  • WindowsPC側にRS232Cポートがある場合
    • Win ⇔ X1turbo  シリアルクロスケーブルで接続。
  • WindowsPC側にRS232Cポートが無い場合 or 9600bps以上の高速通信を行いたい場合
    • Win ⇔ USB-シリアル変換 ⇔ X1turbo  シリアルクロスケーブルで接続。

[2] X1側でBASIC(CZ-8FB02/03)を起動後、下記のコマンドを実行して下さい。
 LOAD "COM:6N81RN"
 ※ LOADコマンド実行時に以下のエラーが発生することがあります。
  Reserved Future
 これはBASICの Startup.bas等の設定で NEWON命令により、RS232C関係の命令が
 削除されてしまうと発生します。
 その場合は、Startup.basからNEWON命令を削除するか、NEWON 8以降を指定すると
 RS232Cが使えるようになります。

[3] ツール側のセットアップタブ "LoaderBasicの転送" ボタンを押して下さい。
[4] 転送が成功すると、'Illegal Direct' がX1側に表示されます。その後 RUN コマンドを実行して下さい。
[5] 次に、'X1 Monitorを転送して起動' ボタンを押すとモニターを転送後、起動します。

X1 Monitor起動ディスク作成


Monitorが起動した状態で、起動ディスクを作成します。
[1] ブランクディスク(2D/2HD)をドライブ0にセットします。 (2HD指定はv1.1.6以降)
[2] ''X1 Monitor 起動ディスク作成'' を押すと、メディア(2D/2HD)指定後、起動ディスクの作成を行います。
[3] 以降はそのディスクからMonitorが起動できます。

付属の起動ディスクイメージを使って起動ディスクが作成できるのであれば、
他機種(PC88など)で作成しても問題ないと思います。

X1 Monitor再起動


X1Monitorを直接入れ替えて起動する事が出来ます。
開発用なので普段使う事は無いと思いますが、専用の機能として、
S-OS U.C.様謹製のCZ-8EB4でのROMブートに対応しました。
チェックを入れていると、CZ-8EB4にモニタを書き込み、次回からディスクレスでモニタを起動できます。

FD読出し


フロッピーディスクの吸出しを行います。
トラックのセクタ情報(256/512/1024byte)を読み取って、セクタデータを読み込みます。
混成状態のトラックでも対応しています。
通常のHuBasicやS-OS形式、ゲームで良く使われる1024byte x 5セクタの形式では問題ないですが、
同じセクタ番号が複数ある等、特殊なプロテクトがかかっているディスクには対応していません。
FD読出しの際は念のためプロテクトシールを付けておく事をお勧めします。

  • ドライブ番号(0-3)
  • メディアタイプ(2D/2DD/2HD)
    ※ 2DDを読み込む場合は本体背面またはX1turbo内部のディップスイッチで2DDモードに切り替えて下さい。
     トラック番号はチェックしていないので、2Dドライブに対して2DDアクセスを行うとオーバートラックが
     起きるので、注意して下さい。
  • トラック番号 (開始,終了)
  • 出力ファイル名 (.d88形式)
    開始ボタンを押すと、ディスクの読み取りを行います。
    セクタがエラーで読み込めない場合は、以前は停止していましたが、
    v1.1.0以降では、出力ファイルにCRCエラーとして出力して継続するようになりました。

FD書出し


FDへの書出しとEMMへの書出しの2つを行うコマンドです。

FD書出し

.2d/.d88形式のファイルを読み込み、フロッピーディスクへの書き出しを行います。
.d88形式内のファイル(1セクタ256/512/1024byte)のトラックフォーマットを行い、データを書き込みます。
.2d形式は 1セクタ 256 byte x 16セクタ@トラックのフォーマット固定です。

ある程度セクタ長が混ざった場合でも、書込みができるようにしていますが、以下のものが良く使われます。

  • 1セクタ 256 byte / 16セクタ@トラック (BASIC,S-OSなど)
  • 1セクタ 1024 byte / 5セクタ@トラック (市販のゲームなど)

セクタ番号は通常 01h~10hの範囲ですが、プロテクトのかかったディスクなどは
f6hやf7hなど、X1では通常書き込めないセクタ番号が使われている事があります。
これらのデータは正常に書き込めないと思います。

v1.1.8以降はファイルに内包されているトラック番号を参照するようにしました。
またトラック番号を指定することで、指定トラックのみ書き込む事も可能です。

メディア形式によって最大トラックが変わります。 それ以降のトラック番号に書込み可能かはドライブごとに異なります。

  • 2D 00~79
  • 2DD 00~159
  • 2HD 00~153 (154トラック以降はオーバートラック)

ディスク書込み時に Verifyを行うオプションを追加しました。(v1.2.1以降) データを書き込み後、再度トラック内容を読み出し比較します。

一致しない場合は、再度書込みを行いますが、劣化したドライブでは、 何度繰り返しても書込みやVerifyチェックが成功しない場合があるようです。

メディアやドライブによっては書込めない場合がありますので、ご注意ください。

EMM書出し

指定ファイルをEMMの指定アドレスへ書き込む機能を追加しました。
主に開発用ですが、事前にEMMへファイルを書込んでおいて、実行時に高速にデータを読み出す事が可能です。
グラフィックリソースなど、開発中は更新頻度の少ないものをEMMから読み出すようにすると便利です。

  • ドライブ番号(0-3)
  • 入力ファイル名 (.d88形式)
  • トラック開始番号,終了番号

開始ボタンを押すと、ディスクへの書き込みを行います。

プログラム実行 (v1.1.8以降)

指定したファイルをX1turboに転送して実行する機能です。
通常X1turboでプログラムを実行する場合は、FDにファイルを書込んで実行するしかありませんでした。
このコマンドはRS232C経由でプログラムを転送して直接実行することが可能です。

実行可能なファイル

以下のファイル形式が実行可能です。

  • バイナリファイル

    • ファイルを読み込むとファイルサイズを取得します。
      開始アドレスを指定するとその場所に転送して、先頭アドレスを実行します。
  • バイナリファイル (LOADM形式)

    • ファイルの先頭に、開始アドレスと、終了アドレス(-1)の4byteが追加されたファイルです。
    • この形式のファイルを作っておくと、プログラム上から起動位置を指定可能です。
  • .2D/.D88ファイル

    • ディスクイメージファイルのIPL領域を部分を取り出して、そのファイルを転送して実行します。
    • つまり、そのディスクイメージのブート部分を転送/実行できます。
    • とは言え、ブート後は元のFDを読み込みに行ってしまうので、ゲームではあまり使い道はありません。
    • S-OSやCZ-8FB01/02など、DOSをブートする事ができます。
フリーエリア

0000h~0d4ffh の領域をプログラムエリアとして利用する事ができます。
(4000h~0afffh はFDアクセス時のバッファなのでプログラムエリアとしても使用可能です)

RemoteMonitorの再起動

プログラム実行時に 0d500h~のX1turbo Remote Monitor本体を破壊しなければ、コールドスタートする事が可能です。
その場合は、プログラム終了時に 0d500hにジャンプすると、X1turbo Remote Monitorをコールドスタートします。
その後は、再度Win側と通信が可能です。

コールドスタートは、以下の初期化を行います。

  • 全パレットを透明,グラフィックプライオリティを初期化
  • CRTCを前面ボタンに合わせて設定
  • SIO/CTCを初期化
  • キーボードの割込みを無効化
  • Iレジスタを初期化
  • スタックポインタを初期化
サンプルプログラム

サンプルとしてX1用Ballsを付けておきます。
同梱の x1balls.d88を指定して起動すると Ballsが実行できます。
キーボードの 'Q'を押すとballsを終了して、X1turbo Remote Monitorをコールドスタートします。

メモリダンプ


主に検証用です。指定したメインメモリの位置から読み出します。
ファイル名が指定されている時は、ファイルへ書き出しを行います。
ファイル名の指定が無い場合は、書き出しは行われずログウィンドウへ表示のみ行います。

ID読出し


フロッピーディスクからディスクIDを読みだしてダンプします。
IDは以下の 8byte構成です。

オフセット 項目 メモ
+0 Cylinder (0-39 2D時)
+1 Head (0-1)
+2 Record (0~) いわゆるセクタ番号。
通常は 01h~10hの範囲ですが、プロテクトのかかったディスクでは
0f6h,0f7hなど,X1が本来生成する事の出来ないIDが書き込まれている事が
あります。データ自体の読出しは可能です。
+3 Num (01,02,03,04) セクタ長 00:128byte, 01:256byte, 02:512byte, 03:1024byte。
プロテクトのかかったディスクでは 06hなどのありえない値が
使われている事があります。
+4 CRC0
+5 CRC1

ROM読出し


v1.1.5以降追加された機能です。
以下のROM情報をファイルへ読み出します。

  • ASCIIフォント (8x8)
  • ASCIIフォント (8x16)
  • 漢字フォント (16x16) 第1水準,第2水準
  • BIOS ROM (32KB)

読出しを行いたいROM情報の所に、保存ファイル名を指定してください。
空欄になっている箇所は読出しを行いません。
ファイル名を指定して、'開始'ボタンを押すと、ROM情報を読み出してファイルへ保存します。

初期ファイル名は以下のようになっています。

  • ASCIIフォント (8x8)  FNT0808.X1
  • ASCIIフォント (8x16)  FNT0816.X1
  • 漢字フォント (16x16)  FNT1616.X1
  • BIOS ROM (32KB)  iplrom.x1t

TakedaさんのX1turboエミュレータのファイル名がベースになっています。

上記の漢字フォントは、漢字ROM並びでは無く、
エミュレータで使用する事の多いSJIS並びにしています。

ちなみに、文字コード変換(SJIS→JIS)は、.Net FrameworkのEncoding(50222)を使っています。

メニュー

  • 設定
    • 背景色変更 背景色の切り替え(黒/青)を行います。
      画面自動認識系のディスプレイだと画面境界が判らず表示が乱れる事があります。
      その場合は、背景色を青色にして調整を行うとやりやすいです。

不具合/トラブルシューティング

USB-シリアルで接続に失敗する

Elecom UC-SGT1などでうまく通信が出来ない事があるようです。
購入して接続テストを行っていましたが、こちらではまだ再現できませんでした。

  • バイスマネージャ > USB Serial Portのプロパティ > ポートの設定 > 詳細設定

で受信バッファ,送信バッファのサイズを最小にするとうまく行く事があるかもしれません。

電圧レベル

RS232Cの電圧レベルは ±5~15Vですが、海外製USBシリアル変換ケーブルの中には 0~+5V程度しか出ていないものもあるようです。 またUSBハブ経由よりも PCから直接出力する方が安定するようです。

謝辞・その他

ずっとこのツールを作りたかったので、実現できて一安心です。

  • X1リソースセンター 様
    制作にあたって、X1リソースセンター様で公開されている hssio を参考にさせて頂きました。
    どうもありがとうございます。
    最初はどうにかして動作できないかと色々といじっていたんですが、ウチのX1turboでは
    正常に動作しなかったので、SIO周りは別に組んでいます。

  • UME-3 様
    いつも動作確認ありがとうございます。

  • 「試験に出るX1」 祝一平
    この本には毎度お世話になっています。
    購入してからずっと読んでいるような気がします。
    それだけに祝一平氏が亡くなられた時は本当に残念でした。
    氏の考え方やユーモアに富んだ文章などは今でもたくさんのライターの方に伝わって、
    更に影響を与え続けていると思います。

X1で高速通信

X1turboで高速通信にトライ

X1turboはスタンドアロンなパソコンなので、どうにかしてネットワーク接続ができないか考えていました。

Etherボードを作って試したりしたけど機器が特殊だったので、パッケージを小さくできるRS232Cでのシリアル接続を試してみました。

X1リソースセンターさんの所で、高速通信(HighSpeedSIO)ドライバが公開されていたので試してみました。

実際に速度計測すると、ケーブルを取り換えてみても 23000bpsぐらいが限界でそれ以上は overrun error が出てしまいました。

マシン個体差があるのかも?これ以上の通信速度の実現は難しいのか…。 

USBシリアル変換ケーブル

そして、もう一つの問題。それはWindowsマシンにシリアルポートが搭載されなくなってきた事です。

レガシーなシリアルポートはそれほど使われなくなってきて、同じシリアル回線BlueToothが標準搭載されるようになりました。

出来るだけ手軽にWindows⇔X1の接続を行いたいと考えていたので、この辺りも問題でした。

その後、何年か経った時、BUFFALOのUSBシリアル変換ケーブル(''SRC06-USB'')の事を知りました。

このUSB⇔シリアルは、USBを経由してシリアルポートに接続が可能。

そして大きな特徴はボーレートが自由に設定可能な事です。

バイスのプロパティを見る限り、一見自由にボーレートが設定できるようには見えませんが、プログラムからボーレートを設定すると任意のボーレートで通信する事が出来ます。

そして実験の結果、X1で使用できる速度値(25000Bps, 62500Bpsなど)にしても通信が出来ました!

このUSBシリアル変換ケーブルを使うことで、以下の問題が解決できます。

  • USBに対応しているWindowsマシンであればX1turboと通信可能
  • 現在(2016-)でも入手可能な機材
  • 9600bps以上の高速通信

しかも検証の結果、X1turbo Remote Monitorではシリアルケーブルはインタリンクケーブル(ハードウェアフロー対応)ではなく、通常クロスケーブルでも、高速通信でのやりとりは正常に行われていました。

速度を合わせる事で、ムラ無くデータが受信できているからでしょうか?

BUFFALO SRC06-USB

ボーレートを自由に設定できるUSBシリアル変換ケーブル。

古いPCとの接続に便利なのでオススメ。

取説やサポートサイトにはその記述が無いので非常にもったいない。送信/受信バッファも4096byte設定可能。

(X1turbo Remote Monitorでは64byteに設定しています)

X1turbo接続では 62500bpsまで接続できました。

125000bpsは受信はできているけど、送信に失敗するので、まだ調査中です。

現在は後継機種として、''BSUSRC0605BS''がリリースされています。こちらでも動作するようです。

f:id:x1turbo_agency:20180520154322j:plain

USB-CVRS9

これは古くからある16550互換UARTタイプ。

転送バッファも16byteで確保できるが、ボーレートは固定で、高速転送には使えない。

f:id:x1turbo_agency:20180520154406j:plain

上記のどちらもハードウェアフローには対応しています。

ブログ開設

X1turbo Agency ブログ開設です。

 

このブログは、1980年代にシャープ株式会社より発売された、

8bitコンピュータ X1turboの探求サイト、X1turboエージェンシィです。

 

wikiでページを開いていましたが、アクセスが不安定で引越し先を探していました。

ブログ形式にする方法も模索するため、はてなブログを検証してみることにします。

 

X1turboとWindowsPCを接続して高速通信にトライしてみました。
それらを使ったモニタツール「X1turbo Remote Monitor」を公開しています。