シリアル通信ソフト CoolTerm の使用方法と遅延処理を追加した拙作 PCG-LinkMac バージョン 1.1(1) 公開

追記: 2014/05/21(Wed)

OS X Mavericks では、USB・RS232C シリアルポート変換ケーブル対応のドライバをインストールする必要がありません。Apple 純正のドライバがインストールされています。

~ $ cd /System/library/Extensions/IOUSBFamily.kext/Contents/Plugins/
/System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ ls
AppleUSBCDC.kext		AppleUSBMergeNub.kext
AppleUSBCDCACMControl.kext	AppleUSBOHCI.kext
AppleUSBCDCACMData.kext		AppleUSBOpticalMouse.kext
AppleUSBCDCDMM.kext		AppleUSBUHCI.kext
AppleUSBCDCECMControl.kext	AppleUSBVideoSupport.kext
AppleUSBCDCECMData.kext		AppleUSBXHCI.kext
AppleUSBCDCEEM.kext		IOUSBCompositeDriver.kext
AppleUSBCDCWCM.kext		IOUSBHIDDriver.kext
AppleUSBEHCI.kext		IOUSBHIDDriverSafeBoot.kext
AppleUSBFTDI.kext		IOUSBLib.bundle
AppleUSBHub.kext		IOUSBUserClient.kext
/System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $

上記のように Apple 純正 FTDI ドライバ AppleUSBFTDI.kext は、/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns フォルダにあります。

自作アプリの OS X 10.9 Mavericks 対応。Sprite Kit を使ったアプリケーション Neko version 1.0 公開。 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/2013/12/14/185334

上記 URL の PCG-LinkMac の記事も参考にしてください。

PC-G850VS と Mac ( OS X Mountain Lion 10.8 ) の間でのシリアル通信 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/20120831/1346414073

以前、上記 URL で PC-G850VS と Mac の間でのシリアル通信に、拙作 PCG-LinkMac

PCG-LinkMac バージョン 1.1(1)
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink

を紹介しました。

今回は、シリアル通信ソフト CoolTerm を紹介します。(また、PCG-LinkMac も遅延処理を追加したバージョン 1.1(1) を上記 URL で公開しています。詳しい解説は同封の ReadMe を参照してください。)

Roger Meier's Freeware
CoolTerm
http://freeware.the-meiers.org/

シリアル通信ソフト CoolTerm には、Mac、Win、Linux 版があります。

使い方は簡単です。CoolTerm を起動したら、まず最初に端末の設定をおこないます。

ツールバーの Options をクリックし、Serial Port タブを選び

Port: usbserial-FTG6R5XK
Baudrate: 9600
Data Bits: 8
Parity: none
Stop Bits: 1
Flow Control: いづれもチェックしない

上図のように設定します。OK ボタンをクリックすれば設定完了です。(自分の環境に合わせて設定してください。)
後は、ツールボタンの Connect をクリックしてシリアルポートを開いてください。成功すれば、ウインドウの下部エリアに状態が表示されます。

ファイルを転送するには、メニュー/Connection/Send Textfile… からファイルを選択すれば、転送されます。

MINE [Minesweeper ver 0.2]
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#mine
(PCG-LinkMac1_1.zip を展開して作られる PCG-LinkMac/Example フォルダ
にすべての拙作プログラムが含まれています。)

上記メニューを使って、拙作 MINE [Minesweeper ver 0.2] のテキストファイル mine02.txt を Mac 側から遅延せずに転送し、Mac 側で転送が終了してから、10秒ほど待つと PC-G850VS 側で受信が終了し、転送に成功します。(Mac の環境によって違いが出ると思います。)

たたし、サイズの多きなファイルだとエラーが生じることがあります。その時は、1文字送るごとに遅延するように設定します。

一度、ツールバーの Disconnect でシリアルポートを閉じて、再設定します。

ツールバーの Options をクリックし、Transmit タブを選びます。

Options/Tranmit
✓Use trasmit character delay
Delay (ms): 5

Use trasmit character delay にチェックを入れ、遅延時間を 5 ms に設定します。ツールバーの Save をクリックして名前を付けてファイルに保存すれば、そのファイルを Finder 上でダブルクリックするだけで端末が設定されます。

それから再度ツールバーの Connect ボタンをクリックして、シリアルポートを開いてください。

SDCC 版 Minesweeper ver 1.0
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#sdccmine
(PCG-LinkMac1_1.zip を展開して作られる PCG-LinkMac/Example フォルダ
にすべての拙作プログラムが含まれています。)

拙作 SDCC 版 Minesweeper ver 1.0 の minesweeper_hex.txt ファイルで説明したいと思います。

PC-G850VS のモニタで機械語エリアを確保し

MON
*USER 23AE
*

先程、遅延時間を 5 ms に設定しましたが、ここでは説明のため 3ms に設定したとします。
minesweeper_hex.txt を PC-G850VS に転送すると

*R
INFO:0100-2154
*

終了番地が 2154 となり、データの取りこぼしが起きています。
それで、5ms の遅延に設定すると

*R
INFO:0100-23AE
*

終了番地が 23AE となり正しく受信しています。私の Mac

iMac 27-inch, Mid 2010
プロセッサ  2.93 GHz Intel Core i7
メモリ  8 GB 1333 MHz DDR3
グラフィックス  ATI Radeon HD 5750 1024 MB
ソフトウェア  OS X 10.8.3(12D78)

です。最新の Mac だと遅延時間を 5ms 以上にしないといけないかもしれません。

エラーが出た時は、Mac 側の入出力条件設定と P-G850VS側 の入出力条件設定 Format が等しいか確認してください。
特に

