SSブログ
English Version

ポケコン(G850)用拡張ボード(EborsyEEP)でCP/M(その9)使用方法まとめ [ポケコン]

 今回開発した PC-G850V(以降、ポケコンと記す)用の増設メモリボード(EborsyEEP、以降 増設ボード と記す)を使い、CP/M が安定して動作し、ポケコン用の既存のプログラム(100Hから始まるマシン語で作成されたもの)を CP/M 上から実行できるランチャーの使い勝手も良いことから BOOTH で配布することにしました。

 本増設ボードの使用方法について以下にまとめました。下記の手順で必要なファイルは BOOTH からダウンロードできる「おまけファイル」に入っています。PC-G850V と PC-G850 は同じソフトを使用し、下記の操作も両者で違いはありません。

  1. 前提条件
     本増設ボードは CP/M インストール後のファイル転送手段として通信速度が 19200bps のソフトウェアシリアル方式を用いたポケコン専用の xmodem 通信ソフトを使用することを前提としています。そのため、本増設ボードを使用するためには次の条件を満たす必要があります。

    • 「周辺機器接続端子」に接続するシリアル通信用の通信アダプタを所有しており、パソコンからポケコンに HEX ファイルを転送し、ポケコン上で実行できること。
    • 下記URLで公開しているソフトウェアシリアル方式を使用したヘキサファイルローダー(DropHx)が動作することを確認済みであること。
        https://piclabo.blog.ss-blog.jp/DropHxForG850#usage
      ※G850S,G850VSでの動作は未確認ですが、クロックが 9MHz であることから通信速度を 21600bps(= 19200x9/8)に設定すれば動く可能性があります。
    • Windows用のTeraTermのようなxmodemプロトコルに対応した通信ソフトが動作すること。


  2. EEPROM の初期化
     出荷検査時に EEPROM を初期化済みなので本作業は不要ですが、万が一ファイルシステムが破壊された場合等に次の手順で EEPROM を初期化直後の状態にできます。
     添付の EEPROM 初期化ソフト(INIEEPXM.HEX)で EEPROM を初期化します。
     具体的な操作としては INIEEPXM.HEX をポケコンにダウンロードし、増設ボードを装着した状態で実行する(G100)と LCD 画面に下記のメッセージが表示されるので"Y"を入力すると数秒で初期化が完了します。

    注1)増設ボードの抜き差しはポケコンの電源が OFF の状態で行ってください。
     2)初期化するとファイルシステム上のファイルは A:XM.COM のみになります。

    ** Init EEPROM **
    find 8MB : Drive A,B,C,D   
    Are you sure ?(Y/N)


  3. CP/M の起動と終了
     添付の CP/M ローダー(GOCPM.HEX)を上述のDropHxを使ってポケコンにダウンロードし、実行する(G100)と CP/M が起動します。

    CP/M loading ... ok
    G850 Eborsy V003 47K CP/M 2.2 (C) DI

    A>_

     「ON」キーを押下することで CP/M が終了し、ポケコンのモニタに戻ります。
     再度実行する(G100)と CP/M が再起動します。

    ★追記 2023/12/04 {
     本拡張メモリ基板の抜き差しはポケコンの電源をオフにした状態で行ってください。また、本基板は消費電流が多いため、ポケコンを電池で動かしている場合はポケコンの電源オフ時はポケコンから抜いた状態にして下さい。
     再度 CP/M を起動する場合は本基板をポケコンに装着後、ポケコンの電源をオンにしモニタから「G100」のコマンドを実行することで CP/M が起動します。
    }

    ※ CP/M が起動しない場合の確認事項を下記の 10 項に記載しています。
    エスケープシーケンス対応」の記事でエスケープシーケンスに対応した評価版のGOCPMをダウンロードできます。⇒EborsyEEP_V103.zip で反映済み


  4. CP/M へのファイル転送
     パソコンとポケコンの CP/M 間のファイル転送はAドライブにあるxmodemソフト(XM.COM)を使用します。送信側を先に起動後、受信側を起動して下さい。
     hoge.com ファイルを TeraTerm でポケコンの B: ドライブへ転送する際の操作は次のようになります。

    1. ポケコンにシリアル通信インターフェースを装着し、パソコンとケーブル接続する(通院速度は 19200bps)。
    2. TeraTerm の「ファイルメニュー」から file⇒Transfer⇒XMODEM⇒Send を選択し、hoge.com ファイルを指定する。
    3. ポケコン側で xmodem を起動する。

      A>XM B:HOGE.COM /R        


       xm のみの起動で簡易的なヘルプが表示されます。

     複数のファイルを転送する場合は Windows のアーカイブソフト(7-ZIP)で tar 形式のアーカイブファイル(hoge.tar)にし、ポケコンへ転送後、添付の解凍ソフト(UNTAR.COM)で次の操作により解凍することで転送作業が楽になります。

    A>B:UNTAR B:HOGE /E         


     尚、untar のみの起動で簡易的なヘルプが表示されます。

    ★追記 2023/10/12 {
     Aドライブ上に1個毎にファイルを作成(例えば XM.COM で受信する等)するとファイルが上書きされる問題が発生しました。
     対処案として最初にパソコンから XM.COM を A ドライブ以外に受信し、その後は受信した A ドライブ以外にある XM.COM で A ドライブ以外にファイルを受信するようにして下さい。
     A ドライブでは PIP コマンドや UNTAR による連続したファイル生成は問題無いようなので、A ドライブは PIP や UNTAR を使った複数ファイル書込みでのバックアップもしくは巨大な1個の TAR ファイルの置き場所として使用してください。

    }
    ★追記 2023/10/17 {
     Aドライブの問題に対処したファイルをリリースしました。BOOTHのページからEborsyEEP_V102をダウンロードし、その中にあるINIEEPXMを起動してください。起動後に'C'を入力すると"Wrote CP/M to PROM"と表示され CP/M だけが修正したものに書き換えられます。その後は上記3項の手順で CP/M を起動してください
    }

  5. CP/M 上でのポケコンの既存ソフトの起動
     スタートアドレスが 100H のポケコンの既存のソフトを下記の操作で CP/M 上から起動できます。本 CP/M のドライブ容量は1ドライブにつき約 2M バイトなので既存アプリの保存場所としては無尽蔵と言えるくらいの大きさです^^

    1. 既存ソフトのヘキサファイル(ファイル名の拡張子は *.HEX にする)を上述の方法でパソコンからポケコンの CP/M 環境へ転送する。
    2. 添付の LOAD コマンドでバイナリファイルに変換する。
       例:LOAD HOGE
    3. 変換したバイナリファイル(*.com)を *.850 にリネームする。
       例:REN HOGE.850=HOGE.COM
    4. 添付の run コマンドで起動する。
       例:RUN HOGE

     下記は life.hex を転送後、起動するまでの操作例です。

    A>LOAD LIFE          

    FIRST ADDRESS 0100
    LAST ADDRESS 134A
    BYTES READ 124B
    RECORDS WRITTEN 25


    A>REN LIFE.850=LIFE.COM
    A>RUN LIFE



  6. CP/M でのキー操作
     CP/M を操作する際に使用する各キーは次の操作で入力てきます。

      ^C ⇒ SHIFT + C
      ^X ⇒ SHIFT + X
      ^Z ⇒ SHIFT + Z
      ^S ⇒ SHIFT + S

     また、本 CP/M では 80 x 25 表示の仮想画面の一部を LCD に表示(縮小フォントにより 36 x 8 表示)しています。カーソルキーを操作することで LCD の表示範囲を変更できます。この表示範囲の変更操作は CP/M のアプリケーションが動作中の時でもキーセンスさえしていれば可能です。


  7. パソコンの端末化
     ポケコンの表示画面は狭いので次のコマンドによりシリアル接続したパソコンを端末として使用することで操作性が向上します。

    A>STAT CON:=TTY:         


     パソコン側で次のコマンドを実行することでパソコン端末を切断し、ポケコン側からの操作に戻ります。

    A>stat con:=crt:              


     パソコンとのシリアル通信はポケコン側でソフトウェアシリアル方式により、19200bps を実現している為、キーセンスができないという制限があります。
     代替えとしてポケコン側のキー押下でキー入力有と判断するような実装にしていますので ^S で表示を一時停止したい場合はポケコン側のキーを押した後にパソコン側で ^S キーを押して下さい。


  8. CP/M アプリからの IOCS コール方法
     CP/M は増設ボード内のメモリ上で動作している為、CP/M 側のアプリからポケコンの ROM 内にある IOCS 処理を従来の方法でコールすることはできません。
     このため、ブリッジ処理を使うことで CP/M アプリから IOCS コールを実現できるようにしています。手順は次の通りです。

    1. 0BE03H にコール先のアドレスを設定する。
    2. コール時に必要な情報をレジスタに設定する。
    3. 0BE06H をコールする。


  9. おまけ
     二値動画再生ソフト(DISP.COM)用の BadApple!! 動画ファイルをここからダウンロードできます。
     再生方法 : DISP BADAPPLE.BIN


  10. CP/M が起動しない場合の確認項目   ★追記 2023/10/11

    1. EborsyEEPのハードチェック
       ハードチェックプログラム(EBOCHK_V001.zip)をダウンロードし、実行してみてください。下記のように表示され、約15秒間隔で数字がインクリメントされていきます。「ON」キーを押し続けるとcheckの数字が変化するタイミングでチェックプログラムが終了します。

      << EborsyEEP check >>
      EEPROM : EF 40 17
      Bank check : 001

      • 「EEPROM」が FF FF FF と表示される場合は、EEPROM を認識できない状態です
      • 追加で複数の4桁のアドレス情報が表示される場合は、メモリチェックでNGが発生している状態です

    2. 対処案
         
      1. EEPROM エラーやメモリエラーが検出された場合
         ポケコンのシステムバス端子とコネクタ間で接触不良が発生している可能性が考えられます。ポケコンの電源を切った状態で EborsyEEP を抜き、再度しっかり装着してチェックプログラムを実行してください。
         ポケコンのシステムバス端子部のケース内面上側にはアルミ箔が貼られていて、剥がれ掛けているとその厚みの為、うまく動作しない場合があります。  
      2.  
      3. エラーが検出されない場合
         ポケコンから EborsyEEP が正常に認識されています。ポケコンを一度リセットして上記の設定作業を再度試みてください。  


