DEC社 TOPS-20を使う方法 TOPS-20コマンド使用編

DEC System-20

DEC System-20


【2019/09 追記】AMAZONから『超マシン復活 #1 DEC TOPS-20 レトロOSワールド』を出版しました。


DEC社 TOPS-20を使う方法

2018年1月、歴史的に貴重なDEC社 TOPS-20を使うためにKLH10エミュレーターをLinuxにインストールして、TOPS-20を実行することができました。

TOPS-20コマンドの使用方法について調べてみます。

 

DEC社 TOPS-20を使う方法 KLH10エミュレーター導入編

DEC社 TOPS-20を使う方法 KLH10エミュレーター実行編

TOPS-20は、マルチユーザー・オペレーティング・システムで、36ビットDEC社 PDP-10(DECSYSTEM-20)メインフレーム・コンピュータ専用に設計されました。

TOPS-20のシェルコマンドの使い方などネットで調べたら、いろいろなドキュメントがありました。

DEC社 TOPS-20コマンドの使用方法

ネットで調べた情報から「UNIXユーザーのためのTOPS-20初心者ガイド」のポイントを要約します。

UNIXとTOPS-20のコマンドの対応を示します。

UNIX と TOPS-20 コマンド対応
機能 UNIX TOPS-20
ファイル表示 cat TYPE
ファイル削除 rm DELETE
ファイル保護 chmod SET FILE PROTECTION
ディレクトリ一覧 ls DIRECTORY
詳細ディレクトリ一覧 ls -la VDIRECTORY
ディレクトリ作成 mkdir BUILD
ディレクトリ移動 cd CONNECT
ディレクトリ位置 pwd INFORMATION DIRECTORY
ディレクトリ保護 chmod SET DIRECTORY PROTECTION
特権モード実行 sudo ENABLE
DISABLE

コマンド行の編集と補完機能

コマンド入力時にESCキーまたはCTRL+Fを入力すると、コマンド補完を行います。「?」を入力すると、入力可能なコマンドやオプション引数の一覧を表示します。

タイプライター型端末 (LA120など)使用時

システム起動時はこのモードです。

キー 機能 動作
DELETE 1文字削除 x\を印字して1文字(x)削除
CTRL+U 全文字削除 XXXを印字して全文字削除
CTRL+W 単語削除 _を印字して単語削除
CTRL+R 再印字 現在行を再印字

ビデオ端末型 (VT100など)使用時

TERMINALコマンドでVT100を指定します。

@TERMINAL (FEATURE OR TYPE) VT100
@
キー 機能 動作
DELETE 1文字削除 カーソルを1文字戻して文字削除
CTRL+U 全文字削除 入力行を消去して全文字削除
CTRL+W 単語削除 単語を消去して単語削除

プログラムの中止方法

CTRL+Cを入力すると現在実行中のプログラムを中止してターミナルをコマンド入力(モニターモード)に戻します。プログラムが端末からの入力を要求していない場合(プログラムが実行中の場合)、2つのCTRL+Cを入力する必要があります。

端末出力の制御

キー 動作
CTRL+O 端末出力を取り消しする(プログラムの実行は継続)
CTRL+S 端末出力を抑止する(CTRL+Qで再開)
CTRL+Q 端末出力を再開する(CTRL+Sの解除)

 

TOPS-20ファイルシステム

TOPS-20は高度なファイルシステムをサポートしています。PS:(プライマリストレージ)は、システムのメインデバイスです(UNIXのルートディレクトリに似ています)。

ファイル記述仕様を以下に示します。

dev:<dir>name.typ.gen;att;…;att

フィールド 説明
dev: デバイス名
<dir> ディレクトリ名
name ファイル名
.typ ファイルタイプ
.gen 世代番号
;att ファイル属性

2種類のワイルドカードが使えます。

* 0文字以上の任意の文字
% 任意の1文字

ディレクトリの表記方法をTOPS-20とUNIXで対応を示します。

TOPS-20 UNIX 説明
PS:<PI> /pi PIのホームディレクトリ
PS:<PI.PROJ> /pi/proj PI直下のPROJサブディレクトリ

DIRECTORYコマンドでディレクトリ一覧を表示することができます。

@DIRECTORY(OF FILES)

   TOPS20:<OPERATOR>
 FTS.CMD.1
 HELLO.C.2
   .EXE.2
   .REL.2

 Total of 69 pages in 4 files
@

OPERATORユーザーのホームディレクトリ一覧が表示されました。