I/O DEVICE ERROR

がすぐ起きた時は、遅延するように設定してください。最初は、エラーが起きない大きめの間隔から設定し、段々減らしていくと良いかもしれません。
改行コード: end of file、行番号: line number も注意してください。

下図のように、PCG-LinkMac でも遅延できるように機能を追加しました。

PCG-LinkMac バージョン 1.1(1)
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink

良かったら、ダウンロードしてください。

PC-G850VS と Mac ( OS X Mountain Lion 10.8 ) の間でのシリアル通信

追記: 2014/05/21(Wed)

OS X Mavericks では、USB・RS232C シリアルポート変換ケーブル対応のドライバをインストールする必要がありません。Apple 純正のドライバがインストールされています。

~ $ cd /System/library/Extensions/IOUSBFamily.kext/Contents/Plugins/
/System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $ ls
AppleUSBCDC.kext		AppleUSBMergeNub.kext
AppleUSBCDCACMControl.kext	AppleUSBOHCI.kext
AppleUSBCDCACMData.kext		AppleUSBOpticalMouse.kext
AppleUSBCDCDMM.kext		AppleUSBUHCI.kext
AppleUSBCDCECMControl.kext	AppleUSBVideoSupport.kext
AppleUSBCDCECMData.kext		AppleUSBXHCI.kext
AppleUSBCDCEEM.kext		IOUSBCompositeDriver.kext
AppleUSBCDCWCM.kext		IOUSBHIDDriver.kext
AppleUSBEHCI.kext		IOUSBHIDDriverSafeBoot.kext
AppleUSBFTDI.kext		IOUSBLib.bundle
AppleUSBHub.kext		IOUSBUserClient.kext
/System/library/Extensions/IOUSBFamily.kext/Contents/PlugIns $

上記のように Apple 純正 FTDI ドライバ AppleUSBFTDI.kext は、/System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns フォルダにあります。

自作アプリの OS X 10.9 Mavericks 対応。Sprite Kit を使ったアプリケーション Neko version 1.0 公開。 - KOYAMA Yoshiaki のブログ
http://kyoshiaki.hatenablog.com/entry/2013/12/14/185334

上記 URL の PCG-LinkMac の記事も参考にしてください。

‘PC-G850VS’ キーワードで検索して来る人も多いし、[id:KYoshiaki:20100523] ‘PC-G850VS購入、PCG-LinkMac 公開’ の情報も古くなったので、 PC-G850VS と Mac ( OS X Mountain Lion 10.8 ) の間でのシリアル通信について、あらためて説明したいと思います。

Mac と PC-G850VS を接続するには、USB・RS232C シリアルポート変換ケーブルと RS232C シリアルケーブルが必要です。RS232C シリアルケーブルは、高松製作所で販売しています。

高松製作所
http://tss.ram.ne.jp/
販売/ポケコン関連/周辺機器

RS232C シリアルケーブル

A01-00014
PC-E200/PC-G800シリーズ用 パソコン接続ケーブル(D-Sub9P)
\3,200
A01-00023
PC-E200/PC-G800シリーズ用 パソコン接続ケーブル(D-Sub9P HF)
\3,500
ハードウェアフロー制御対応

どちらか、1つ選んでください。ハードウェアフロー制御対応がお勧めです。USB・RS232C シリアルポート変換ケーブルについては、後で説明します。また、USB・RS232C シリアルポート変換ケーブルと RS232C シリアルケーブルが一対になったケーブルも販売しています。

A01-00126
PC-E200/PC-G800シリーズ用 パソコン接続ケーブル(USB)
5,800

私は、購入していませんが、これが一番良い選択かもしれません。試していませんが OS X Mountain Lion 10.8 対応の最新ドライバも

FTDI Drivers
http://www.ftdichip.com/FTDrivers.htm
Virtual COM Port Drivers
http://www.ftdichip.com/Drivers/VCP.htm
VCP Drivers の Mac OS X / x64 (64-bit) / 2.2.18 の数字をクリックするとダウンロードできます。

でダウンロードできます。

USB・RS232C シリアル変換ケーブルについては、大まかに Prolific の PL2303、FTDI の FT232RL、SILICON LABS の CP2104 チップを使ったものがあります。現在、Prolific の PL2303 チップを使った純正ドライバ ProlificUsbSerial.kext がダウンロードできなくなっています。

代わりに

stijns/osx-pl2303
https://github.com/stijns/osx-pl2303

から、PL2303用のドライバをダウンロードすることができます。

残念がら、私の環境では、ドライバ osx-pl2303.kext で表示されるデバイス名: /dev/tty.PL2303-002013FD は、オープンできませんでした。/dev/cu.PL2303-002013FD なら問題なく動作しました。また、osx-pl2303.kext は自分でビルドする必要があります。個人的にパッケージ化したのですが、上記問題があるので、公開は控えました。

今現在、一番入手しやすく、動作も安定している USB・RS232C シリアル変換ケーブルは

iBUFFALO USBシリアルケーブル(USBtypeA to D-sub9ピン)0.5m ブラックスケルトン BSUSRC0605BS

iBUFFALO USBシリアルケーブル(USBtypeA to D-sub9ピン)0.5m ブラックスケルトン BSUSRC0605BS

iBUFFALO USBシリアルケーブル(USBtypeA to D-sub9ピン)1.0m ブラックスケルトン BSUSRC0610BS

iBUFFALO USBシリアルケーブル(USBtypeA to D-sub9ピン)1.0m ブラックスケルトン BSUSRC0610BS

です。Mac 対応とは記載されていませんが、