[TOP] [ 前へ ] 連載記事一覧 [ 次へ ]

nice!(0)  コメント(2) 
共通テーマ:趣味・カルチャー

ポケコン(G850)用拡張ボード(EborsyEEP)でCP/M(その8)ケースの製作 [ポケコン]

 前回の記事でポケコン(PC-G850V、以降 G850 と記す)の操作の邪魔にならないように今回開発しているメモリボード用の背の低いプリント基板を作成したことを書きました。

 この増設メモリボード(以降、EborsyEEP と記す)により、 G850 で CP/M が動くようになり、CP/M 上から既存のマシン語のゲームを簡単に起動できるようになりました。
 G850 に接続中は EborsyEEP 上の GAL が暖かくなるので、電池を温存するために使わない時は G850 からこまめに抜くようにしています。
 ポケコン内のプリント基板に繰り返し応力が加わってしまうと故障の原因にもなりかねないので EborsyEEP を抜き差しする際には傾いたりしないように注意を払っています。

 今回は抜き差しの動作を安定して行えるように EborsyEEP 側のコネクタ部の形状を G850 のシステムバスコネクタ部周辺の形状に合わせるようなケースを作ってみました。

 下図は今回作成したケースの CAD 画面です。上記の様に実装部品が少し熱を持つのでケースは密閉型にはせず、コネクタと逆の面を開放するようにしました。また、爪で固定するような構造にしてネジが不要な設計にしています。

