レトロマイコンZ80ボードの構想(その15)エスケープシーケンスの実験 [Z80]
前回の「レトロマイコンZ80ボードの構想(その14)CP/MでのWM動作実験」ではWordMasterにANSIエスケープコード用のパッチを入れて動かしましたが、今回はPIC側のCONOUT処理に次のエスケープシーケンスの処理を入れてみました。
picleソース側への追加なので前回記事のような限られた領域にZ80のコードを詰め込むより簡単です。
試しに ここ から QTITRIS.COM(キャラクタ版テトリス)をダウンロードして動かしてみました。
下記の操作ログはエスケープシーケンスのサブセット対応(37行目~73行目部分)したpicleのリストを表示後、runコマンドで実行し、CP/Mブート後、QTITRISを起動している様子です。
簡易的なエスケープシーケンス対応実験ログ
テトリスが起動した画面のキャプチャが下の画面です。
数字キーで操作するので結構難しい(Z80が16MHz動作なので最低速設定にしても早すぎる・・)
因みにWordStarは他にも表示属性設定等のエスケープシーケンスを使っているのできれいな画面にはなりませんでしたが、PIC側で対応するのは容易だと思います。
WindowsとCP/M間のファイルのやり取りは前回記事のコメント欄にも書いたようにCP/M側でXMODEMというアプリを使っています(Windows側はTeraTermのXMODEM送受信機能を使用)。
ファイルのやり取りの際、SDカードを経由する必要がなくなったので便利になりましたが、私の環境では大きなファイルの転送に失敗(オプション指定でZ80のクロック設定しても駄目)することがあるので対策を考え中です。
PIC側に今回のようなコンソールデータの変換ロジックを入れるとバイナリデータの透過性が保証できなくなる問題が新たに発生します。(転送にはPUN:ディバイスを使えば解決できるけどね)
★2018/03/24 追記
下記のエスケープシーケンスを対応したことで無事 WordStar が動きました。
ANSIエスケープコードへの変換としては Reverse をそのままReverseに変換したところ、WordStarを終了してもReverseのままになったのでItalic(ESC+'[3m')に変換しています(TeraTermでは画面上は変化なし)。
BoldはANSIのBold(ESC+'[1m')に変換していますがTeraTermでは文字が黄色になります。(設定で変更可能らしい)
この頃のディスプレイはまだカラー化していないのでモノクロで識別可能な表示属性になっていますが、今ならエスケープシーケンスを色付きに対応させた方が見易くていいです(当時の状態の再現という観点では好ましくないかも)
私は普段、秀丸エディタを使っていますが、今でもWordStarライクな操作にカスタマイズしています。
WordStarを改めて使ってみると、今でもあまり遜色なく使えるエディタであることに驚かされました。
WordStarのソースコードはアセンブラで13万7000行あり、開発者のRob Barnabyさんはこれを4ヵ月で作ったのだそうです。平均的な生産性で換算すると42人が1年かけて開発する規模だということです。すご~ぃですね。
WordStarの画面はこんな感じです。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
- 画面クリア : ESC+'*'
- カーソル位置制御 : ESC+'='+nm
n:Y position,m:X position(position offset:20H)
picleソース側への追加なので前回記事のような限られた領域にZ80のコードを詰め込むより簡単です。
試しに ここ から QTITRIS.COM(キャラクタ版テトリス)をダウンロードして動かしてみました。
下記の操作ログはエスケープシーケンスのサブセット対応(37行目~73行目部分)したpicleのリストを表示後、runコマンドで実行し、CP/Mブート後、QTITRISを起動している様子です。
|
テトリスが起動した画面のキャプチャが下の画面です。
数字キーで操作するので結構難しい(Z80が16MHz動作なので最低速設定にしても早すぎる・・)
因みにWordStarは他にも表示属性設定等のエスケープシーケンスを使っているのできれいな画面にはなりませんでしたが、PIC側で対応するのは容易だと思います。
WindowsとCP/M間のファイルのやり取りは前回記事のコメント欄にも書いたようにCP/M側でXMODEMというアプリを使っています(Windows側はTeraTermのXMODEM送受信機能を使用)。
ファイルのやり取りの際、SDカードを経由する必要がなくなったので便利になりましたが、私の環境では大きなファイルの転送に失敗(オプション指定でZ80のクロック設定しても駄目)することがあるので対策を考え中です。
PIC側に今回のようなコンソールデータの変換ロジックを入れるとバイナリデータの透過性が保証できなくなる問題が新たに発生します。(転送にはPUN:ディバイスを使えば解決できるけどね)
QTITRIS画面 |
|
★2018/03/24 追記
下記のエスケープシーケンスを対応したことで無事 WordStar が動きました。
- ESC+'C'+'0' : Reverse off(たぶん・・^^;)
- ESC+'C'+'1' : Reverse on
- ESC+'B'+'0' : Bold off
- ESC+'B'+'1' : Bold on
ANSIエスケープコードへの変換としては Reverse をそのままReverseに変換したところ、WordStarを終了してもReverseのままになったのでItalic(ESC+'[3m')に変換しています(TeraTermでは画面上は変化なし)。
BoldはANSIのBold(ESC+'[1m')に変換していますがTeraTermでは文字が黄色になります。(設定で変更可能らしい)
この頃のディスプレイはまだカラー化していないのでモノクロで識別可能な表示属性になっていますが、今ならエスケープシーケンスを色付きに対応させた方が見易くていいです(当時の状態の再現という観点では好ましくないかも)
私は普段、秀丸エディタを使っていますが、今でもWordStarライクな操作にカスタマイズしています。
WordStarを改めて使ってみると、今でもあまり遜色なく使えるエディタであることに驚かされました。
WordStarのソースコードはアセンブラで13万7000行あり、開発者のRob Barnabyさんはこれを4ヵ月で作ったのだそうです。平均的な生産性で換算すると42人が1年かけて開発する規模だということです。すご~ぃですね。
WordStarの画面はこんな感じです。
WordStar画面 |
|
[TOP] [ 前へ ] 連載記事 [ 次へ ]