FTDI Drivers
http://www.ftdichip.com/FTDrivers.htm
Virtual COM Port Drivers
http://www.ftdichip.com/Drivers/VCP.htm
VCP Drivers の Mac OS X / x64 (64-bit) / 2.2.18 の数字をクリックするとダウンロードできます。

から OS X Mountain Lion 10.8 対応ドライバをダウンロードできます。

FTDI:
/dev/tty.usbserial-FTG6R5XK
/dev/cu.usbserial-FTG6R5XK

Mac で上の表示されたデバイス名どちらでも、拙作 PCG-LinkMac

PCG-LinkMac
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink

で、PC-G850VS と問題なくシリアル通信ができました。参考までに、私が成功した PCG-LinkMac の環境設定を

載せて置きます。PCG-LinkMac の使用方法は、同封された ReadMe を参照してください。

注意)
PCG-LinkMac プログラムの欠陥で、オープンできないデバイス (例えば、/dev/tty.PL2303-002013FD) を選択すると無限ループに陥ってしまいます。アクティビティモニタで強制終了してください。それから、USB・RS232C シリアルポート変換ケーブルを抜き、PCG-LinkMac を再起動し、環境設定から ‘デバイス名’ を a と入力して ‘保存’ ボタンを押してください。もちろん、a という名前のデバイスは、オープンできませんが、初期設定は a と保存されます。後は、USB・RS232C シリアルポート変換ケーブルを接続して、環境設定で、デバイス名を選択してください。

Version 0
ダンリックの8Kアドベンチャー 日本語版
http://www16.ocn.ne.jp/~ver0/g800/index.html#8kadv850
http://ver0.sakura.ne.jp/g800/index.html#8kadv850

上のアドベンチャーゲームに熱中してしまいました。

ネタばれになりますが、樫の木の前で、木に登ることができます。それには、ロープが必要です。森の西側 –> 西 : 小屋の中 でロープを見つけたのですが、何度試しても、ロープを取ることができません。’ー’ 文字をテンキーのマイナスで入力していたのが原因でした。 ‘ロープ’ と入力する場合、文字 ‘ー’ は、Shift + ‘カナ’ キーで入力する必要がありました。王笏を探し出してゲームをクリアしました。攻略方法を書いてみたいですね!後、ソースの解読を試みました。単純な構造ですが、素晴らしいプログラムです。これを土台にしてアドベンチャーゲームを作ってみたいですね!

OS X and iOS Kernel Programming

OS X and iOS Kernel Programming

  • 作者: Ole Henry Halvorsen,Douglas Clarke
  • 出版社/メーカー: Apress
  • 発売日: 2011/12/16
  • メディア: ペーパーバック
  • 購入: 1人 クリック: 1回
  • この商品を含むブログを見る

上記書籍を読み終えたので、IOKit を使ったドライバについてもわかる範囲で解説してみたいですね。

また、Japanino についても、OS X Mountain Lion 10.8 で問題なく動作しています。次回に、紹介したいと思います。後、私の Mac は、iMac 27インチ Mid 2010 なので、最近の Mac で PCG-LinkMac が問題なく動作するか、心配ですが!

PC-G850V、PC-G850VS とMac の仮想化ソフト Parallels Desktop 7 for Mac 上の Ubuntu 11.10 にシリアル接続し、G850ターミナルでログインする。

前回、予告した PC-G850V、PC-G850VS とMac の仮想化ソフト Parallels Desktop 7 for Mac 上の Ubuntu 11.10 にシリアル接続し、Ubuntu 11.10 ( Linux ) にリモート・ログインできるターミナル (端末)

PC-G850/G815/E200用ソフトウェア
G850ターミナル
http://www16.ocn.ne.jp/~ver0/g800/index.html#g850term
http://ver0.sakura.ne.jp/g800/index.html#g850term

G850ターミナルを紹介したいと思います。

Mac の USB ポートと PC-G850V、PC-G850VS 周辺機器接続端子(11ピン) にそれぞれ 秋月電子通商 USB・RS232C シリアルポート変換ケーブル、高松製作所 RS232C シリアルケーブル を接続し、Mac の仮想化ソフト Parallels Desktop 7 for Mac 上の Ubuntu 11.10 にシリアルポートからログインするためには、Ubuntu 11.10 上に /etc/init/ttyS0.conf ファイルを作成する必要があります。

絶対無糖 (Zettai Non Sugar): Ubuntu でシリアルポートからログインする
http://zettai-non-sugar.blogspot.com/2009/05/ubuntu.html
SerialConsoleHowto - Community Ubuntu Documentation
https://help.ubuntu.com/community/SerialConsoleHowto

上記、URL が参考になります。簡単に説明すると Parallels Desktop 上の Ubuntu 11.10 で Terminal を起動します。

ここでは sudo を何度も使うのは面倒なので sudo su を使ってスーパーユーザーになります。

yoshiaki@ubuntu:~$ sudo su
[sudo] password for yoshiaki:
root@ubuntu:/home/yoshiaki# 

/etc/init ディレクトリに移動し、属性と一緒に tty1.conf ファイルを ttyS0.conf にコピーします。

root@ubuntu:/home/yoshiaki# cd /etc/init
root@ubuntu:/etc/init# cp -p tty1.conf ttyS0.conf

ttyS0.conf ファイルを次のように編集します。

# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.
start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]
respawn
exec /sbin/getty -L 9600 ttyUSB0 vt220 

編集には vi、emacs などを使ってください。

重要なのは

exec /sbin/getty -L 9600 ttyUSB0 vt220 

の一行です。それぞれ

通信ボートレート: 9600 bps
シリアルポートデバイス名: ttyUSB0
端末エミュレータ: vt220