EborsyEEP ケースの CAD 画面(部品面)


 下図はコネクタ側の CAD 画面です。薄ピンク色の立方体がコネクタで両端に G850 側のシステムバスコネクタ部分の形状に合うようにサポートを付けました。これにより、EborsyEEP 挿入時の遊びが殆ど無くなり、抜き差しの動作をより安定して行えるようになりました。

EborsyEEP ケースの CAD 画面(コネクタ面)


 下の写真はケースに入れた EborsyEEP の様子です。開放窓はもっと小さくてもいいかもしれませんが基板に実装した LED の点灯状態を見えるようにしたいということもあり、プリント基板の外周をサポートする形式にしています。

EborsyEEP ケース(部品面)


 下の写真はコネクタ側の写真です。3D プリンタで基板側を奇麗に出力する(=サポート材不要にする)ためにコネクタ面を下にして出力しているので底面が少しざらついています。

EborsyEEP ケース(コネクタ面)


 下の写真は G850 に装着した際の様子です。本体のキーボード面から少し出っ張りますが操作の邪魔になる程ではありません。

EborsyEEP 実装時の様子(コネクタ側の拡大)


 装着時の全体の様子が下の写真になります。ケースは黒色のフィラメントで出力した方が良かったかもしれませんが、緑色でもプリント基板の色に馴染んでいますね。

