X1turbo Agency

X1turbo Agency

X1turbo Remote Monitor v1.1.3リリース

X1turbo Remote Monitor v1.1.3リリース

X1turbo Remote Monitor v1.1.3 をリリースしました。
詳しくはX1turbo Remote Monitorのページを見てください。

従来バージョンと比較して、ディスク読み取り時にデータ圧縮を行って高速化しました。
BASICのディスクなどはクラスタ単位で使われているため、スキマが多く高速化が期待できます。
単純なランレングス圧縮なので圧縮率はほどほどです。

f:id:x1turbo_agency:20180617020355p:plain

高速化について考察

実装するかは未定ですが、更なる高速化を考えてみます。

アイディア1 データ通信とディスク読出しの非同期化

現在は、WindowsPCから読み出しコマンドを送って、ディスク内容を返してくるまで
待っている状態です。なので、データを送っている最中に次のトラックを読みにいけば、
高速化できるはずです。計算してみると30%位は早くなりそうです。

アイディア2 データバッファを大き目に確保して一括読出し,転送

非同期化を行う前提として、読出した結果をストックする領域を増やせば
高速化できると思います。EMM,GRAM,バンクRAM…などを駆使すれば実現は可能ですが、
EMM,バンクRAMは持っている人に依存するので、GRAMを使った
高速化というのが実現度が高そうです。
96KB分のディスクを先行して読み込み、非同期でデータを転送していく感じです。
ディスクを読み込む方が早く、割とすぐ追いつかれてしまうので、意味ある?って感じですが。

ケースファン交換

ケースファン交換

X1turboZIIIのファンの音がうるさくなってきたので思い切って交換することにした。
使われていたファンは、SERVO Co.,Ltd. のDC軸流ファン PUDC12D4。
12V 80mmx25mm 風量 26CFM 騒音 23db。
現在でもまだシリーズは続いているらしい。

f:id:x1turbo_agency:20180610140220j:plain

交換品はオウルテック PCケース用ファン OWL-FY0825L
12V 80mmx25mm 1600rpm 風量 20.5CFM 騒音 20db

f:id:x1turbo_agency:20180610140238j:plain

ファンよりもコネクタが今のPCと全然違うのでなかなか見つからない。
色々探して基板コネクタで使えそうなものを見つけた。
con-702 2P コネクタ

f:id:x1turbo_agency:20180610140257j:plain

基本的には分解して、コネクタを付けて、ファンを交換するのみ。
心配していたコネクタも若干形状が違うものの、うまくコネクタにはまった。

f:id:x1turbo_agency:20180610140319j:plain f:id:x1turbo_agency:20180610140328j:plain f:id:x1turbo_agency:20180610140337j:plain

以前のブォーという音から、かなり静かになった。
まだまだハードウェアもいじりたいので、これで仕事がはかどる。

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以上の速度で通信できます。

現在は下記の機能を持っています。

  • BASIC(CZ-8FB02/3)からのモニター起動
  • 起動ディスク作成
    • 以降は起動ディスクからモニターが起動できます。
  • 最大62500Bpsでの通信設定が可能
  • フロッピーディスク(2D/2DD/2HD)の吸い出し
    • v1.1.3以降 データ圧縮による高速化
  • フロッピーディスク(2D/2DD/2HD)の書き出し
  • S-OS U.C.様謹製 CZ-8EB4ブート作成
  • メモリダンプ
  • ディスクIDダンプ
  • 背景色変更

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

ダウンロード・更新履歴

日付 バージョン ファイル
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
・公開バージョン

スクリーンショット

X1turbo Remote Monitor のスクリーンショット f:id:x1turbo_agency:20180617012721p:plain

動作環境

  • 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

f:id:x1turbo_agency:20180526184900j:plain

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

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

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

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

f:id:x1turbo_agency:20180526184913j:plain f:id:x1turbo_agency:20180526184922j:plain

動作確認

使い方

インストール


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

基本動作


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

セットアップ


[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)をドライブ0にセットします。
[2] その後、''X1 Monitor 起動ディスク作成'' を押すと、ディスクの書き込みを行います。
[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書込み


.d88形式のファイルを読み込み、フロッピーディスクへの書き出しを行います。
.d88形式内のファイル(1セクタ256/512/1024byte)のトラックフォーマットを行い、データを書き込みます。
混成長にも対応していますが、正常に動作するかどうかは不明です。

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

  • ドライブ番号(0-3)
  • 入力ファイル名 (.d88形式) 開始ボタンを押すと、ディスクへの書き込みを行います。

メモリダンプ


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

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

メニュー

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

謝辞・その他

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

  • 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シリアル変換ケーブルを使うことで、以下の問題が解決できます。

  • 入手可能な機材
  • 9600bps以上の高速通信
  • USBに対応しているWindowsマシンで動作可能

しかも検証の結果、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」を公開しています。