を表しています。

シリアルポートのデバイス名は、コマンド dmesg で確認できます。Parallels Desktop 7 上で Ubuntu 11.10 を起動し、秋月電子通商 USB・RS232C シリアルポート変換ケーブルを Mac の USB ポートに繋ぐと Mac 側か Ubuntu 11.10 側のどちらに接続するか尋ねてくるので、Ubuntu 11.10 を選択します。

Terminal でコマンド dmesg を使うと

yoshiaki@ubuntu:~$ dmesg
[  128.609750] usbcore: registered new interface driver usbserial_generic
[  128.609751] usbserial: USB Serial Driver core
[  128.610480] USB Serial support registered for pl2303
[  128.610861] pl2303 2-1:1.0: pl2303 converter detected
*[  128.625703] usb 2-1: pl2303 converter now attached to ttyUSB0
[  128.625713] usbcore: registered new interface driver pl2303
[  128.625717] pl2303: Prolific PL2303 USB to serial adaptor driver
[  129.884737] init: ttyS0_org main process (1743) terminated with status 1
[  129.884757] init: ttyS0_org main process ended, respawning
yoshiaki@ubuntu:~$ 

上の * 印より、シリアルポートのデバイス名 ttyUSB0 が判明します。秋月電子通商 USB・RS232C シリアルポート変換ケーブルは、変換チップに PL2303 を使っています。Ubuntu 11.10 上ではドライバを必要としません。

コマンド lsusb でも確認できます。

yoshiaki@ubuntu:~$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 203a:fff9
Bus 002 Device 002: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
yoshiaki@ubuntu:~$ 

また、Ubuntu 11.10 に含まれる端末エミュレータは、/lib/terminfo ディレクトリの

root@ubuntu:/etc/init# cd /lib/terminfo
root@ubuntu:/lib/terminfo# ls -alF
total 60
drwxr-xr-x 15 root root 4096 2011-09-17 04:29 ./
drwxr-xr-x 20 root root 4096 2011-10-25 18:16 ../
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 a/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 c/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 d/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 E/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 h/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 l/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 m/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 p/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 r/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 s/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 v/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 w/
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 x/

v ディレクトリから確認できます。

root@ubuntu:/lib/terminfo# cd v
root@ubuntu:/lib/terminfo/v# ls -alF
total 24
drwxr-xr-x  2 root root 4096 2011-10-01 02:31 ./
drwxr-xr-x 15 root root 4096 2011-09-17 04:29 ../
-rw-r--r--  1 root root 1194 2011-09-17 04:29 vt100
-rw-r--r--  1 root root 1188 2011-09-17 04:29 vt102
-rw-r--r--  1 root root 1279 2011-09-17 04:29 vt220
-rw-r--r--  1 root root  470 2011-09-17 04:29 vt52
root@ubuntu:/lib/terminfo/v# 

VT200 の端末エミュレータUbuntu 11.10 にはないようなので VT220 を用いました。詳しくはないので、これで正しいのかわかりません。端末エミュレータの定義は w3m などに使われます。

コマンド start ttyS0 (sudo start ttyS0) で開始します。

root@ubuntu:/etc/init# start ttyS0
ttyS0 start/running, process 2318
root@ubuntu:/etc/init# exit
exit
yoshiaki@ubuntu:~$ 

これで、Ubuntu 11.10 側の設定は終わりです。

PC-G850V、PC-G850VS 側は、

PC-G850/G815/E200用ソフトウェア
http://www16.ocn.ne.jp/~ver0/g800/index.html#g850term
http://ver0.sakura.ne.jp/g800/index.html#g850term