EborsyEEP 実装時の様子(全体)




★追記 2023/08/31
 ケースの細部を色々見直しましたので追記します。

 主な変更点
  1. コネクタ上部にガイドを付加し、装着時の安定性を向上
  2. コネクタ周辺部の凸部を分離した部品にすることでケースの底面をスムーズ化
  3. 全体を立方体にして形状をシンプル化

 下図はCAD画面のコピーでケースを3ピース構成にしました。また、基板をサポートする部分の幅を小さくしてみました。

EborsyEEP ケース設計画面(部品面)


 下図はコネクタ面のCAD画面です。前述のようにコネクタの横にガイドを追加してコネクタの差し込みがより安定するようにしました。

EborsyEEP ケース設計画面(コネクタ面)


 下図は3Dプリンタで出力したケースのパーツです。FDM方式の3Dプリンタで PETG フィラメントを使って出力しました。プリンタ自体が高級品ではないこともありますが、出力部品を拡大するとあまり奇麗には見えませんね^^;

3Dプリンタで出力したケースのパーツ(その1)


 下図は上図のパーツを裏返したものです。上記の「主な変更点」でも書いたように3ピース構成にすることで、コネクタ面もサポート無しで奇麗に出力できるようになりました。

3Dプリンタで出力したケースのパーツ(その2)


 今回開発した EborsyEEP をケースに入れた状態が下図になります。基板をサポートする部分の幅を小さくしたことで、基板にシルク印刷されている基板名称が見えるようになりました。

ケースに入れたEborsyEEP(その1)


 システムバス端子へのコネクタ部の周辺も微調整して、より安定して装着できるようになりました。

ケースに入れたEborsyEEP(その2)


 下図はポケコンに接続した様子です。全体の形状をシンプルにしたことでスッキリしましたね。

EborsyEEP 実装時の様子(コネクタ側の拡大)


 ポケコン接続時の全体の様子が下図になります。コネクタ上部に付けたガイドがポケコン側のケースと接することで安定性が増しました。

EborsyEEP 実装時の様子(全体)



★追記 2023/09/30
 ケースの細部を再度見直しましたので追記します。

 主な変更点
  1. キャップの高さを高くして側面に本体との境目が見えないようにした
  2. コネクタ部分の形状を微調整
  3. 側面に「EborsyEEP」の刻印追加

 下図はCAD画面のコピーです。側面にキャップ部とボディー部の境目が見えなくなったのでスッキリしました。

EborsyEEP ケース3版設計画面(部品面)


 コネクタ面のCAD画面が下図になります。PC-G850 の無印用にコネクタ部分の形状を微調整しました。

EborsyEEP ケース3版設計画面(コネクタ面)


 WborsyEEP をケースに入れた状態が下図です。フィラメントは黒色の PETG を使いました。

ケース3版に入れたEborsyEEP(その1)


 コネクタ面が下図です。黒色フィラメントを使ったので写真では凹凸が良く判りませんね。

ケース3版に入れたEborsyEEP(その2)


 ポケコンと接続した状態が下の写真です。

EborsyEEP 実装時の様子(コネクタ側の拡大))


 CP/M 起動後の全体写真が下の写真です。

EborsyEEP 実装時の様子(全体)



[TOP] [ 前へ ] 連載記事一覧 [ 次へ ]


nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