CプログラムのHELLO.Cは、世代番号が.2です。また、HELLO.Cの 実行形式プログラム(.EXE)とリロケータブルバイナリー(.REL) も存在します。


論理名の定義は、INFORMATION LOGICAL-NAMESコマンドで確認できます。

@INFORMATION (ABOUT) LOGICAL-NAMES (OF) PS:
System-wide:

ps: => TOPS20:
@

PS:(プライマリストレージ)の論理名は、TOPS20:と定義されていました。

DIRECTORY/FILE保護機能

TOPS-20では、18ビットのPROPERTYおよびFILE保護設定が可能です。これには9bit UNIXの「アクセス許可」の機能が含まれています。ユニークなTOPS-20である追加の保護機能も備えています。


ファイルの保護設定
8進数 意味
77 FULL ACCESS
40 READ
20 WRITE/DELETE
10 EXECUTE
04 APPEND
02 LIST
00 NO ACCESS

ディレクトリの保護設定
8進数 意味
77 FULL ACCESS
40 READ
10 CONNECT
04 BUILD
00 NO ACCESS

VDIRECTORYコマンドで詳細なディレクトリ一覧を表示することができます。

@VDIRECTORY(VERBOSE, OF FILES)

   TOPS20:<OPERATOR>
 FTS.CMD.1;P777700          1 44(7)      14-Nov-2002 09:37:20 MRC
 HELLO.C.2;P777700          1 70(7)       2-Jan-2018 20:18:41 OPERATOR
   .EXE.2;P777700          66 33792(36)   2-Jan-2018 20:18:57 OPERATOR
   .REL.2;P777700           1 110(36)     2-Jan-2018 20:18:56 OPERATOR

 Total of 69 pages in 4 files
@

「HELLO.C.2;P777700」のファイル属性Pは8進数を2桁ごとに区切って読みます。

77____ ログインユーザー
__77__ あなたのグループのユーザー
____00 他のすべてのユーザー

ファイル保護設定は、SET FILE PROTECTIONコマンドを使用します。ディレクトリ保護設定は、SET DIRECTORY PROTECTIONコマンドを使用します。

HELLO.C のファイル保護設定を 777700 → 770000 に変更してみます。

@SET FILE PROTECTION (OF FILES) hello.c.* (TO) 770000
 HELLO.C.2 [OK]
@VDIRECTORY (VERBOSE, OF FILES)

   TOPS20:<OPERATOR>
 FTS.CMD.1;P777700          1 44(7)      14-Nov-2002 09:37:20 MRC
 HELLO.C.2;P770000          1 70(7)       2-Jan-2018 20:18:41 OPERATOR
   .EXE.2;P777700          66 33792(36)   2-Jan-2018 20:18:57 OPERATOR
   .REL.2;P777700           1 110(36)     2-Jan-2018 20:18:56 OPERATOR

 Total of 69 pages in 4 files
@

ログインユーザーだけアクセス可能に設定しました。

ログインパスワードの変更

ログインパスワードの変更は、SET DIRECTORY PASSWORDコマンドを使用します。<login-directory-name>を指定します。OPERATORユーザーでログインするので、「<operator>」と指定します。

「古いパスワード」を入力し「新しいパスワード」入力後に「新しいパスワードを再入力」します。パスワードはエコーバックしません。

@SET DIRECTORY PASSWORD (OF DIRECTORY) <OPERATOR>
Old password:
New password:
Retype new password:
@

ユーザーモードと特権モード

ログインした状態はユーザーモードです。ユーザーモードのコマンドプロンプトは、@です。特権モードに移行するには、ENABLEコマンドを使用します。

@ENABLE (CAPABILITIES)
$

特権モードのコマンドプロンプトは、$です。ユーザーモードに移行するには、DISABLEコマンドを使用します。

$DISABLE (CAPABILITIES)
@

ファイルコピー

ファイルのコピーは、COPYコマンドを使用します。

@copy (FROM) heLLO.c.2 (TO) new_hellow.c
 HELLO.C.2 => NEW_HELLOW.C.1 [OK]
@DIRECTORY

   TOPS20:<OPERATOR>
 FTS.CMD.1
 HELLO.C.2
   .EXE.2
   .REL.2
 NEW_HELLOW.C.1

 Total of 70 pages in 5 files
@

ファイルリネーム

ファイルのリネームは、RENAMEコマンドを使用します。

@RENAME (EXISTING FILE) new_HELLOW.C.* (TO BE) old_HELLOW.C
 NEW_HELLOW.C.1 => OLD_HELLOW.C.1 [OK]
