2025-02-24

SIMH CLASSICのvax.exeはEthernet対応と非対応がある

Hobbyist OpenVMS VAXをsimh VAXで動かしてみようとして、いろいろと調査しています。まずsimhですが、simh自体は依然よりありましたが、最近はOpen SIMHというものがあります。その経緯は「Announcing the Open SIMH project」に書かれているとおりですが、これが存在するために従来のsimhはSimH "Classic"と呼ばれるようになりました。

 

新しい方を使ってみたい気もしますが、今回は従来版を使います。その主たる理由は、Windows用のバイナリが提供されているからです。FreeBSDやLinuxなどをホスト環境にするなら、最新版のソースを自分でビルドするのは簡単です。しかしWindowsをホスト環境として使おうと思っており、コンパイラなどは入っていないので、既にビルドされたバイナリを利用しようと考えています。公式サイトに置いてあるので、それを使うつもりです。

 

当初はSIMH 3.9-0のvax.exeを使うつもりでした。しかしネット上で見つかる情報を参考にしても、どうも挙動が異なります。特にネットワークデバイスを扱おうとするとエラーになります。

VAX simulator V3.9-0
sim> show xq
XQ, address=20001920-2000192F*, vector=250, MAC=08:00:2B:AA:BB:CC, type=DELQA-T,mode=DELQA, poll=100, not attached
sim> show version
VAX simulator V3.9-0 [64b data, 64b addresses, no Ethernet]
sim>


何が悪いのか不明でしたが、公式サイトにあるドキュメントを読んでも、解決に至りません。特に「SIMH FAQ」では次のように書かれています。ここで記されているように、「The pre-compiled binaries」は「Ethernet support」が有効なのです。ただしWinPCAPが入っているのが前提ですが、Wiresharkを利用していることもあり、インストール済です。

 2.2 How do I install SIMH with Ethernet support on Windows?
The pre-compiled binaries will provide Ethernet support depending on whether or not the WinPCAP package has been installed on the host computer. (以下略)

 

なかなか解決できなかったので、SimH Classicの古いバージョンのバイナリで試してみようと考えました。公式サイトを核にすると、ビルド済バイナリは、2種類あるようです。

simhv38-1-exe-ether.zip    2009-02-08 11:08     763K     
simhv38-1-exe.zip    2009-02-08 11:07     2.6M     

ファイル名に「-ether」がついている方のバイナリを利用してみたら、うまくいくようです。

VAX simulator V3.8-1
sim> show xq
XQ, address=20001920-2000192F, no vector, MAC=08:00:2B:AA:BB:CC, type=DELQA, poll=100, not attached
sim> show version
VAX simulator V3.8-1 [64b data, 64b addresses, Ethernet support]
sim>

 

「show version」で出力を見れば、Ethernetサポートの有無は一目瞭然なのですが、「show xq」の出力だけを見ていると、Ethernetサポート無しでも、サポートされているかのような出力が出てくるので、なかなか気づけませんでした。

 

またSimH ClassicはV3.12-5が最新ですが、ビルド済バイナリが公式サイトに置かれていません。しかもV3.9-0には「-ether」の付いたファイルも置かれていないのです。そうなると、自前でビルドしないなら、Ethernetサポート済なのは、V3.8-1となります。

2025-02-23

OpenVMS Hobbyというサイトを発見

simhを利用して、Hobbyist OpenVMS VAX V7.2かV7.3をインストールしてみるため、参考資料をネット上で探しています。そうすると「OpenVMS Hobby」というサイトを見つけました。2022年頃に生まれたようです。

 

このサイトの「The Purpose of This Site」には、以下のように記されています。

 I have created this site because while I have found lots of information and tutorials covering all of the above, it required a lot of searching, it uncovered a lot of out-of-date and misleading or contradictory information, and I had to go through a lot of trial and error to figure out exactly what worked and what didn’t. While I don’t deny that was all fun, I decided to provide a site where — at the very least — all of the information and research and working examples I have gone through can be shared with anyone else wanting to go through the same journey.

 

