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 のスクリーンショット
ダウンロード・更新履歴
日付 | バージョン | ファイル |
---|---|---|
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シリアル変換ケーブルを使用。
おススメ: USBシリアル変換ケーブル BUFFALO Avel SRC06-USB
X1turbo/II/III/Z/ZII/ZIII (使用アドレス SIO 1f90h-1f93h, CTC 1fa0h-1fa3h)
シリアルクロスケーブル
サンワサプライ KRS-L925-2K 等のインタリンクケーブルが最適ですが、
オス/メスが逆なので、ジェンダーチェンジャを取り付けています。
別ページでも書きましたがインタリンク対応ケーブルでない通常のクロスケーブルでも
高速通信は成功していました。
内部でハードウェアフロー制御は入れてあるのですが、処理の前後にウェイトを入れている事もあって、
特段フロー制御は発生していないようです。
動作確認
- Windows 8.1 64bit
- Windows7 64bit
- WindowsXP 32bit
- X1turboZIII
使い方
インストール
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」 祝一平様
この本には毎度お世話になっています。
購入してからずっと読んでいるような気がします。
それだけに祝一平氏が亡くなられた時は本当に残念でした。
氏の考え方やユーモアに富んだ文章などは今でもたくさんのライターの方に伝わって、
更に影響を与え続けていると思います。