@DIRECTORY

   TOPS20:<OPERATOR>
 FTS.CMD.1
 HELLO.C.2
   .EXE.2
   .REL.2
 OLD_HELLOW.C.1

 Total of 70 pages in 5 files
@

ファイル削除

ファイルの削除は、DELETEコマンドを使用します。

@DELETE (FILES) OLD_HELLOW.C.*
 OLD_HELLOW.C.1 [OK]
@DIRECTORY

   TOPS20:<OPERATOR>
 FTS.CMD.1
 HELLO.C.2
   .EXE.2
   .REL.2

 Total of 69 pages in 4 files
@

ファイル復元

ファイルの復元は、UNDELETEコマンドを使用します。

@UNDELETE (FILES) old_HELLOW.C.*
 OLD_HELLOW.C.1 [OK]
@DIRECTORY

   TOPS20:<OPERATOR>
 FTS.CMD.1
 HELLO.C.2
   .EXE.2
   .REL.2
 OLD_HELLOW.C.1

 Total of 70 pages in 5 files
@

ディレクトリ情報

ディレクトリ情報は、INFORMATION DIRECTORYコマンドを使用します。

OPERATORディレクトリの情報を調べてみます。

@INFORMATION (ABOUT) DIRECTORY (DIRECTORY NAME) <OPERATOR>
 Name TOPS20:<OPERATOR>
 Working disk storage page limit 500
 Permanent disk storage page limit 500
 OPERATOR
 IPCF
 INTERNET-WIZARD
 Number of directory 5
 Account default for LOGIN - none set
 Last interactive login 2-Jan-2018 20:17:53
 TOPS10 project-programmer number - none set

@
  • 作業ディスク記憶容量(Working disk)の制限は、500ページ
  • 永久ディスク記憶容量(Permanent disk)の制限は、500ページ
  • operatorディレクトリの下にサブディレクトリを作成するとき、ディレクトリの数を5個に制限しています。

サブディレクトリを作成するとき作業ディスクと永久ディスクの記憶容量は合計で上位ディレクトリの制限以内でなければなりません。

 

アカウントの作成

アカウントを作成は、BUILDコマンドでホームディレクトリを作成します。

PIというアカウントを作成します。特権モードで作成しますので、最初に ENABLEコマンドで特権モードに入ります。サブプロンプト($$)でディレクトリの属性を指定して、ENTERキーで終了します。

サブコマンド 意味
OPERATOR OPERATOR機能を所有者に許可
IPCF 所有者がすべての特権IPCF機能を実行可能
INTERNET-WIZARD 所有者はINTERNET用キューを使用可能
PASSWORD パスワードを指定
MAXIMUM-SUBDIRECTORIES サブディレクトリの最大数
PROTECTION ディレクトリ保護設定
LIST 属性を確認

最後に DISABLEコマンドでユーザーモードに戻ります。

@ENABLE 
$BUILD (DIRECTORY NAME) TOPS20:<PI>
[New]
$$OPERATOR
$$IPCF
$$INTERNET-WIZARD 
$$PASSWORD PI123
$$MAXIMUM-SUBDIRECTORIES (ALLOWED) 5
$$PROTECTION (OF DIRECTORY) 774000
$$list
 Name TOPS20:<PI>
 Working disk storage page limit 500
 Permanent disk storage page limit 500
 OPERATOR
 IPCF
 INTERNET-WIZARD
 Number of directory 206
 Account default for LOGIN - none set
 Protection of directory 774000
 Maximum subdirectories allowed 5
 TOPS10 project-programmer number - none set
$$

$DISABLE
@

MAXIMUM-SUBDIRECTORIESを指定しなかったら、サブディレクトリを作成することができないので注意です。


アカウント作成したPIユーザーでログインしてみます。

OPERATORユーザーをLOGOUTします。

@LOGOUT
[Job 0(DET) also logged in under OPERATOR]
Killed Job 1, User OPERATOR, TTY5, at 3-Jan-2018 16:48:01
 Used 0:00:00 in 0:33:56

CTRL+Cを入力します。

[Caution--System is stand-alone]

 Panda Distribution, PANDA TOPS-20 Monitor 7.1(21733)-4

This system is for the use of authorized users only.  Usage of
this system may be monitored and recorded by system personnel.

Anyone using this system expressly consents to such monitoring
and is advised that if such monitoring reveals possible
evidence of criminal activity, system personnel may provide the
evidence from such monitoring to law enforcement officials.

PIユーザーでログインしてみます。

