DEC社 TOPS-20を使う方法 TELNETでログイン編

TELNETでSYSTEM-20を使用

TELNETでSYSTEM-20を使用

TELNETでTOPS-20にログイン

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

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

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

KLH10エミュレーターを起動するときにシステム構成設定を記述した klt20.iniファイルを指定します。インストール用のドキュメント(panda-dist/klh10-2.0h/doc/install.txt)を参考にして、どんなシステム構成設定をしているか調べました。

そして、ネットワーク設定を行うことにより、TELNETによりTOPS-20にログインすることができました。

システム構成設定 klt20.ini

システム構成設定 klt20.iniファイルは、以下のように定義しています。

$ cat klt20.ini
; Define basic device config - one DTE, one disk, one tape
devdef dte0 200   dte	master
devdef rh0  540   rh20
devdef rh1  544   rh20
devdef dsk0 rh0.0 rp	type=rp07 format=dbd9
devdef mta0 rh1.0 tm03	type=tu45

; Set Ethernet address
devdef ni0 564 ni20 ipaddr=192.168.0.251 

; Define the idle device on 700
devdef idler 700 host

; Set switch register
set sw=254200,,147

; Set console lights I/O base register
;Uncomment the following line if you have a Panda display.
;lights 378

; Load disk bootstrap directly
load boot.sav

; Ready to GO

デバイスの定義は、devdefineで行います。

devdefine <devid> <dev#> <drivername> <optional-parameters>

  • <devid> : デバイス識別名
  • <dev#> : デバイス番号(8進数)
  • <drivername> : エミュレーターのドライバーモジュール
  • <optional-parameters> : オプションパラメーター

DTE 設定

DTE(Data Terminal Equipment)は、1個のCTY(Character TYpewriter)をサポートします。

devdef dte0 200   dte   master
  • 200は、デバイス番号です。
  • masterは必須項目で、マスターDTEであることを指定しています。

RH20 Massbusコントローラー 設定

DEC社 PDP-10のKL10プロセッサーを搭載した20xxシリーズは、DEC社が考案した新しい高速I/Oバス Massbusでディスクドライブや磁気テープなどの周辺機器を接続していました。

Massbusを使用するデバイスを定義する前に、まずRH20 Massbusコントローラー(最大8台)を定義します。RH20ドライバーは、RH20コントローラーとそれに関連するデータチャンネルの両方をエミュレートします。

devid dev# 意味
rh0 540 Controller #0
rh1 544 Controller #1
rh2 550 Controller #2
rh3 554 Controller #3
rh4 560 Controller #4
rh5 564 RESERVED for NI20
rh6 570 Controller #6
rh7 574 Controller #7

ネットワークインターフェース(NI20)は、デバイス番号564に対応するMassbusスロット#5に常に取り付けており予約しているので、devdef rh5の定義は不要です。

