月別アーカイブ: 2018年3月

STEINS;GATE

4月から新シリーズがあるみたいなので、まずはTVシリーズの最初のものを見てみました。
5pb./Nitroplusということで、CHAOS;HEADとか好きだったので、難なく視聴できました。OP曲もいとうかなこさんでいい感じでした。

話の中心は、タイムリープ・タイムトラベルですが、出だしでは触れられてなかったので、見ていくうちに小出しに演出されていて、次第にはまっていくのが自分的に心地よかったです。世界線という言葉で自分が存在している時間軸を表現していて、偶然発明したタイムマシン機能で過去にメールを送ることで、世界線をかえて世の中が変わっていくという点がなかなか良かった。これにより、幼馴染が死に至ってしまうのを、変えた世界線を苦労して戻していくという展開がいいです。過去を変えてしまうと大事になるって事を次第に理解して、なんとか戻道とするのもよかった。
ジョン・タイターネタやネットスラングも数多く出てきて、元ネタを知ってるとより楽しめるのがいい感じです。

プロセス間通信

VOSにもUNIX系システムにあるようなプロセス間での同期処理やデータ共有を行うための仕組みがあります。

1.イベント通知
ダミーのファイルを用意して、受信側プロセスへ送信側プロセスからイベントという通知を行うことができます。業務ではあまり使う機会がありませんでしたが、使い方では利用価値があります。

2.キュー
キューという特殊なファイルを使っての通信手段です。一方通行の1 Way Server Queue、データの送受信ができる2 Way Server Queue、相手がいなくても送れるメッセージキューがあります。それぞれのキューによってアクセス方法が異なるので、用途に合わせた作りこみとなります。

3.共有メモリ
物理ファイルと合わせてプロセス間でメモリ共有を可能にします。同じアドレスにデータをマップし、それぞれのプロセスでメモリI/Oを瞬時に別プロセスへ反映できます。別プロセスで同じメモリアクセスを防ぐのにロック機能を使用して排他制御を独自行う必要がありました。

4.シグナル
シグナルもAPIが用意されてます。シグナル処理をしてないプログラムは、シグナルを受信するとデフォルト動作を行います。BREAKシグナルだと、プロセス情報を表示してユーザープロンプト待ちにできます。端末がないプロセスは終了しますが。デフォルト動作が異常事態にわかりやすい情報を残すので、慎重にプログラムしないと情報を失ってしまう場合もあるので実務ではほとんど使いませんでした。

コマンドFORM

Stratus VOSの強力なユーザーインターフェイスにコマンドFORM機能があります。作成するプログラムやコマンドマクロ(いわゆるシェルスクリプトみたいなもの)に一定のコーディング規則の1つとして、プログラムにはs$parse_command、コマンドマクロには&begin_parametersという記述を加える事で、一貫したFORM機能を持つこととなり、プログラムの引数をユーザーから指定して渡すことができるようになります。
それ故、引数が不明なコマンドでも、コマンド名をタイプしてDISPLAY FORMキーを押すか、引数に-formを指定すると画面にどのような引数を受けられるか表示します。必要なデータを指定して実行するとコマンドを実行できます。コマンド名がわかっていて、引数がわからない場合に有効です。コマンドもコマンドマクロも同じように表示されるので、ユーザーにはコマンドなのかコマンドマクロなのか区別することなく同じように利用できます。コマンドFORMを開いて、実行のキャンセルもできるので、ユーザープログラムも規則に従ってプログラムしておいた方が便利になります。まあ、こんな機能不要!と割り切ってプログラミングするのもアリですが。

サブルーチンリファレンスでもs$parse_commandの説明が一番長いと思われます(記憶が若干あいまいですが)。この機能だけでも1冊のマニュアルが書けてしまうくらい多機能なのでプログラミングする方は熟知すべきサブルーチンの1つです。

LUNAR ESCAPE


マイコンゲームの本4掲載。宇宙船を操作して進んでいくレース系のゲーム。ショットで敵も破壊できるのですが、攻撃していい敵とダメな敵を慣れながら覚えていく必要があります。それなりに遊べるゲームです。

FMS

Stratus VOSにはForms Management System(FMS:書式管理システム)というtelnetなどの端末上で画面制御を行う非常に強力なパッケージを持ってます。LinuxでnCursesがありますが、それに含まれるformライブラリがそれに近いと思います。Formという言葉から想像できると思いますが、画面を帳票イメージで表示を行い、入力項目の入力を促し、プログラムは1画面単位の情報を受け取って処理することができます。Windowsなどで言う、ダイアログというか1ウインド単位での画面I/Oを行う感じです。
今現在で、画面操作を行おうとすると、Webサーバを立ち上げてCGIなどでサーバへデータを受けて処理するようなシステムが主流かと思いますので、レガシーな方法となってるのかも。
画面のI/Oでも多言語対応ですので、背景項目や入力項目に漢字やいろいろな言語を使うことが可能です。まあ、それなりに使い込んでないと多言語を扱うのは設定とプログラミング技術が必要でしたけどね。漢字とカナで2言語なので、その使い分けは意味を知らないと何でこういった設定で、こういった処理が必要か理解できないと思います。業務で使うノウハウや日本語マニュアルは残してきたので使い込めてるでしょう。

このシステムが、約30年前に普通に使えたので、UNIX系OSで画面操作を行おうとしたときは、FMSを移植しないとダメかな?とか当時思いました。無いものは仕方ないので、それなりなものは提供しました。韓国へパッケージを売った時は、取り扱ってた会社が独自の画面操作プログラムを持ってたので、それが入手できていれば開発環境もだいぶ変わったのかなと当時思いました。それから時代に流されながら生きてしまったので何も残せなかったのがやや心残り。

ATTACKER


マイコンゲームの本4掲載。アーケードゲーム・スクランブルの移植物です。WICSで書かれており、快適に動作します。この作者はWICS使いなので、雑誌掲載されてるものの大半がWICSで書かれてます。メジャーなゲームの移植も多いので、今でも楽しめるのは非常にありがたいです。
一般公開されてるバージョンより古いものが雑誌掲載となってます。mz700winの作者のページに本作品の作者が公開したものが利用できます。

CLOSS CURSOR


マイコンゲームの本4掲載。動き回るバクテリアを駆逐するゲーム。キャリーラボのバクテリアっぽいですが、ゲーム的には別ゲームです。

ナオミちゃん16

PiO 1984年4月号掲載。16パズルゲーム。まあ、メジャーなパズルゲームなので説明不要でしょう。この手のパズルの場合、空いているところを中心に動かしますが、動かすキー操作が2系統に分かれると思います。これによって慣れの差が出そうな感じです。
キャラクタのグラフィックだけでここまで描けるのはすごいと思います。2000を使ってるときにK/C並みにキャラグラが扱えないのに悔しい思いをしたことがあります。まあ、その分、グラフィックを駆使すれば何とかなるのですけど、処理も重たくなるし煩雑さも増しますからねぇ。

タッコちゃん


I/O 1983年11月号掲載。タコを操作していくゲーム。キャラが結構多いので慣れる頃には楽しめるかも。