2012年12月02日

マウスを動かす(3)

  初代P6 で描画期間が検出できるようになったので、マウスのサンプルプログラムも移植しました。

  PAGE2 です。拡張RAMはどちらでも構いません。mk2以降なら MODE1/2 です。

mouse2_p6.zip


  起動すると画面にカーソルが出て、マウスで移動させる事ができます。
  左右のトリガを両方押すと、終了します。


  先にアップしたマウスのサンプルプログラムから、垂直同期の検出を変更したのと、スクリーンの幅を高さを変えただけです。


  マウスに対してのアクセスの開始は一定間隔でなくてもいいので、いろいろとプログラムが組めそうではあります。マウスでパッドを移動するブロック崩しとか...


posted by えすび at 23:37| Comment(0) | SW:ツール | このブログの読者になる | 更新情報をチェックする

2012年11月06日

RS232Cボードを動かす(6)

  先にアップしたプログラムにバグがあったので改定しました。

rs232c_3.zip


  データ受信時、RTS を OFF にしたまま、ON にしていませんでした。

  飛び先を間違えていたのを修正しました。

posted by えすび at 21:38| Comment(0) | SW:ツール | このブログの読者になる | 更新情報をチェックする

2012年10月22日

RS232Cボードを動かす(3)の追記

  誤解(?)を受ける前に訂正。

>  ただ、送信側は 1/1 を使っても特に問題がありません。
>
>  ちなみに試した所、307200bps(4800×64)まで、正常に送信できました。ただ、フロー制御を効かせているので、データが途切れてる可能性はあります。


  送信の処理に、CPUクロックで100クロック(大体10命令)で済むとして、かかる時間は

  100×(1/4MHz)=25μS


  この処理が1秒間に出来る回数は

  1/(25μS) = 40K 回(40000回)


  ボーレートに直すと

  40K × 8 bit = 320 Kbps


  です。


  今のプログラムでは、バスリクエストをそのままにしているので、307200bps(307Kbps)は出ていないですね。

  OUT &H93,2 をした状態で送信しないと、ちゃんと速度が出ていない事になります。

posted by えすび at 20:51| Comment(0) | SW:ツール | このブログの読者になる | 更新情報をチェックする

RS232Cボードを動かす(3)

  先にアップしたプログラムの一部を改定しました。

rs232c_2.zip

  パラメータ設定で、ボーレート倍率に x64 を追加しました。

  これは、8251 の分周する回路の選択で、1/16、1/64、以外に 1/1 を選べるようにしたものです。


  これを使うと、RS232Cのボード上の速度を600bps にして、x64 にすると、38400bps になるはずなんですが...
  1/1 のクロックを使ってデータを受信した場合、受信データ化けを起こします(データ落ちはない)。


  マニュアルではこの事には特に触れていませんが、よく読んでみるとデータのサンプリングタイミングが記載されており、これがこのクロックの立ち上がりになります。

  分周クロックの場合、スタートビットの立ち下がりから、データのサンプリングタイミングを決定できますが、分周しない場合は、外部から入力されるクロックをそのまま使うようです。

  そのため、データとのタイミング関係が分からない、外部のクロックの立ち上がりで取り込むため、データ化けが起こると考えられます。


  ただ、送信側は 1/1 を使っても特に問題がありません。

  ちなみに試した所、307200bps(4800×64)まで、正常に送信できました。ただ、フロー制御を効かせているので、データが途切れてる可能性はあります。


  ボーレート設定が面倒なので、ソフトから制御できるようにしようかな...

posted by えすび at 19:13| Comment(0) | SW:ツール | このブログの読者になる | 更新情報をチェックする

2012年10月21日

RS232Cボードを動かす(2)

  結局、BASIC では、サブCPUの割り込みを使う方法以外は使えないので、プログラムを組んでみました。

  一応、今回作成したボードでは 38400bps、正規ボードでも 19200bps までデータ転送できるはずです。

rs232c.zip


  プログラムは手抜き箇所があります。送受信時は、指定したバイト数になるまで制御が返ってきません。


○使い方

  mk2以降で、MODE5、PAGE4 にして下さい。本来はmk2でなくてもいいのですが、大量のデータの受信テストにするためにmk2を使っています。

  Windows 側は、何らかのターミナルプログラムを使って下さい。
  私は、MORIYAさんの所で紹介されていた、acknowrich を使っています。

