ソースコードVM / 370の取得

こんにちは、親愛なるハバルチテス!

ほぼ1週間前、VM / 370に関する最初の投稿を書きました。 最初のコメントは完全に公平な発言でした:

もちろん楽しいですが、「キャンバス」は主にチームの結論で構成されています。 正直に言うと、システム自体のインストールだけでなく、その「根性」、例えば、何、なぜについても読むのははるかに興味深いです。

たとえば、VM / 370のソースコードを調べます。


はい、確かに、古いOSをインストールするためのチュートリアルは、控えめに言っても、その機能のデモとして一般的な意味でのみ興味深いものです。 しかし、ソースからの引用を扱う原則の説明は別の問題です。 さらに、ソースコードが利用可能です。 唯一の問題は、そのような記述が深刻な問題であることです。

VM / 370の動作原理は、 この3巻で説明されています。 ソースコード自体は比較的小さく、アセンブラの「わずか」20万行-CPとほぼ同じ-CMSです。 しかし、作業はまだ見直されなければなりません。

この記事では、VM / 370の内部でサイクルを開始するタスクさえも設定していません。 VM / 370ソースコードを読み取り可能な形式で抽出した方法のみを説明します。 抽出の過程で、VM / 370の操作について興味深いことを学びました。





CMSでのテープの開梱



ソーステープのボリュームは約30メガバイトです。 ファイルが非圧縮形式でテープに保存されていることを完全に確認して、このボリュームを3330シリンダーの容量に分割し、すべてのソースを保存するには130シリンダーが必要であると計算しました。 もちろん、これは間違っていることが判明しました(明らかに、何らかの圧縮が依然として行われ、印刷のサイズは約40メガバイトです)が、幸いなことにテープは複数のボリュームで構成されていたため、1つずつ印刷しました。

したがって、ユーザーMAINTの説明にあるディレクトリに次の行を追加します。

MDISK 192 3330 200 130 CPR6L0 WR READ * SOURCES
      
      





注:プロセス全体をユーザーMAINTとして実行しました。 一般的に、これは「ルートの下で動作しない」ルールの悪意のある違反であり、それを行うことはできません。

VMを起動し、MAINTとしてログインし、CMSを起動します。 カタログの説明を含むパンチカードを紹介し、「DIRECT MYVM」コマンドで更新します。 ログインします(アカウントの変更を有効にするため)。 ディスク192(「access 192 b」コマンドを使用)とソースコード付きのテープを接続します。 コマンド「VMFPLC2 LOAD * * B」を使用して、アーカイブの最初のボリューム(CPソース)をダウンロードします。



プリントアウト



長い間、1つのコマンドで複数のファイルを印刷する方法を見つけることができませんでした。 実際、PRINTおよびPUNCHコマンドは、ファイル名にアスタリスクが付いていることを誓います。 しかし、私は500個のファイルを手動で印刷したくありませんでした。 最終的に、アセンブラーで印刷プログラムを作成するのが最も簡単だと決めましたが、アセンブラーのマニュアルを調べてみると、簡単な方法が見つかりました。

LISTFILEコマンド(DIR / lsに類似)にはオプションがあります(EXEC。このオプションを使用してLISTFILEを実行すると、LISTFILEはファイルを作成します(EXECファイルはbat / shに類似しています)。フォームの行は&1&2&1&2がスクリプトパラメーターです。

今注目! CMS EXECファイルの各行でCMS PUNCHコマンドを実行すると、&1の代わりに、PUNCHが置換され、その行が実行されます。 私の意見では、これはユーザーインターフェースの分野でのIBMエンジニアの最良の決定です(ただし、awkを使用したLinuxでは不要です)。

さまざまな印刷を試し、PUNCHがPRINTよりも優れていると判断しました。

注:Herculesパンチカードの出力はEBCDIC形式に設定されています。 読み取り可能なコードを取得するには、コマンド「ATTACH D ./sources/DMK.txt ascii」を使用してASCIIに再構成する必要があります。

したがって、ファイルのリストを作成します。

 L * * B (EXEC
      
      





そしてそれらを印刷します:

 CMS PUNCH ...  .
      
      





それがすべて終わったとき、CMS EXECに最初の行とCONTROL OFF(アナログエコーオフ)を追加することが理にかなっていることに気付きました。 はい、VM / 370は見つかりませんでしたが、基本的なMS-DOSも見つかりませんでした。



ファイル分割



以前の操作の結果、ソースコードが貼り付けられたDMK.txtファイルを受け取りました。 今、彼らは分割する必要があります。 このため、次のようなawkスクリプトを使用しました。

 /^MAINT MAINT MAINT MMMM AAAA IIII NNNN TTTT$/ {next} /^USERID/ {next} $1==":READ"{ MYFILE="./DMK/"$2 "_" $3 next } { print $0 > MYFILE }
      
      





私はgコードをおaびします。それは膝の上に書かれており、読みやすさ/効果のためではありません。



これで、同じ方法で、ソースCMS(条件付きコードDMS)、RSCS(条件付きコードDMT、リモートスプーリング通信サブシステムという名前は少しわかりにくいですが、ある意味ではfidoの類似物)とIPCS(条件付きコードDMM、システムテスト)を表示できます。



参照資料






All Articles