ここでは、RH20コントローラーを2台(#0と#1)定義します。

devdef rh0  540   rh20
devdef rh1  544   rh20

デバイス 設定

デバイスを定義してRH20コントローラーにバインドします。ひとつのRH20コントローラーに最大8個のユニット(0~7)を接続することができます。
<devid>.<#>で、デバイス識別名とユニット番号を指定します。

ここでは、RP ディスクとTM03 磁気テープを接続します。

devdef dsk0 rh0.0 rp	type=rp07 format=dbd9
devdef mta0 rh1.0 tm03	type=tu45
Massbus説明

Massbus説明

 


RPディスクを定義します。

devdef dsk0 rh0.0 rp	type=rp07 format=dbd9

デバイス識別名 dsk0でRH20コントローラー#0のユニット#0 (rh0.0)に接続します。

「type=」は、ドライブのタイプを指定します。RP04, RP05, RP06, RP07 , RM02, RM03, RM05, RM80 がありますが、RP06とRP07を推奨します。(他のタイプはテストされていないと書いてあります)

「format=」は、 仮想ディスクファイル内の編成を指定します。

  • RAW – 最速(8バイトで1ワード、I/O変換なし)
  • DBD9 – 最もコンパクト(9バイトで2ワード)
  • RARE – 半加工モード

RAWモードは、初期ディスクの内容を完全にゼロに初期化する必要があるため、注意して使用する必要があります。

実際の仮想ディスクファイルの容量は、ドライブタイプとフォーマットにより異なります。

Drive #Sectors Pages RAW Format DBD9 Format
RP05 156,180 39,045 160 MB 90 MB
RP06 309,700 77,425 318 MB 179 MB
RP07 866,880 216,720 888 MB 500 MB

 

「devdef dsk0 rh0.0 rp type=rp07 format=dbd9」を指定したので、Linux上に RH20.RP07.1という500MBの実ファイルが対応したわけです。


TM03 磁気テープを定義します。

devdef mta0 rh1.0 tm03	type=tu45

「type=」は、ドライブのタイプを指定します。TU45、TE16、TU77の3種類がありますが、エミュレートされたテープには関係ありません。

ネットワーク デバイス 設定

NI20ドライバーはKLNI/NIA20イーサネットインターフェースをエミュレートします。ホストシステムに実際のイーサネットポートが必要です。イーサネットポートは、KLH10エミュレーター専用かネイティブOS共有の設定をすることができます。

実際のDEC社 SYSTEM-20xxは、デバイス番号564に対応するMassbusスロット#5にネットワークデバイスNI20を接続しています。

devdef ni0 564 ni20 ipaddr=192.168.0.251 

ネットワークの設定は、2種類あります。

  • 方法1 :【専用インターフェース】2個のイーサネットポートを持ち、ひとつをKLH10エミュレーター専用にします。「DEDIC=TRUE」に設定し、「IFC=xx」でインターフェースを指定します。
  • 方法2 :【共有インターフェース】1個のイーサネットポートをネイティブOSと共有にします。「IPADDR=d.d.d.d」を指定します。

[DEDIC=<boolean>]は、TRUEで専用インターフェース、FALSEで共有インターフェースを指定します。

[IFC=<name>]は、ホストシステムの専用ハードウェアイーサネットポートを指定します。

[IPADDR=<d.d.d.d>]は、PDP-10 OSが使用するIPアドレスを指定します。(共有インターフェースでのみ意味があります)

ネイティブ・ホスト デバイス 設定

idlerデバイスは、エミュレーターからのサービスや情報を要求する簡単なAPIとして機能する擬似デバイスです。(実際のPDP-10には存在しません)

devdef idler 700 host

ネットワーク関係の設定

ネットワークドライバー dpni20

Panda TOPS-20 distributionをインストールした $KLH10_HOME ディレクトリー内にネットワークドライバー dpni20があります。ネットワークドライバー dpni20の実行には、ルート権限が必要なので’setuid root’します。

$ ls -l dpni20
-rwxr-xr-x 1 pi pi    210508 12月 29 20:10 dpni20

$ sudo chown root dpni20
$ sudo chmod 4750 dpni20

$ ls -l dpni20
-rwsr-x--- 1 root pi    210508 12月 29 20:10 dpni20
$

setuid属性を付与したので、KLH10エミュレーターがネットワークドライバー dpni20実行するとき、そのファイルの所有者(root)の特権を得ることができます。

TOPS-20 IPアドレス

TOPS-20のIPアドレスを設定します。TOPS-20が稼働するネットワークは、192.168.0.XXX です。KLH10エミュレーターをインストールしたLinux PCのIPアドレスは 192.168.0.250です。その中で走るTOPS-20のIPアドレスは 192.168.0.251とします。TELNETを使用するWindowsPCのIPアドレスは 192.168.0.6です。

 

TELNETでTOPS-20

TELNETでTOPS-20

OPERATORユーザーでTOPS-20にログインします。システムファイル<SYSTEM>INTERNET.ADDRESSを変更するので、ENABLEコマンドで特権モードになります。

IPアドレスを192.168.0.251に設定します。

@ENABLE 
$
$EDIT TOPS20:<SYSTEM>INTERNET.ADDRESS.2
$
$TYPE TOPS20:<SYSTEM>INTERNET.ADDRESS.2
IPNI#0,192.168.0.251,PACKET-SIZE:1500,LOGICAL-HOST-MASK:255.0.0.0,DEFAULT,PREFERRED

TELNETでTOPS-20を実行

KLH10エミュレーターを起動して TOPS-20をマルチユーザーモードで起動します。DBUGSWシステムテーブルは「dbugsw/」入力、T1表示、「1」入力します。システム立ち上げの理由は、「new」とします。

WindowsのTera Termから TELNETで IP=192.168.0.251に接続します。

PANDA TOPS-20

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

PANDA TOPS-20 Monitorが応答を返してきました。

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

@LOGIN (USER) OPERATOR (PASSWORD)
?Request denied by Access Control Facility
@

「?アクセス制御機能によって要求が拒否されました」とログインが拒否されました。


KLH10エミュレーターを起動したシステムコンソールで、OPEARORユーザーでログインして新しいPIユーザーを作成します。

ユーザーアカウントの作成方法は、「DEC社 TOPS-20を使う方法 TOPS-20コマンド使用編」に記述した「アカウントの作成」手順を参考にして下さい。

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


もうひとつのPIユーザーでTELNETからログインしてみます。

@LOGIN (USER) PI (PASSWORD)
 Job 10 on TTY44  (TCP) 7-Jan-2018 18:01:05
  Last interactive login 6-Jan-2018 17:42:43
  Last non-interactive login Never
@

今度は無事ログインできました。OPERATORユーザーは、ネットワークからのログインを禁止する設定になっているようです。

FINGERコマンドで、ログインユーザーの一覧を見るとPIユーザーが表示されています。

@FINGER
 User    Personal name       Job Subsys Idle TTY Console location
 ???                           1 EXEC      9.  5 System Console
PI                            10 FINGER       44 [192.168.0.6]
@

まとめ

システム構成設定ファイル(klt20.ini)の設定を調べました。
そして、ネットワーク設定を行うことにより、TELNETによりTOPS-20にログインすることができました。FINGERコマンドなどのネットワーク系のコマンドも使用できました。

ネットワーク端末から TOPS-20を使うことができ、本物の DEC社 SYSTEM-20を使用しているような錯覚を覚えました。

Linuxをインストールしたホストマシンは、CPUにインテル Atomプロセッサー Z520 1.33GHzを搭載したメモリ容量1GBのx86 PCです。とても低スペックのPCなので、TELNETを2接続もすると端末応答が悪くなってしまいました。最新のPCでTOPS-20を実行すると、マルチユーザーモードでストレスなく使用できるかもしれませんね。