これを読んで、誰でも同じことを考えるのだと思いました。私も同様に、情報をネット上で探していると、雑多な情報に混乱することがあります。全く情報が見つからないよりはマシですが、自分にとって必要な情報を選び出していくことになります。その過程を楽しんでいるのは間違いないですが、楽しくも苦しい道のりです。

 

このサイトの情報は、とても参考になると思います。ただし、私の場合は若干環境が異なるので、完全に真似できるわけではなさそうです。

  1. OpenSimh V4を利用しているようだが、simh V3.9を使う。このため、エミュレートするのは、VAX 8600ではなく、MicroVAX 3900になる。
  2. インストールするのは、OpenVMS VAX V7.1ではなく、Hobbyist OpenVMS V7.2かV7.3になる。
  3. ホスト環境はLinuxのようだが、Microsoft Windows 10を使う。

Hobbyist OpenVMS VAXのISOイメージをbitsaves.orgで発見

simh VAXを利用してOpenVMS VAXをインストールしてみるために、手持ちのCD-ROMからISOファイルを生成するために、試行錯誤しました。ひとまずISOファイルはできたので、もはや済んだ話ではありますが、ネット上にISOファイルが存在していたのを発見しました。

 

DECの資料を探すために、以前からbitsavers.orgを利用しています。膨大な資料が置かれているので、隅々まで見ているわけではなかったので、見落としていたのかもしれません。「OVMS_7.2_Hobbyist」というディレクトリには、Hobbyist OpenVMS VAX V7.2のISOファイルが圧縮されて置いてありました。また別のディレクトリにもHobbyist OpenVMS VAX V7.3のISOファイル(圧縮済)がありました。


自分で態々苦労してISOファイルを生成する必要はなかったのかもしれません。試行錯誤して、いろいろと経験できたのは、それはそれで成果だったのかもしれません。

2025-02-21

OpenVMS Hobbyist VAXのCD-ROMをファイルに書き出す

もう四半世紀ほど前、OpenVMS Hobbyist ProgramからOpenVMS VAX V7.2とV7.3のCD-ROMを入手しました。また時期は異なりますが、VAXstation 3100/M76なども入手しました。しかしこのワークステーションにはCD-ROMドライブが付いていなかったので、インストールすることはできませんでした。その後にOpenVMS Hobbyist Programは廃止されてしまい、VAX用のPAKを入手する手段が断たれてしまいました。

 

OpenVMS VAX用のPAKは、真偽のほどは不明ですが、HPなのかVSIが知りませんが正規に購入することができるようです。ただし気軽に購入できるような価格ではないようです。しかしながら、PAKがなくてもインストールしてみるくらいはできるはずです。インストールした後も使い続ける気があるなら、PAKを入れる必要がありますが、技術的興味でインストールしてみるだけであれば、PAK無しでもなんとかなるでしょう。

 

 2004年1月22日付の「Running VAX/VMS Under Linux Using SIMH」という記事を参考に、ちょっと試してみようと思います。この記事が書かれたのは20年ほど前なので、同じ手順で実行できるとは限りません。また記事は、Linux上のsimhを利用しているようですが、私はWindows上のsimhを使おうと思います。これらの環境が異なることで何かに躓くかもしれませんが、それを解決するのも技術的関心の一環です。

 

 記事の中では、CD-ROMの内容をファイルに書き出してsimhから参照するような手順になっています。ddコマンドでファイルに書き出していますので、私の場合も同様に行ってみました。手元にはFreeBSD/amd64 14.2-RELEASE-p1の環境があるので、これを使うつもりでした。ところがCD-ROMをアクセスできず、この操作がエラーになってしまいます。

 