から、G850ターミナル ソースとバイナリ[ g850term20080419.zip ] をダウンロードし、その中に含まれるファイル g850vtermj.ihx を拙作 PCG-LinkMac [ http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html#pcglink ] を使って、PC-G850V側に転送します。PCG-LinkMac の ReadMe ファイルを参考にしてください。

Mac OS X 10.7.2 Lion のドライバ問題の回避方法が

2011-07-31 - KOYAMA Yoshiaki の日記
http://d.hatena.ne.jp/KYoshiaki/20110731

に説明されています。

Mac 側の PCG-LinkMac から PC-G850V側 にファイル g850vtermj.ihx を転送する方法を簡単に説明します。

ファイル g850vtermj.ihx のサイズが大きいので、まず最初に PC-G850V の ON キーを押して電源を入れた後、ボールペンなどでリセットスイッチを押して PC-G850Vを初期状態にします。(注意、リセットすると保存したすべての BASIC プログラムなどが消去されるので、事前に Mac 側に退避しておいてください。)

Mac 側、PC-G850V側 のシリアル入出力条件を設定し、PC-G850V側で機械語モニタモードに入ります。g850vtermj.ihx のために必要なユーザーエリアは 722B ですが、念のため 7600 にします。その後、R 命令を使ってデータを読み込んでください。読み込みが終了するとデータが入ったエリア(領域)が表示されます。今回は INFO:0100-722B がそれに当たります。

MON
*USER 7600
*R
INFO:0100-722B
*

読み込みが終了したら G100 でで G850 ターミナルを実行します。シリアルポートが繋がっていないので、何も表示されませんが、BASIC キーを押して端末の設定を行います。

*G100

数字キーで設定を変更でき、リターンキーを押すと変更しません。現在の状態は、[ ] の中に表示されています。私の設定は

BAUD 5: 9600
PARITY 0: none
FLOW 0: none
ECHO 0: off
SCREEN 2: 36*6
KANJI: 2: SJIS

です。設定が終わったら、OFF キーで終了してください。端末の設定は、実行中 (Ubuntu 11.10 にログイン中)でも BASIC キーを押せば、変更できます。特に、漢字コードや画面サイズは変更したくなるかもしれません。

秋月電子通商 USB・RS232C シリアルポート変換ケーブルをUSB ポートから抜き、再度差します。Mac 側、Ubuntu 11.10 側のどちらに接続するか尋ねられるので Ubuntu 11.10 側をクリックします。

PC-G850V、PC-G850VS 側で、機械語モニタモードに入り G100 で G850 ターミナルを実行します。

login 画面が出ない時は Return キーを押してください。

Ubuntu 11.10 login

login name を入力し、リターンキーを押してください。続いてパスワードを入力し、リターンキーを押します。これでログインできます。後は、Ubuntu 10.10 上の Terminal と同じです。

cat

w3m

ls

Land of Lisp 本、Kindle 版 Steve Jobs、Parallels Desktop 上の Ubuntu 11.10 に PC-G850VS 用 G850ターミナルでリモートログイン。

iOS 5 のダウンロード、iPhone 4S の発売、iCloud の開始時に、 2011年11月5日 Steve Jobs 氏が亡くなったことが発表されました。56歳でした。

ご冥福をお祈りします。

前回、Learning GNU Emacs を読んだ感想を書きましたが、もう少し Lisp について学びたくなりました。そんな中、Lisp 創案者の John McCarthy 氏の訃報を知り、驚きました。

以前、Practical Common Lisp (Books for Professionals by Professionals) の読破に挫折していたので、何か易しい良書がないか探していました。日本語の Lisp 本は、だいたい持っているので、洋書を選ぶことにしました。折角、iPad を所持しているので、Kindle 版の電子書籍にしました。

それで Land of LISP: Learn to Program in Lisp, One Game at a Time! を購入してみしました。魅かれた点は、実際にプログラムを組みながらゲームを作成するところです。

Lisp の実行環境は、Cocoa Eamcs 上の SLIME と sbcl を使用しました。

SLIME: The Superior Lisp Interaction Mode for Emacs
http://common-lisp.net/project/slime/

sbcl のインストールには homebrew を用いました。

Homebrew ― MacPorts driving you to drink? Try Homebrew!
http://mxcl.github.com/homebrew/

まだ、読み始めたばかりです。Lisp の基本的な部分の理解が深まりました。

Lisp の表記には、Code Mode と Data Mode の2つあります。

P36
Location 1247
> (+ 1 2)
3
> (expt 2 3)
8
> 2
2

Code Mode は、実際に式が評価されます。上の例では (+ 1 2)、(expt 2 3)、 2 がそれぞれ Code Mode として評価されます。

> '(+ 1 2)
(+ 1 2)
> '(expt 2 3)
(EXPT 2 3)
> '2
2
> '(one two three)
(ONE TWO THREE)
> 'one
ONE
> '(1 2 3)
(1 2 3)

式の先頭に ‘ を追加すると Data Mode になります。これまで理解できなかった部分が明解になりました。

nil、()、'()、’nil の扱いについても、はっきりしました。

P51
The Four Disguise of ()
> (eq '() nil)
T
> (eq '() ())
T
> (eq '() 'nil)
T 

また、ドット対記法も理解できました。

> '(1 2 3)
(1 2 3)
> (cons 1 (cons 2 (cons 3 nil)))
(1 2 3)
> '(1 . (2 . (3 . nil)))
(1 2 3)
> (cos 1 (cons 2 3))
(1 2 . 3)
> '(1 . (2 . 3))
(1 2 . 3)

リスト (1 2 3 ) は、最後が nil で終わるリスト。(1 2 . 3) は、最後が 3 で終わるリスト。

リストを図にすると上のようになります。図で表すと理解しやすいと思います。

Land of LISP: Learn to Program in Lisp, One Game at a Time! を読んでいる途中、Amazon.comKindleスティーブ・ジョブス氏の伝記が発売開始になりました。即購入しました。値段は $18.09 です。日本語版のように上下2冊にわけられるのではなく、1冊のようです。Apple 関連の本は、いろいろ読んでいるので、おおまかな内容がわかっています。そのため、英語ですが、割と読みやすいです。特に NeXT 関係の箇所を楽しみにしています。まだまだ先ですが、すごいページ数です。(汗)

また、Ubuntu 11.10 (日本語 Remix CD) を 仮想化ソフト Parallels Desktop 7 for Mac にインストールしたついでに、以前から試したかった PC-G850VS と Linux をシリアル接続し、Ubuntu 11.10 ( Linux ) にリモート・ログインできるターミナル (端末)

PC-G850/G815/E200用ソフトウェア
G850ターミナル
http://www16.ocn.ne.jp/~ver0/g800/index.html#g850term
http://ver0.sakura.ne.jp/g800/index.html#g850term

G850ターミナルを試してみました。

Parallels Desktop 7 上の Ubuntu 11.10 にリモートログインし、w3m、vi などの動作にも成功しました。次回紹介したいと思います。それにしてもすごいプログラムですね!

Ubuntu 11.10 login

w3m

ls

iYKRSSHD、OS X Lion 10.7、PCG-LinkMac とシリアルポート

本題に入る前に宣伝です。

拙作 iPadRSS リーダー iYKRSSHD を通常価格 85 円のところ、8月一杯まで無料で公開します。


iYKRSSHD
カテゴリ/ニュース
8月一杯まで無料
iPad 用のシンプルな RSS リーダー。RSS フィードの更新をマルチタスキング機能に対応しました。また、バックグラウンドで RSS フィードの更新が終了すると画面に通知します。
http://itunes.com/apps/iYKRSSHD

よかったらダウンロードしてください。

とうとう OS X Lion 10.7 が Mac App Store で 2600 円で発売されましたね。

早速、OS X Lion を Mac App Store からダウンロードしました。Snow Leopard から OS X Lion にアップグレードするとインストーラが削除されてしまいます。そのため、インストール DVD が作成できません。それで、インストーラを一旦終了して

OS X LionのインストールDVDを作成する方法 | トブ iPhone
http://applembp.blogspot.com/2011/07/os-x-liondvd.html
【コラム】新・OS X ハッキング! (6) Lionへアップグレードするその前に〜インストールDVDをつくろう〜 | パソコン | マイコミジャーナル
http://journal.mycom.co.jp/column/osxhack/006/index.html

を参考にインストール DVD を作成しました。(Snow Leopard から OS X Lion にアップグレードするとリカバリー HD が作成されます。インストール DVD は、必要なかったかもしれません。リカバリーHD は Mac を Option キーを押したまま起動すると現れます。)

また、作成しインストール DVD で OS X Lion をインストールするとリカバリーHDが作成されないようです。インストール DVD を作成した後、普通にインストーラを使って OS X Lion を一度インストールしました。

ハードディスクのパーテーションの区切り方によっては OS X Lion がインストールができない人もいたようです。私は BOOTCAMP、Macintosh HD の2つのパーテーションでしたが問題はありませんでした。

OS X Lion にアップグレードした後、クリーンインストールするために、先程作成したインストール DVD をドライブに挿入し、C キーを押したまま Mac を起動しました。ディスクユーティリティを使って OS X Lion のパーテーションを Mac OS 拡張 (ジャーナリング)で消去し、OS X Lion を再インストールしました。

Mac を起動すると Time Machine からデータを復元することができます。余計なものを復元して欲しくなかったので、ユーザ、設定だけ復元しました。iPhoneiPad 開発に必要な鍵もしっかり復元されていました。

後は、XcodeParallels DesktopVMware Fusion など最新版をインストールしました。特に問題はありませんでした。

また、私が日頃利用している自作ソフトも問題なく動作しました。ただし、PCG-LinkMac は、シリアルポートを見つけることができませんでした。

以下のサイトから

Welcome to Prolific
http://www.prolific.com.tw/eng/downloads.asp?id=31
md_PL2303_MacOSX10.6_dmg_v1.4.0.zip

ドライバをダウンロードしてインストールしました。

インストールするドライバのファイル名を表示するには、インストーラを起動して、メニュー ‘ファイル/ファイルを表示’ を選べば、表示できます。

’/アプリケーション/ユーティリティ/コンソール’ を起動して、下図のように、ファイル kernel.log を選択します。その後、RS232C シリアル変換ケーブルを接続すると

Jul 26 xxx:xx:xx xxxxxxxx-no-iMac kernel[0]: PL-2303/X V1.3.0 start, Prolific

と表示され、ドライバが読み込まれていることが確認できます。

ただし、PCG-LinkMac のパリティが ‘Odd: 奇数’ だとエラーが生じます。パリティを ‘なし: none’ にするとうまく動作しました。

また、Japanino で利用する Ardunio も USB シリアルポートを見つけることができませんでした。Japanino を USB に差すと

Jul 26 xxxx:xx xxxxxxxx-no-iMac kernel[0]: 0        0 AppleUSBCDC: start - initDevice failed

というエラーが出てドライバが読み込まれません。原因を追及することができませんでした。ただ、

AppleUSBCDC: start initDevice failed - InsanelyMac Forum
http://www.insanelymac.com/forum/index.php?showtopic=262659

のサイトから判断すると Apple 側に問題があるのかもしれません。

MacPorts をやめて Homebrew や RVM – Ruby Version Manager もインストールしてみました。次回にでも詳細について書きたいと思います。

PC-G850V、PC-G850VS 用 SDCC版 Minesweeper ver 1.0

SDCC - Small Device C Compiler
http://sdcc.sourceforge.net/

iPadiOS 4 に熱中している合間に Mac 上で動作する SDCC の C言語を使って、PC-G850V、PC-G850VS 用マインスイーパーを作成していました。何とか動作するようになったので、需要があるかどうかわかりませんが、下記ページで PC-G850V、PC-G850VS 用 SDCC版 Minesweeper ver 1.0 と自作のライブラリを公開します。(自作ライブラリの著作権は放棄しますので、良かったら自由に使ってください。)

PC-G850V
SDCC 版 Minesweeper ver 1.0
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html

まるひろさんの PC-G850V エミュレータを使って、拙作 SDCC 版 Minesweeper ver 1.0 実行した動画を添付しておきます。 (動画の録画には、QuickTime Player バージョン 10.0 の ‘新規画面収録’ を使用し、編集には iMovie ’09 を利用しました。)

Version 0
http://www16.ocn.ne.jp/~ver0/index.html
http://ver0.sakura.ne.jp/
Linux/Windows/MacOSX用ソフトウェア
SHARP PC-G850/G815/E200エミュレータ g800 version 0.9.8
http://www16.ocn.ne.jp/~ver0/pc/index.html#g800
http://ver0.sakura.ne.jp/pc/index.html#g800

動画
http://youtube.com/watch?v=_Xf9NC514bo

公開されている SDCC 版 Minesweeper ver 1.0 はソースも含まれています。Makefile の書き方は

Pocket Game Library - INDEX
http://pocketgame.web.fc2.com/
Pocket Game Library - PC-G850 GAME
SDCC用ライブラリ + サンプルゲーム ギャラクシーウォール
http://pocketgame.web.fc2.com/game_g.html#g04

を参考にしました。

sdcc で -mz80 を指定するとライブラリ /Developer/sdcc/share/sdcc/lib/z80/z80.lib (Mac OS X 専用パス) をリンクします。z80.lib に含まれる関数は

/Developer/sdcc/share/sdcc/lib/src/z80 $ ls
README		divsigned.s	memmove.s	mulchar.s	stubs.s
crt0.s		divunsigned.s	mod.s		putchar.s
crt0_rle.s	fstubs.s	modsigned.s	shift.s
divmixed.s	heap.s		mul.s		strlen.s

/Developer/sdcc/share/sdcc/lib/src/z80/ (Mac OS X 専用パス) に関数名のファイルとして含まれています。

拙作 Minesweeper ver 1.0 を make で作成中にできる minesweeper.map を参照すればリンクされる関数名や関数の番地も分かるので PC-G850VS の機械語モニタでブレークポイント設定するのに便利です。

PC-G850VS の画面描画の仕組みについては

COSMO PATROL
http://orange.kakiko.com/cosmopatrol/
1ドットの誘惑
http://orange.kakiko.com/cosmopatrol/1dot/dot.html

で学びました。

IOCS について

SHARP PC-G850 解析資料
http://www.akiyan.com/pc-g850_technical_data

が参考になります。

Mineswepper ver 1.0 を作成中に乱数をどうやって発生させるのか、皆目見当も付かなかったのですが!たまたま、まるひろさんの

Version 0
http://www16.ocn.ne.jp/~ver0/index.html
http://ver0.sakura.ne.jp/
PC-G850/G815/E200用ソフトウェア
PC-G850用ライブラリ
http://www16.ocn.ne.jp/~ver0/g800/index.html#libg800
http://ver0.sakura.ne.jp/g800/index.html#libg800

PC-G850用ライブラリで 線形合同法を利用することを知り Wikipedia で調べました。

擬似乱数 - Wikipedia
http://ja.wikipedia.org/wiki/%E7%96%91%E4%BC%BC%E4%B9%B1%E6%95%B0
Pseudorandomness - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Pseudorandom_numbers
List of random number generators - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/List_of_random_number_generators

下記ページが一番理解しやすいと思います。

 Linear congruential generator - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Linear_Congruential_Generators

こんな簡単な式

{X_{\fs{+1}n+1}  = (a{X_{\fs{+1}n} + c) \text { mod m}

で疑似乱数を発生できるのですね!

私の理解不足か、拙作 Minesweeper ver 1.0 の疑似乱数発生の周期が小さいような気がします。

SDCC - Snapshot Builds
Documentation
Full documentation, including HTML and PDF files; zip is for Windoze (docs)
http://sdcc.sourceforge.net/snap.php#Docs
sdccman.pdf

sdcc、sdasz80、sdcclib、packihx の使用方法やコマンドラインは、上記ページからダウンロードできる Zip ファイルに含まれる sdccman.pdf を参考にしました。

作成中のPC-G850用Cライブラリ - Tosikの雑記
http://d.hatena.ne.jp/tosik/20061023/1161551560

インラインアセンブラのサンプルとして上記ページも参考にしました。最近の SDCC では、文法が

誤) _asm  -> 正) __asm
誤) _endasm;  -> 正)  __endasm;

に変更されているので注意してください。

IOCS ルーチンを C とインラインアセンブラで作成する時に

sdcc -mz80 -c --opt-code-size -o iocs.rel iocs.c
iocs.c:22: warning 85: in function printchar unreferenced function argument : 'x'
iocs.c:22: warning 85: in function printchar unreferenced function argument : 'y'
iocs.c:22: warning 85: in function printchar unreferenced function argument : 'ascii'
iocs.c:45: warning 59: function 'inkey' must return value
iocs.c:45: warning 85: in function inkey unreferenced function argument : 'keycode'
iocs.c:59: warning 59: function 'inkeyWait' must return value
iocs.c:79: warning 85: in function vram unreferenced function argument : 'x'
iocs.c:79: warning 85: in function vram unreferenced function argument : 'y'
iocs.c:79: warning 85: in function vram unreferenced function argument : 'size'
iocs.c:79: warning 85: in function vram unreferenced function argument : 'address'

上のような警告が表示されます。関数の引数を参照しなかったり、返り値を宣言していないためです。
警告を防ぐため

/*=====================[ iocs.c ]=====================*/
#pragma disable_warning 59
#pragma disable_warning 85
/*================================================*/

と宣言しました。

~/Minesweeper/Sources $ make
sdasz80 -gl -o crt0.rel crt0.asm
sdcc -mz80 -c --opt-code-size -o minesweeper.rel minesweeper.c
sdasz80 -gl -o data.rel data.asm
sdcc -mz80 -c --opt-code-size -o iocs.rel iocs.c
sdcclib iocs.lib iocs.rel
sdcc -mz80 -c --opt-code-size -o library.rel library.c
sdcclib library.lib library.rel
sdcc -mz80 --code-loc 0x108 --data-loc 0 --no-std-crt0 -o minesweeper.ihx crt0.rel minesweeper.rel data.rel iocs.lib library.lib -L .
packihx minesweeper.ihx > minesweeper.hex
packihx: read 723 lines, wrote 523: OK.
~/Minesweeper/Sources $ 

上のようにうまくビルドすることができました。

BASICマインスイーパーと違って旗を立てたり、開いたセルに書かれている数字の数だけ、周りのセルに旗を立てて、数字の書かれたセルをスペースキーで押すと自動的に旗を立てていないセルを開くことができます。パソコン版のマインスイーパーでよくあるダブルクリック機能と同じ動作です。

SDCCの C コンパイラには、いろいろ苦労させられました。何とか動作できるものができました。

ブログとホームページ [ http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html ] にアクセス解析を設置しているのですが、ブログを検索エンジンからキーワード ‘PC-G850VS’ などで訪れる人は、私が確認した限りすべて Windows ユーザーです。

PC-G850V
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html

を訪れる人もほとんどが Windows ユーザーです。折角公開した PCG-LinkMac もあまり使われていないうようです。残念です。

私自身 VMware FusionWindows XPSHARP 製 ‘PC-Gリンク’ で、インテルヘキサ形式ファイルの送信時にエラーが出るので ‘拙作 PCG-LinkMac’ には重宝しています。

最近の Mac だと PCG-LinkMac が正しく動作するか心配ですが!

対処方法として ’アプリケーション PCG-LinkMac’ を右クリックして ‘パッケージの内容を表示’ を選び ‘Contents/Resources/Japanese.lproj/’ フォルダの ‘Localizable.strings’ ファイル

PCG-LinkMac.app/Contents/Resources/Japanese.lproj/Localizable.strings
"pcg_send_duration"="0.001";
"pcg_receive_duration" = "0.005";

上の値を変更すればうまくいくかもしれません。’Localizable.strings’ ファイルの文字コードUTF-16 なので注意してください。

PC-G850VS購入、PCG-LinkMac 公開

予約した iPad の 28 日の到着を首を長くして待っている状態ですが!

以前 ‘PC-G850VS 販売’ で検索した時、工業高校生のための需要も一段落した5月に入荷予定と書いてありました。今回検索すると

Robot Shop Technologia ( ロボット専門店 テクノロジア )
http://www.technologia.co.jp/index.html

で販売していました。思わず購入してしまいました。

話は変わって、Unix の基本的なプログラミング知識がないので、Beginning Linux Programming

kindle 版を購入してみました。kindle 版は少し古いのですが、サンプルをダウンロードして確認すると問題なさそうでした。実際、読んでみると良書でした。Unix でプログラミングを始める人はぜひ読んでみるべきです。5章の Terminals と 15章 Sockets を読むと

Index of /jerm
http://www.bsddiary.net/jerm/

jerm のプログラムを完全ではないのですが理解できるようになりました。

ポケコンとパソコンをつなぐ前に
http://www1.plala.or.jp/kurikou/pokekon/trans/intro.html

でダウンロードできる。’PC-Gリンク’ の Mac 版を作成してみました。

PCG-LinkMac

PC-G850V
http://kyoshiaki.sakura.ne.jp/osx/pcg850v.html

を公開します。

PC-G850VS、PC-G850V と Mac を接続するには

高松製作所
http://tss.ram.ne.jp/

のパソコン接続ケーブル (USB)を利用するのが一番簡単です。ドライバもダウンロードできます。

私は “VS-60R USB-RS232Cシリアルポート変換アダプタ (サン電子)” と”共立エレショップのポケコン学習キットに付いていたシリアルケーブル RB-PCIF (配線を二対変更)”を持っているのですが、新調してみました。

凡庸汎用にしたかったので、高松製作所からパソコン接続ケーブル(シリアル)を購入し、

パソコン接続ケーブル(シリアル)

USBシリアル変換ケーブルを

秋月電子通商 - 電子部品・半導体 【通販・販売】
http://akizukidenshi.com/catalog/default.aspx
USB・シリアル変換ケーブル(延長ケーブル付:グレー色)
通販コード M-02747
メーカー GLORYMARK
発売日 2008/10/20
※Mac 及び Windows XP-64bit版は動作保証しておりませんのでご注意ください。
※変換チップにPL2303を使用

ここでは撮れていませんが、延長ケーブルも含まれています。

から買いました。秋月電子通商では Mac OS X には動作保証がありませんが、Mac OS X 凡庸汎用ドライバを直接

Serialio - Products - USB RS-232 Adaptor
http://serialio.com/products/adaptors/usb_serial.php

から、ダウンロードしてインストールすれば問題なく動作します。

また、USB シリアル変換器 ELECOM UC-SGT USB to シリアルケーブル

Amazon カスタマーレビューを読むと

Serialio - Products - USB RS-232 Adaptor
http://serialio.com/products/adaptors/usb_serial.php

同じくMac OS X 凡庸汎用ドライバをインストールすれば動作するようです。

折角、拙作 PCG-LinkMac を作ったので

ポケコンリンク集
http://www.sharkpp.net/pokecom/pclink.html

を参考にアプリをいろいろダウンロードし、拙作 PCG-LinkMac で送信できるか試してみました。

入出力の設定は、メニュー ‘PCG-LinkMac/環境設定…’ で設定できます。


大きなファイル TheRuinForce の転送にも成功したので、大丈夫だと思います。

PC-G850VS から送信されたファイルの受信で、最初の1バイト読み飛ばすバグがあります。原因を特定できませんでした。注意してください。

改行については、mi

mi - Mac OS Xテキストエディタ
http://mimikaki.net/

で判断できますが、テキスト終了コード 1A の判断にはバイナリエディッタ

0xED
http://www.suavetech.com/0xed/0xed.html

が役に立つと思います。

Pocket Game Library - PC-G850 GAME
http://pocketgame.web.fc2.com/game_g.html

で SDCC について知り、

SDCC - Small Device C Compiler
http://sdcc.sourceforge.net/

早速試してみました。大人の科学マガジン Vol.27(8ビットマイコン)そっちのけで、PC-G850VS プログラミングにはまっています。SDCC で作った実験段階のプログラム実行画面を添付しておきます。BASIC ではなく SDCC のC言語アセンブラで作成しています。