http://www.vector.co.jp/soft/win95/prog/se089304.html
http://p6ers.net/mm/pc-6001/dev/joy2rs232c/

  リバースケーブルでWindowsパソコンと繋いだら、acknowrich を立ち上げて下さい。その後、P6側でプログラムをRUNさせます。

  すると、acknowrich の下のステータスバーの「CTS」「DSR」が点いているはずです。点いていない場合はリバースケーブルがおかしいか、RS-232Cボードがおかしいと思われます。

  また、Windows側 にRS-232Cポートがなくて、USB-RS232C変換コネクタを使っている場合は、変換コネクタが悪い可能性があるので注意が必要です(USB-RS232C変換はいろいろとトラブルが多いようです...)。



・パラメータ設定

  立ち上げたら、まずP6側で p を押して、パラメータを設定します。

  設定できるパラメータは次の通りです。

 ・ストップビット 1bit / 1.5bit / 2bit
 ・パリティ    なし / 奇数 / 偶数
 ・データ長    5bit / 6bit / 7bit / 8bit
 ・ボーレート倍率 通常 / 4倍

  それぞれ [ ] で囲まれた文字を押して下さい。

  BASIC のデフォルトは、ストップビット 1bit、パリティなし、データ長 8bit、ボーレート倍率 通常、です。


  とりあえず、デフォルトの通りに各パラメータを設定して、さらに RS-232Cボード上のジャンパを4800bps にして下さい。

  また、acknowrich の通信設定もこれに合わせるようにして下さい。

  さらに、acknowrich のフロー制御の設定も行って下さい。設定−デバイス設定で出てくるウインドウの、通信パラメータタブにある、フロー制御の項目で設定します。

  CTS、DSR、RTS、DTR、にチェックを入れて下さい。



・データ送信

  P6側 で s を押して、データを送信します。

  s を押すと、開始アドレス、送信サイズを聞いてきます。入力はhex です。

  例えば、開始アドレス=0、送信サイズ=10 とすると、ROM領域のアドレス0x0000〜0x000F までが、acknowrich のコンソールに表示されます。
  バイナリデータなので、acknowrich のメニューから、編集−BINARYモードを選んでバイナリにしておくと、画面に16進で表示されます。

  また、ファイルの転送も可能です。acknowrich のメニューから、編集−ファイル転送を選び、新しく出てきたウインドウの「受信」を選びます。すると、受信したファイルがどこに格納するかを聞いてきますので、適当に答えます。

  次に、P6側で s を押して、開始アドレス、送信サイズを入れると、ファイルが転送されます。
  例えば、開始アドレス=0、送信サイズ=8000 とすると、mk2のROMデータが転送されます。

  手持ちのROMファイルと比較してみて下さい。一致しない場合は、どこかがおかしいと思われます。


・データ受信

  P6側 で r を押して、データを送信します。

  s を押すと、開始アドレス、送信サイズを聞いてきます。入力はhex です。入力が終わると、ページ4が表示されます。

  その後に、Windows側の acknowrich のメニューから、編集−ファイル転送を選び、新しく出てきたウインドウの「送信」を選びます。すると、送信するファイルを聞いてきますので、適当に答えます。

  開始アドレス=0、送信サイズ=4000 とすると、ページ4の画面にデータが表示されますので、Windows側で画面データを作って、P6に簡単に表示させるができます。



  パラメータ設定にある「ボーレート倍率」ですが、これは、8251の分周比を変更するオプションです。正規のRS-232Cボードでは、このパラメータが 1/64 で使うようになっています。

  例えば4800bpsの場合、RS-232Cのボード上で、P6から入力される8MHz クロックを26分周して、8251に入力しています。

8251 はさらにそのクロックを1/64 して、送受信クロック(4800Hz)を作っています。

  で、この 1/64 の分周比が、1/16 にする事も可能です。この設定をすると、送受信クロックが4倍になるため、転送速度も4倍になります。


  ですので、「ボーレート倍率」を4倍に設定した場合は、単純にボーレートが4倍になります。ジャンパで4800bps にした場合は、19200bps 、9600bps の場合は、38400bps でデータを転送できます。


  ちなみに、私の環境では、問題なく38400bps の送信、受信が出来ました。1画面分が数秒の速度です。




posted by えすび at 18:54| Comment(2) | SW:ツール | このブログの読者になる | 更新情報をチェックする

2012年05月24日

簡易BASICチェックツール

  某所のブログで、BASICチェックツールの話が出ていました。

  完成したらアップして下さい〜、と人にお願いするだけなのもアレなので、自分で作ったものもアップしておきます。


bascheck.zip


  gawk が使える環境が必要です。



posted by えすび at 20:58| Comment(2) | SW:ツール | このブログの読者になる | 更新情報をチェックする