ポケコン(G850)用拡張ボード(EborsyEEP)でCP/M(その7)改善基板到着 [ポケコン]

 前回の記事で書いたポケコン(PC-G850V、以降 G850 と記す)の操作性を考慮し再設計した背の低いプリント基板が届きました。早速、部品を実装し、基本的な動作確認ができましたので記録して置きたいと思います。

 部品実装前の基板単体の写真が下の写真です。ポケコンの操作の邪魔にならない様に背を低くしていますが、横方向のトラックが多いため面積としては従来の Ver0.01 より若干大きくなっています。

改善したプリント基板


 部品実装後のトップ面が下の写真になります。コネクタ側はポケコンとの距離があまりないので背の低い SRAM を実装しています。

部品実装後のトップ面


 下は部品実装後のボトム面の写真です。IC チップと抵抗が整然と並んでいますね^^
 中央下側の青い直方体の部品は基板装着時の突入電流対策で今回追加したインダクタです。

部品実装後のボトム面


 今回は部品実装後、一発で動作しました^^
 下の写真は CP/M 関連のファイルのアーカイブを受信している様子です。

xmodemでダウンロード中の新 EborsyEEP


 前回の記事で書いたように従来は基板装着時の突入電流によるポケコン内の電源電圧の低下が 3V 程度あったので今回は電源入力部にインダクタを追加し、各 IC のパスコンの容量も小さくしました。基板装着時の電源電圧の変動を確認した結果が下図になります。上記の対策の効果があり、電源電圧の変動は 0.5V 程度に減少し、問題ないレベルになりました。

電源オフ状態で EborsyEEP 装着時の電源電圧変化



[TOP] [ 前へ ] 連載記事一覧 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

ポケコン(G850)用拡張ボード(EborsyEEP)でCP/M(その6)問題と対策 [ポケコン]

 ポケコン(PC-G850V、以降 G850 と記す)用 Serial EEPROM & SRAM の拡張ボード(EborsyEEP)で CP/M が安定し動くようになり、色々遊んでいると下記のような気になる点が出てきました。

  1. 基板が操作の邪魔
     システムバス端子に接続するためのコネクタの形状上、基板が縦に装着されることになり、 G850 の操作面からかなり出っ張るのでキー操作の邪魔になる。

  2. 電源off時の基板装着での突入電流
     特に電池の放電が進んだ際に G850 を電源 off の状態で Eborsy の基板を装着し、電源 on 後の「G100」で CP/M が起動せずに暴走する場合がある。

 1項に関しては、今回小型化する際に操作性をあまり考慮せずに設計してしまったので、G850 の操作面からの出っ張りが最小限になるように基板を再設計しました。システムバス用コネクタはピン間2トラックしか通せないので横方向のトラックが多くなりいつものトップ面/ボトム面での直行トラックでは対応しきれず、全体のトラック数がそれ程多くないにもかかわらず結構時間が掛かってしまいました(結果は後述)。

 2項に関してですが基板装着時に左側の11ピンの周辺機器接続端子で+5Vの電圧をモニタしたものが下図になります。基板への突入電流による電圧降下がかなり発生しています。電圧降下の度合いは電池の内部抵抗や電池ホルダの接触抵抗の影響も受けるものと思われます。

Eborsy 基板装着時の電源電圧の変化


 対策として Eborsy 内でシステムバスから Vcc を受けた後に突入電流対策用にインダクタを入れました。また、各 IC 用のパスコンの値を小さくしました。EEPROM はパターン上、3.3V のレギュレータに近かった為、パスコンを省略しています。変更後の回路図を下図に示します。

EborsyEEP 回路図


 それではパターン設計に関して結果を記録して置きたいと思います。グランドベタ化前のトップ面(赤色)とボトム面(水色)のパターンが下図になります。前述のように横方向のトラックが多く必要なため、トラックを縦横直角に配置する手法をやめ手動で最適化してみました(スペース的によほど余裕のある場合を除きいつも手書きですが)。

EborsyEEP パターン図(グランドベタ化前)


 今回は基板の形状からも予想が付きましたが、横方向のトラックが多く発生してトラックが結構込み合っています。

