一斗BTRON算譜百篇

このページは Nifty のページに引越しました。

超漢字機能追加 ruby を試用してくださる方を募集をしています。
より詳しいことはこちら

【最近の更新情報】
・WideStudio GUIライブラリ組み込み ruby のバグ修正版。('04/01/30)
・WideStudio GUIライブラリ組み込み ruby のバグ報告。('04/01/25)
・WideStudio GUIライブラリ組み込み ruby を追加。('04/01/25)
・超漢字機能追加 ruby の試用者の募集。('03/10/24)
・ruby1.6.8 のソースおよびmake環境を追加。('03/10/24)
・ruby1.6.8 を追加し、ruby1.6.3 と ruby1.6.4 を削除。('03/10/09)
・表実身データの構造説明を追加。('03/01/21)


表実身データの構造


BTRONプログラミング課外授業
TRONWARE連載「BTRONプログラミング道場」辺りのプログラムを超漢字でも動くようにしたり機能拡張したりして遊ぼう。
と思ってやり始めたとたん本家パーソナルメディアから1Bプログラミング道場 超漢字版ソース集が公開されのでそのうち改装します。


世界文字入力小物のT-Code

世界文字入力小物のSKK実験版

DOSコンソール版書庫unpack

仮身ネットワーク階層表示コマンド kn

超漢字コンソール用 wget

超漢字コンソール用 fusenit

超漢字コンソール用 diff, cmp

超漢字コンソール用 startコマンドもどき

TADASM Ruby版

WideStudio GUIライブラリ組み込み ruby

超漢字コンソール用 Ruby1.6.8

超漢字コンソール用 Ruby1.6.5(上の Ruby1.6.8 の方がおすすめです)

TAD形式のスクリプト対応実験版超漢字コンソール用 Ruby

BTRON版 Ruby 今後の予定と抱負

【現在実験中】
・BTRONファイル関係システムコール組み込み
・TAD形式のスクリプトに対応(ライブラリも含めてすべて)
・スクリプト中の仮身をリンクオブジェクトとして扱う

【近いうちに】
・実身/仮身マネージャ関係システムコール組み込み
・多言語RubyでTRONコード対応
・TADデータを扱うクラス

【そのうちに】
・Rubyの付箋化(スクリプトに貼る付箋)
・スクリプト付きRubyの付箋化(スクリプトの対象ファイルに貼る付箋)

【将来】
・スクリプト中の図形セグメントをRuby組み込みのオブジェクトとして扱う
・GUI


● T-Code

超漢字の世界文字入力小物のT-Codeモジュールです。
(部首変換、まぜ書き変換も使えます)

この tcode.binを超漢字の書庫としてダウンロードし解凍すると基本文章 tcode が取り出せますのでその文章を小物の世界文字入力にドラッグして登録してください。
日本語入力モードはローマ字かなモード(画面右下のモード表示が「Ra」ではなく「Rあ」とでるモード)にして使って下さい。

【注意事項】
・QWERTYキーボード用になっています。(ただし他のキー配置にも移行しやすいように実装しているつもりです)
・1ストローク目の文字が必ず表示されるので鬱陶しいかもしれませんが非表示にはできません。
・部首変換のネストは2段までできます。例えば「シ+(木+木)=淋」などできます。
・部首変換の整備がまだ不十分です。例えば「イ+木=休」の変換はできるのに「木+イ=休」はできないなど。
・まぜ書き辞書には「魑魅魍魎」と「貴社/記者/汽車/帰社」関係のエントリしか登録していません。文章の最後の部分が変換辞書ですのですぐわかると思います。自由に追加して試してみて下さい。


● SKK

超漢字の世界文字入力小物のSKK実験版モジュールです。
(カタカナ、英字入力、「/」による英字変換モードも実装しました)

この skk.binを超漢字の書庫としてダウンロードし解凍すると基本文章 skk が取り出せますのでその文章を小物の世界文字入力にドラッグして登録してください。
日本語入力モードはローマ字かなモード(画面右下のモード表示が「Ra」ではなく「Rあ」とでるモード)にして使って下さい。

基本文章の内容の DOSのテキスト版はこちらのskk.txtです。

キーの処理毎にコメントを入れてありますのでどのキーの機能が実装されているかはそれを見ればすぐわかると思います。

世界文字入力小物の制限により
・Ctl-J が SKK で扱えません。代わりに Alt-J を使うようにしています。
・モジュールを書き換える以外に辞書の内容変更はできません。
・変換候補の優先順位の学習もできません。

またこの版は以下のような手抜きがあります。
・実験版の変換辞書に登録しているのは
「かい」、「かき」、「あい」、「あき」、「おおき」、
「おおi」、「おおk」、「うごk」、「きch」、「つかt」
data、file、program
だけです。文章の最後の部分が変換辞書ですのですぐわかると思います。
自由に追加して実験してみて下さい。
・その他いろいろ


● DOSコンソール版書庫unpack

超漢字の書庫管理の unpack機能部分だけをDOSコンソール用に移植したものです。ソースもありますので Unixでも簡単にコンパイルできるでしょう

【インストール方法】
このunpack_exe.bin(36,864バイト)をダウンロードしファイル名を unpack.exe に変えてください。

【使い方】
unpack 書庫ファイル名
を実行すると書庫ファイルがカレントディレクトリの下にunpackされます。

BTRON と DOS/Unix はファイルの構造や文字コードがかなり異なるので以下のような構造に unpack しています。
・実身をディレクトリに、レコードをファイルに対応させています。
・実身に対応するディレクトリは出現順に 0, 1, 2, ... という番号のディレクトリ名を付けています。 ただしそれだけだとどれがどの実身に対応するかわかりにくいので file.inf というファイルに 番号順にファイルタイプと実身名(TRON文字コードのまま!)をリストしています。
・レコードに対応するファイルは 0, 1, 2, ... というレコード番号のファイル名を付けています。 rec.inf というファイルに番号順にレコードタイプとレコードサブタイプをリストしています。
・BTRONでの仮身によるリンクはDOS/Unixには反映されません。

【ソース】
ソースファイルはunpack.lzh(16,467バイト)に入っています。

【コメント】
・ディレクトリ名を番号にしているなどかなり手を抜いていますが自分で使う分には今のところ この機能で十分なのでこれ以上改良する予定はありません。ソースがありますので自由に手を 入れてください。改良していいものができたら私にもください。

【感謝】
このプログラムは書庫管理のソースをもとに作りました。ソースの利用を許可されている書庫管理の作者松島恭治氏に感謝です。


● 仮身ネットワーク階層表示コマンド kn

美崎さんとの協同作成による、仮身ネットワークを指定した深さまで階層表示するコンソール版のコマンドです。
コンソールから起動しますが表示は基本表計算で行ないます。

【インストール方法】
このkn.bin(95,764バイト)をダウンロードし名前を kn に変えて PATH のどこかに置いてください。

使う前に注意!
このソフトの主機能は基本表計算のデータファイルを作成することで表示は起動した基本表計算に任せています。 計算用紙のデータ構造は公開されていませんので私が解析した情報に基づいてデータファイルを作成しています。 PMCは基本表計算以外のアプリケーションで作成したデータを基本表計算に読み込ませた場合の動きを保証していません。 ただ、開発の期間を通して美崎さんの膨大なデータでテストしてもらっていますがデータが壊れたということはありません。(フリーズすることはたまにあるようです)
以上の情報を十分に考慮に入れ判断した上で自己責任でお使いください。

【使い方】
kn [OPTION] [file]

file を起点とする仮身ネットワークを特定の深さまで階層表示します。file を省略したときは作業ファイルを起点とします。
起動するとまず network_info という表が開きます。この表の中に tree0 という表の仮身がありますのでその仮身を起動してください。
network_info を閉じるときに「保存しますか」と聞いてきますが「いいえ」を選んで終了してください。
一つの表に置ける仮身の数に制限があるのでネットワークが大きいときは tree0, tree1, .. と複数の表に分けることがあります。
cli,ucli どちらの環境でも動きますがパス名は cli系です。実身名中の「/」や「:」の前には「%」を置いてください。(他のコマンドでは「%」ではなく「\」を使っていましたが今回から「%」の方を使うことにしました)

【オプション】
簡単な説明

【ちゃんとした説明】
このソフトの協同作成者である美崎さんのオフィスゼロプロデュース2002のページにより詳しい説明が載っていますのでご覧ください。

【ソース】
ソースファイルはkn_C.txt(50,822バイト、EUCコード)です。

【ライセンス】
GPLです。


● 超漢字コンソール用 wget

GNU wget を超漢字コンソール用に make したものです。

このwget_bpk.bin(168,845バイト)を書庫としてダウンロードし解凍すると wget というファイルが取り出せますのでそれを PATH のどこかに置いてください。


● 超漢字コンソール用 fusenit

機能付箋を貼りつけるコマンドです。(cli環境でしか動かないようです)

(注意)かなり実験的なので覚悟して。

【インストール方法】
このfusenit_bpk.bin(28,247バイト)を書庫ファイルとしてダウンロードし解凍すると fusenit というファイルが取り出せますので、それを cli環境(ucli環境ではない)の path のどこかに置いてください。

【使い方】

fusenit -e [-w]
機能付箋エリアス定義表が入ったキャビネットウィンドウを開きます。機能付箋エリアス表の各セルの中にキャビネットが入っていて、そのキャビネット実身名をエリアス名としキャビネットの中にエリアス名に対応する機能付箋を入れます。
初期状態として dled => 仮身一覧、txed => 基本文章編集、の2組をサンプルと入れてますが普通の表ですので自由に追加できます。
-w を付けるとウィンドウが閉じられるまで終了を待ちます。
fusenit 機能付箋エリアス名 パス名 ...
(例)fusenit txed *.txt
拡張子 .txt を持つすべての実身に基本文章編集の機能付箋を貼ります。
ここで txed が基本文章編集を意味しているのは上記の機能付箋エリアス定義表にその対応を定義しているからです。

【ソース】
ソースファイルはfusenit_c.txt(5,903バイト)です。

【ライセンス】
GPLです。

【コメント】
・機能付箋エリアス表が上記のような形式になっていないときは何が起こるかわかりません。
・繰り返しますがかなり実験的ですので覚悟して使ってください。


● 超漢字コンソール用 diff, cmp

GNU diff, cmp を超漢字コンソール用に make したものです。

このdiff_bpk.bin(104,982バイト)を書庫としてダウンロードし解凍するとキャビネットができますのでその中にある diff と cmp を PATH のどこかに置いてください。

cmp.c の NULL_DEVICE関係のところでコンパイルエラーになったのでそこだけコメントアオウトして make を通しました。超漢字 UNIXエミュレーション環境に NULLデバイスありましたっけ。


● 超漢字コンソール用 startコマンドもどき

Windows の startコマンドのようにコンソールから仮身起動するプログラムです。

【インストール方法】
このstart_bpk.bin(27,389バイト)を書庫としてダウンロードし解凍するとキャビネットができますのでその中にある start を PATH のどこかに置いてください。

【使い方】

start パス名
パス名に対応した仮身のデフォルトアプリケーションを実行します。
start パス名 項目番号
パス名に対応した仮身の実行メニューの項目番号(1オリジン)のアプリケーションを実行します。
start -l パス名
パス名に対応した仮身の実行メニューを項目番号(1オリジン)付きで表示します。デフォルトアプリケーションには項目番号の後に '*'マークが付きます。
-w オプション
-w を付けて実行するとアプリケーションの終了を待ちます。
(例)start -w /SYS/USR/練習用キャビネット/練習文章
-V オプション
-V を付けるとパス名ではなく仮身IDを受け付けます。
(例)start -V 126
仮身ID 126 の仮身のデフォルトアプリケーションを実行する。
このオプションを用いればパス名を持たない仮身でも仮身IDさえわかれば操作することができます。
・パス名は /home/toyo のような ucli系ではなくて /SYS/USR/toyo のような cli系です。../ のような親ディレクトリを示すパスは使えません。
・パス中の「/」と「:」はディレクトリ区切り、出現番号区切りと解釈しますので「02/03/18-09:25」のようにファイル名に「/」「:」が入っているときは「02\\/03\\/18-09\\:25」(「''」でクオートするときは「'02\/03\/18-09\:25'」)のように「\」でエスケープしてください。
・このコマンドによるアプリケーションの実行は、仮身のアプリケーションの起動後、仮身の乗っているウィンドウを閉じたような状態と似ていますので設定が保存されない、新規保存先は初期ウィンドウになるなどの現象が起きます。

【ソース】
ソースファイルはstart_c.txt(5,811バイト)です。

【ライセンス】
GPLです。

【コメント】
・通常のウィンドウからの起動とは異なる起動方法なのでそれによる問題が発生するかもしれません、覚悟の上自己責任でお使いください。


● TADASM Ruby版

大よよさんのTADアッセンブラの Ruby版です。
Rubyスクリプトですので Rubyが動くところならどこでも使えます。
ただし日本語コードは EUC専用になっています。 NKFモジュールを使えば簡単な修正で SJIS対応できるでしょう。

TADアッセンブラについては大よよさんの博物館工房のページをご覧ください。

【インストール方法】
このtadasm_rb.txt(10,471バイト)をダウンロードしファイル名を tadasm.rb に変えてください。(拡張子はなんでもよいのですが Rubyスクリプトの標準的な拡張子ということで .rbとしました)

【使い方】
ruby tadasm.rb 入力TADテキストソースファイル名 出力TADバイナリファイル名

【ライセンス】
大よよさんのTADアッセンブラのライセンスにしたがいます。

【コメント】
TADテキストソースの形式について
・FORTRAN のようにカラム位置にきびしい制限を外したい
・COLORVALなどのような1B時代のキーワードの他に最近のキーワードも使えるようにしたい
など思うところがありますが余裕がないので誰かやってくれないかなモード。

【感謝】
Ruby版の公開を許可してくださった大よよさんに感謝です。


● WideStudio GUIライブラリ組み込み ruby

Ruby 1.6.8 超漢字版に WideStudio GUIライブラリを組み込んだものです。
(WideStudio については WideStudio などのページをご覧ください)

Windows や Unix 環境の WideStudio GUIビルダで作成した rubyスクリプトはこの ruby を使うことによって超漢字上でも実行することができます。
(WideStudio GUIビルダの超漢字への移植もチャレンジ中です)

wsruby_bpk.bin1,450,080バイト

wsruby_bpk.bin を書庫としてダウンロードしてアンパックすると wsruby というキャビネットが展開されます。
そのキャビネット内にある ruby が WideStudio GUIライブラリを組み込んだ ruby で、 invader がサンプルのインベーダ・ゲームが入ったキャビネットです。

【サンプルの実行方法】

ucli環境で この ruby を実行できるように(PATHなど)設定した後、invaderキャビネットにいって

  % ruby invader.rb
と実行してください。(ゲームの操作は左右矢印キーとスペースキーで)
このインベーダ・ゲームは サンプルの広場にある wsinv Ruby版を一ファイルにまとめ私好みに書き換えたものです。

● cli環境から実行するときは invader.rb やスクリプト中の "1.png" などが絶対パス指定になるようにして実行してください。

【ソースおよび make環境】

そのうち make環境の整理がついたら公開する予定です。

【コメント】

● サンプルのインベーダ・ゲームでテストした程度のものです。
自己責任でお使いください。
● WideStudio は UNIX や Windows など複数の環境で共通に使えることを目指したものですので(少なくとも現段階では)仮身は使えません。
ユーザインタフェースも BTRON作法とは異なります。

【バグに関して】

● かな漢字変換の変換候補表示がおかしくなるバグは直りました。('04/01/30)
● メニューの項目を選ぶときにマウスボタンを押しながらでないと選べないバグは直りました。('04/01/30)
● Ruby については下の Ruby1.6.8 の説明を参考にしてください。
● WideStudio for BTRON に関しては特定環境での制限事項 などのページを参考にしてください。

【感謝】
WideStudio にかかわる方々、特に WideStudio(およびそのBTRON用版)を開発された平林さんと wsinv Ruby版を作成された後藤さんのお二人には多くのアドバイスをいただきました。


● Ruby1.6.8

旧安定版 Ruby 1.6.8 を最新セルフ開発環境で make した超漢字コンソール用 Ruby(1.6.8)およびライブラリ です。
(最新安定版 1.8 はリリースされてからまだあまり時間が経っていないのでもうしばらく様子を見てから対応します)

ruby168.tgz492,961バイト

ruby168.tgz をバイナリとして(書庫ではありません)ダウンロードして gzip -d ruby168.tgz 後、tar xf ruby168.tar すると bin/ruby と lib/ruby(この下にライブラリ一式が入っている)が展開されます。
rubyコマンドの置き場所はどこでもよいですが rubyライブラリの置き場所は ucli環境の /usr/local/lib/ruby を想定しています。それ以外の場所にライブラリをおく場合は環境変数 RUBYLIB を
setenv RUBYLIB /home/ruby/lib
などのように設定するなどして対応してください。

【注意!】
動かすには UNIXエミュレータ実行環境が必要です。
詳しくはセルフ開発環境のダウンロードのページの UNIXエミュレータ実行環境の項を見てください。
(「超漢字4上」と書いてありますが超漢字3上でも動くと思います)
最新セルフ開発環境を入れると自動的に UNIXエミュレータ実行環境も入りますのでセルフ開発環境を入れた人は改めて UNIXエミュレータ実行環境を入れる必要はありません。

【ソースおよび make環境】
rubybuild_bpk.bin447,295バイト
rubybuild_bpk.bin を書庫としてダウンロードし ucli環境の /usr/local/brightv/appl の下にアンパックすると ruby/src と ruby/pcat が展開されます。
ruby/pcat の下で make するとそこに実行プログラム ruby ができます。
/usr/local/brightv/appl 以外の場所にアンパックした場合は Makefile中の include などを変更してください。

【コメント】

● ruby1.6.8 の最終安定版をセルフ開発環境で make して、ちょっとテストしただけのものです。
自己責任でお使いください。
● 最小機能の ruby に nkf,fcntl,socket だけ組み込んであります。
● 今回からライブラリも一緒につけました。
標準ライブラリの他に Webrick と Erb が入っています。
● 今回から socket を組み込みました。
・ruby のsocket機能を使って PMC の Webページを取ってくるサンプルスクリプトpmcweb.txtです。
・webrick を使って HTTPサーバ(CGI、ERBも対応)を動かすことができます(超漢字4で確認。超漢字3は調査中)。数日中にサンプルをアップロードする予定です。
・socket に関しては上記2つのテストしかしていないのでその他の機能にバグがあるかもしれません。
● 対話インタフェース IRB が動くことを確認しました。
irb.txtです。
● バグについては下の【今回の版で直ったバグ】と【すでに見つかっているバグ】のところを参照してください。

【今回の版で直ったバグ】

● スレッドのスケジューリング、プロセスなども正しく動いていると思います(多分(^_^;))。

【すでに見つかっているバグ】

● signal関係の kill や trap が効きません。
● exec は未実装エラーになります。system などで代用してください。
● IPSocket#peeraddr が常に [AF_INET,0,"0.0.0.0","0.0.0.0"] を返します。
(本来は [AF_INET,ポート番号,相手先ホスト名文字列,相手先IPアドレス文字列] を返さなければならない)

【感謝】
Webrick のテストに協力くださった矢代さんに感謝です。


● Ruby1.6.5

Ruby 1.6.5 を最新セルフ開発環境で make した超漢字コンソール用 Ruby(1.6.5) です。

ruby165_gz.bin335,441バイト

ruby165_gz.bin をダウンロードして gzip -d で解凍するとファイル ruby が取り出せますのでそれを PATH のどこかに置いてください。

【注意!】
動かすには UNIXエミュレータ実行環境が必要です。
詳しくはセルフ開発環境のダウンロードのページの UNIXエミュレータ実行環境の項を見てください。
最新セルフ開発環境を入れると自動的に UNIXエミュレータ実行環境も入りますのでセルフ開発環境を入れた人は改めて UNIXエミュレータ実行環境を入れる必要はありません。

【コメント】

● ruby1.6.8 を置いたので必要ないと思いますが念のため消さずにおきます。
できるだけ上の最新版 Ruby を使ってください。
● ruby1.6.5 をセルフ開発環境で make して、ちょっとテストしただけのものです。
自己責任でお使いください。
● 最小機能の ruby に nkf だけ組み込んであります。
● バグについては下の【今回の版で直ったバグ】と【すでに見つかっているバグ】のところを参照してください。
● ライブラリが必要な場合はRuby の本家サイトなどからバージョン 1.6.5 のものをとってきてください。
RUBYLIB などの環境変数は UNIXエミュレータ実行環境で
setenv RUBYLIB /home/ruby/lib
などのように設定してください。

【今回の版で直ったバグ】

● system(), `...` が動くようになりました。

【すでに見つかっているバグ】

● スレッドのスケジューリング、プロセスなどが正しく動いていないようです。


● TAD形式のスクリプト対応実験版コンソール用 Ruby

プログラムファイルの主TADレコードの文章をスクリプトとして解釈実行するオプションをつけた ruby です。

rubyt1_gz.bin

rubyt1_gz.bin をダウンロードして gzip -d で解凍するとファイル ruby が取り出せますのでそれを PATH のどこかに置いてください。(通常の ruby と同じファイル名だと混同するようでしたらファイル名を付けかえた方がよいでしょう)

オプション -t をつけるとプログラムファイルの主TADレコードの文章をスクリプトコードとして読み解釈実行します。ですので基本文章編集を使って書いたスクリプトを実行できます。
オプション -t 以外は下の Ruby1.6.4 と同じです。

【コメント】

● 非常に実験的であることを覚悟の上、自己責任でお使いください。
● オプションの -t は今のところ ruby が使っていないオプションの中で "TAD" という名前にちなんで選んだものです。このオプション名および仕様は将来確実に変わります。
● 主TADレコードから読むのはコマンドラインで指定したプログラムファイルに対してだけです。require したファイルやライブラリファイルに対しては従来のとおりです。
● EUCコードに変換して解釈するのでスクリプト中に漢字などの ascii文字以外が入っている場合はオプション -Ke をつけて実行してください。
● EUCコードに変換して解釈するのでスクリプトやファイル名に EUCコードに変換できない文字が入っている場合はおかしなことが起こるかもしれません。
● ascii文字に対応するものがある文字は全角幅でも ascii文字に変換して解釈します。
将来は文字列中の文字は幅を考慮するようにする予定です。