次に、Windows10上のWSL2を利用してみようかと考えました。WSL2では Ubuntu 24.04.2 LTSを使っています。ところで、WSL2上のUbuntuでは、Windows PC本体のCDドライブをどのようにしてアクセスしたら良いのでしょうか。少なくとも/dev/cdromのようなデバイスファイルはありませんでした。ネットを検索してみると「mount -t drvfs D: /mnt/D」とすれば良いという情報がありましたが、エラーになってしまいます。

 

最後の手段として、Windows10上にインストールしてあった「HxD Version 2.5.0.0 (x86-64)」を使ってみました。これを使えば、管理者モードとして起動する必要がありましたが、CD-ROMの内容をファイルに書き出すことができました。

 

2025-02-20

GNU parallel = xargs -n1

かなり以前から「GNU Parallel」に関心がありましたが、使用したことがありませんでした。名前からすると分散処理に役立つのだろうとは思っていましたが、どのように利用するのか具体的なイメージがわかなかったのです。

 

使い方が分からないので使っていないのですが、そうは言っても、使ってみないと何に使えるのか分かるようになりません。ひとまずインストールしてみて、簡単に使ってみました。参考にしたのは、公式サイトにある「GNU Parallel Tutorial」です。

 

使ってみた感想としては、便利そうです。ただし活用できる状況を上手く見つけられるかに依存する気がします。私自身では、これまで「find」と「xargs」を組み合わせた処理をすることが多かったので、その延長線上として、利用できそうです。公式サイトにある「GNU PARALLEL EXAMPLES」でも、次のように記されています。まさにこの文がGNU parallelが何であるかを一言で表していると思います。

 GNU parallel can work similar to xargs -n1.

 

GNU parallelには「--xargs」というオプションがあるようです。私としては、このオプションをデフォルトとして使用し、「GNU parallel --xargs can work similar to xargs.」として利用しようかなと考えています。

2025-02-19

バッチキューのようなもの

以前にOpenVMSを使用した時には、「バッチキュー」というものがありました。一連の処理をスクリプト(コマンド・プロシージャ、通称コマプロ)としてファイルを作成しておき、それをバッチキューに登録しておくと、キューがFIFOとして処理をしてくれます。UNIXで言うところのバックグラウンド処理のようなものですが、それとバッチ処理は同じではありません。

 

UNIXでコマンドラインの末尾に「&」を付けてバックグラウンド処理にした場合、何の制御もなされないので、無茶をすればマシン負荷が急上昇してしまうでしょう。またUNIXには「batch」とか「at」というコマンドが用意されていますが、UNIXにはバッチキューの仕組みが用意されていないので、コマンドが「batch」だとしてもバッチ処理にはなりません。

 

MS-DOSや今日のWindowsでも、拡張子を「.bat」として「バッチファイル」というものを作成することがありますが、これもまたバッチ処理とは関係ありません。MS-DOSを開発していた当初は、当時の汎用機におけるバッチジョブのことが頭の片隅にあったのかもしれません。しかしMS-DOSのバッチファイルと汎用機のバッチ処理は、全く関係ありません。

 

FreeBSDやLinuxのようなUNIXの世界にも、OpenVMSや汎用機のようなバッチキューの仕組みがないのだろうかと、ずっと探していました。このような疑問を相談すると、日常的にUNIXを利用している人々は汎用機などの利用経験が浅いのか、なかなか問題意識が理解されません。Message Passing Interfaceを使えば良いなどと助言されたこともありますが、方向性が違う気がします。またPortable Batch Systemというものもあるようで、これが希望するものに近いかもしれませんが、ちょっと違うような気もします。

 

UNIXの設計思想と汎用機の世界観は、ずいぶん離れている気はするのですが、それでもUNIXの世界で汎用機的なバッチキューの仕組みを必要とする状況はあるのではないかと思います。きっと誰かが何か作っているはずだと思い、以前ならGoogleで検索し、最近ならGeminiに尋ねてみたりしましたが、紹介されるのはMPIだったりPBSだったりして、私が求める方向の回答がありません。

 