EborsyEEP パターン図(トップ面)


 下図がボトム面のパターンです。本来なら縦方向のトラックを配置する面ですが、臨機応変に横方向のトラックも多用しています(特に基板の淵の周辺)

EborsyEEP パターン図(ボトム面)


 下図がトップ面の3Dイメージです。システムバ側のコネクタを実装する面で、G850 本体との距離があまりないので背の低い SRAM を配置しました。

EborsyEEP 3Dイメージ(トップ面)


 下図がボトム面の3Dイメージです。右側の正方形の PLCC パッケージの GAL は直付け前提です。左下の長方形のものは EEPROM の信号モニタ用に設けました。場所的には EEPROM の近くの方が良かったのですが空きスペースが無かったので少し離れた場所に配置しています。

EborsyEEP 3Dイメージ(ボトム面)





[TOP] [ 前へ ] 連載記事一覧 [ 次へ ]
nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー

ポケコン(G850)用拡張ボード(EborsyEEP)でCP/M(その5)LCDのシンボル制御 [ポケコン]

 前回の記事でポケコン(PC-G850V,以降 G850 と記す)で動作する CP/M 環境内で既存のアプリケーションを起動できるランチャーの製作について書きましたが、色々なゲームで遊んでいると G850 の LCD のシンボルを非表示制御しているものとしていないものがあることに気が付きました。
 今回の CP/M 起動時でも余分なシンボルが表示されたままだったのでシンボルの表示制御についてネットで探してみましたが見つけることが出来ませんでした。

 どのようなシンボルがあるのかについては全てのシンボルを表示した状態の下の写真を見てください。

G850V で全シンボル表示状態の画面例


 余談ですが、DEGRAD の部分は DE + G + RAD の3部構成になっていて G を共用することで狭いLCDに必要な文字を詰め込んでいました。

 はじめにLCDコントローラを直接アクセスして表示データを設定する方法ですがコマンドポート(40H)に下表に従って書込み座標を設定後、データポート(41H)にデータを出力します。表中の Page address は Y / 8 の値を設定します。

LCDコントローラへの書込みアドレスの設定方法


 G850 のLCDの解像度は 144 x 48 で column アドレスとしては 0 ~ 143 の範囲なのですが、144 column に書込むことでシンボル部分の表示制御ができました。

 シンボル表示制御の調査結果を下表にまとめました。対応ビットが1で表示されます。

No.symbolpage adrcolumn adrassign bit
1RUN014402h
2PRO014408h
2TEXT014440h
3CASL114408h
4STAT214401h
52ndF214420h
6[M]214480h
7CAPS314404h
8カナ314480h
9414402h
10DE414410h
11G414440h
12RAD514401h
13CONST514404h
14PRINT514410h
15BUSY514440h
16[BATT]514480h
★修正 2023/08/14 前回の修正を元に戻した
★修正 2023/08/12 page adrを修正


 今回は CP/M 上で動くお手軽な GAME 言語を使って調べました。
 参考として全てのシンボルを非表示にする GAME 言語のソースが下記になります。

全シンボル非表示制御の例(GAME言語)
1' PC-G850V LCD 144x48(64) 2' delete all symbols 10 M=&+1 20 M:0)=$3E M:1)=$00 M:2)=$D3 M:3)=$00 M:4)=$C9 30 D=M+1 P=M+3 40 #=1000 100'** set pos X<-x,Y<-y 110 P:0)=$40 D:0)=%(X/16) >=M 120 D:0)=X/16+$10 >=M 130 D:0)=Y+$B0 >=M 140 ] 199' set A to symbole area 200 X=144 210 Y=0,5 220 !=100 230 D:0)=A P:0)=$41 >=M 240 @=Y+1 250 ] 1000 A=$FF !=200 1010 I=0,2000 "" @=I+1 1020 A=0 !=200



★追記 2023/07/30
 G850 上で単独で動作する GAME 言語を下記の記事からダウンロードできます。
 ・「ポケコン(PC-G850V)でGAME言語


[TOP] [ 前へ ] 連載記事一覧 [ 次へ ]

nice!(0)  コメント(0) 
共通テーマ:趣味・カルチャー