@LOGIN (USER) PI (PASSWORD)
 Job 1 on TTY5 3-Jan-2018 16:48:13
  Last interactive login Never
  Last non-interactive login Never
        This is your first login.  Welcome!
To get started, type "HELP NEW-USER" when you see the EXEC prompt "@".

  There may some be system messages following.  Respond to each (more ?)
by typing the RETURN key.
@

PIユーザーのディレクトリ情報を確認してみます。
OPERATORユーザーと同様な属性となっています。

@INFORMATION (ABOUT) DIRECTORY (DIRECTORY NAME) TOPS20:<PI>
 Name TOPS20:<PI>
 Working disk storage page limit 500
 Permanent disk storage page limit 500
 OPERATOR
 IPCF
 INTERNET-WIZARD
 Number of directory 206
 Account default for LOGIN - none set
 Protection of directory 774000
 Maximum subdirectories allowed 5
 Last interactive login 3-Jan-2018 16:48:13
 TOPS10 project-programmer number - none set

@

ディレクトリ移動

ディレクトリの移動は、CONNECTコマンドを使用します。

OPERATORディレクトリに移動します。

@CONNECT (TO DIRECTORY) TOPS20:<OPERATOR>
Password:
@

ディレクトリ一覧を確認すると、OPERATORのディレクトリが表示されました。

@DIRECTORY

   TOPS20:<OPERATOR>
 FTS.CMD.1
 HELLO.C.2
   .EXE.2
   .REL.2

 Total of 69 pages in 4 files
@

ディレクトリ作成

ディレクトリ作成は、BUILDコマンドを使用します。
PIディレクトリの下にPROJサブディレクトリを作成します。

@BUILD (DIRECTORY NAME) <PI.PROJ>
[New]
@@
?Request exceeds superior directory subdirectory quota.
Please fix incorrect subcommands.
@@ABORT
@

サブプロンプト(@@)になり、サブコマンドが入力できます。
なにも入力せずにENTERキーを押すと、?エラーとなりました。
ABORTサブコマンドで、コマンドを中止します。

?要求が上位ディレクトリのサブディレクトリクオータを超えています。

ディスク記憶容量の割り当てに問題がありそうです。
@@LISTサブコマンドで作成するディレクトリ情報を確認します。
ABORTサブコマンドで、コマンドを中止します。

@BUILD (DIRECTORY NAME) <PI.PROJ>
[New]
@@LIST
 Name <PI.PROJ>
 Working disk storage page limit 500
 Permanent disk storage page limit 500
 FILES-ONLY
 Account default for LOGIN - none set
 TOPS10 project-programmer number - none set

@@ABORT

上位ディレクトリのPIが500ページあり、サブディレクトリPROJに500ページ割り付けようとしているのでエラーとなったようです。

割り付け容量を変更します。

  • 作業ディスク記憶容量(Working disk)を10ページ
  • 永久ディスク記憶容量(Permanent disk)を20ページ
@BUILD (DIRECTORY NAME) <PI.PROJ>
[New]
@@WORKING (DISK STORAGE PAGE LIMIT) 10
@@PERMANENT (DISK STORAGE PAGE LIMIT) 20
@@PROTECTION (OF DIRECTORY) 777700
@@LIST
 Name <PI.PROJ>
 Working disk storage page limit 10
 Permanent disk storage page limit 20
 FILES-ONLY
 Account default for LOGIN - none set
 TOPS10 project-programmer number - none set

@@

無事作成できたか、DIRECORYコマンドで確認します。

@DIRECORY

   TOPS20:<PI>
 PROJ.DIRECTORY.1

 Total of 0 pages in 1 file
@
@VDIRECTORY (VERBOSE, OF FILES)

   TOPS20:<PI>
 PROJ.DIRECTORY.1;P20200    0 0(0)        3-Jan-2018 18:21:56 PI

 Total of 0 pages in 1 file
@

ディレクトリ削除

ディレクトリの削除は、BUILDコマンドのサブコマンドKILLです。

@DIRECORY

   TOPS20:<PI>
 HELLOX.C.1
 PROJ.DIRECTORY.1

 Total of 1 page in 2 files
@

@BUILD (DIRECTORY NAME) <PI.PROJ>
[Old]
@@KILL
[Confirm]
@@
@
@DIRECORY

   TOPS20:<PI>
 HELLOX.C.1

 Total of 1 page in 1 file
@

まとめ

TOPS-20のコマンドを調べました。概念的にはUNIXに似た点もあり、UNIXよりもユーザーフレンドリーなので使いやすいと思います。