そんな中で、ふとpueueというものがあることを「Linuxメモ : あると便利かもしれないRust製コマンドラインツール」で知りました。こういうものを求めていたのです。RUSTで作成されているようです。どのようなものなのか検証するために、VirtualBOX上のUbuntu 24.02 LTSで確かめてみようと思いましたが、aptでインストールできるパッケージは存在しないようです。そこで、まずaptでRUSTの環境を入れ(apt install rustc)、その後にcargoでpueueを入れました(cargo install pueue)。インストール先が「~/.cargo/bin」になっているので、PATHを通しておく必要があります。

 

まだ簡単に動作を確認しただけですが、バッチキューのような仕組みが提供されており、気に入りました。

2025-02-13

「定理1.3から」が分からない

放送大学で数年前に受講した「入門微分積分('16)」の印刷教材を読み直しています。受講していた当時は、(本当はよくないことだと思いますが)流し読みをしていただけでした。その反省を踏まえて、印刷教材の記述における論理の展開や式の導出などを納得できるところまで考えながら読んでいこうと思っています。

 

「1.8 課題1.Cの解決」を読んでいると、数列{an}において、以下の結果が得られます。ここまでは、理解できました。

0 < an < 2, n = 1, 2, ...   (1.16)

 

これを踏まえて、次のように記述されています。

すなわち、数列{an}は増加数列であることがわかります。また、(1.16)は、{an}が上に有界であることも示しています。 ゆえに、定理1.5より、{an}は収束します。この極限値lim an (n→∞)をαとおきましょう。定理1.3から、0 ≦ α ≦ 2です。

 

さて、この記述にある「定理1.3」とは、次のようなものです。

定理1.3 2つの数列{an}、{bn}は収束して、lim an (n→∞) = α、lim bn (n→∞) = β であるとする。任意のnに対して、an ≦ bnであるならば、α ≦ βである。

 

記述は、「極限値をαとおく」→「定理1.3から」→「0 ≦ α ≦ 2である」となっているのですが、この論理の展開がよくわかりません。「極限値をαとおく」のは構わないのですが、「定理1.3から」→「0 ≦ α ≦ 2」と何故なるのでしょうか?

 

些細な疑問も解決していきながら読み進めていくつもりですが、前言を翻すことになってしまいますが、この疑問は保留として先に進もうと思います。

2025-02-10

等比数列の和の公式

数年前に放送大学で「入門微分積分('16)」(石崎克也放送大学教授)を受講しました。既に単位は取得済みではあるのですが、お恥ずかしながら、充分に理解しているとは言えません。この状態で、微分方程式とか量子力学や相対論などを勉強しようとしても、結局はなんとかなるかもしれませんが、自分自身として納得できません。あらためて印刷教材を最初から読み直しています。

 

この書籍に限りませんが、記述内容や数式などを「表面的」な理解で済ませてしまうと、読了しても不完全燃焼感に苛まれてしまいます。今回は数式の展開も納得するまで理解してから読み進めようと決意しています。ただし書籍によっては、わからなくても先に進み、あとから戻って再読することを推奨している場合があります。そのような手法も理解できますが、それを繰り返してきた挙句に今があることを考えると、今回は先を急がずジリジリと進んでいこうと考えています。

 

「第1章 実数・数列」の「1.6 解析学基本定理」において、ネピア数を与える数列{an} = (1+1/n)^nが上に有界であることを示す内容が記されていました。ここで以下のように式が変形されていたのですが、何故こうなるのか、わかりませんでした。

 an < 1 + 1 + 1/2! + 1/3! + ... + 1/n!

< 1 + 1 + 1/2 + 1/2^2 + ... + 1/2^(n-1)

= 1 + 2(1 - 1/2^n) < 3


1行目が2行目よりも小さいのは、2^(n-1) = 1 * 2^(n-1) ≦ 1 * 2 * 3 * ... * (n-1) * n = n! を踏まえているのは理解できました。しかし2行目から3行目の等号は何でしょうか?

 

Googleなどで情報を検索できるようになった今日は、できなかった以前に比べて、とても有難いと思います。できなかった頃であれば、図書館で書籍を手当たり次第に探るとか、詳しそうな人に尋ねるしかありませんでした。いまならGoogle(もし好みであればGemini)を使えば、全く見当もつかないとしても、手掛かりを得ることができます(可能性としては)。

 

結局は、初項aで公比rの等比数列の和の公式が使われているだけとわかり、納得しました。この公式を昔々習っていたことを思い出しましたが、普段使うこともないので、忘れていました。

2025-02-08

2025年2月の「100分 de 名著」はデュルケームの『社会分業論』

NHKで放映されている「100分 de 名著」を全て視ているわけではありませんが、2025年2月の『社会分業論』(エミール・デュルケーム)は視るつもりです。また別売りのテキストも購入し、こちらは既に読み終えました。

 

ちくま学芸文庫から出ている『社会分業論』は、文庫本なのに、800ページもあって、しかも価格が2,090円(税込)ということで、ボリュームも値段も信じられません。これを読まずに『社会分業論』を軽々しく論じることはできませんが、NHKのテキストで解説されている事柄に共感しました。88ページに書かれている内容を、ちょっと長くなりますが、引用します。

 社会から分離した個人は、すでに見たように、事実として自律していきます(自律せざるをえません)。同時に、他者や社会への依存が始まるのです。社会からの分離によって個人の自律が可能になりますが、同時に、他者や社会への依存が必要になります。依存なき自律は、自律というより孤立です。

他方、 本来社会から分離しているはずの「個人」が自律なしに依存するのであれば、もはや一体化でも依存でもありません。それは、フロムが見抜いたように「自由からの逃走」であって、「癒着」というべきでしょう。

 

通俗的には、自律した個人は、何者にも依存しない(だろう、はずだ)というイメージがあります。しかし、自律した個人は同時に他者や社会に依存するのであり、依存しない自律は、もはや孤立であるというのは、虚を突かれた思いです。

 

現代社会は、「自律」を強調するが余りに、必要以上に「依存」を拒否しすぎるきらいがあると思います。しかも「自律」するというのは、決して容易ではありません。その挙句に、自律しない個人が依存だけしてしまうと、容易に権威主義や全体主義に陥ってしまうという主張には賛同します。

 

私の個人的な体験においても、「自分は、他人に指示されたことを坦々とこなしたいんだ。自分自身でやることを考えるのは嫌なんだ」と訴える人物に遭遇したことがあります。このような主張をする存在が世の中の一部なのか多数を占めつつあるのか、判断する情報を持ち合わせていませんが、それに流されてしまわないように意識していたいと思います。

2025-02-07

『現代民俗学入門』は、さらに奥へ探るための入り口となる気がする

近所の書店で平積みになっていた『現代民俗学入門』を買ってみました。購入前にパラパラと立ち読みしてみましたが、面白そうだと思ったので、買って読んでみることにしました。

 

民俗学といえば、柳田国男と折口信夫が有名です。しかし名前を知っているだけで、その学問的自体を知っている訳ではありません。本書は、書名からして入門書です。ひとつの話題が見開きページで完結しているので、本当に入り口が提示されるだけです。しかし「読んでみよう」とか「参考文献」として、その話題を深く追求していくための手掛かりも提示されているので、それらを参照していくことで、さらに学ぶことができそうです。

 

この本は、一通り読んだらそれで終わりというものではなく、手元に置いておき、何かの折に参照することができるのではないかと思いました。この本に書かれているのは、現代民俗学の現状を網羅して、この一冊で完結するような「入門書」ではなく、この本を入り口にして民俗学を学ぶ旅に出発するための手引書ではないかと感じました。