TOPS-20はデジタル・イクイップメント・コーポレーション(DEC)によるDECの36ビットメインフレームコンピューター用のプロプライエタリ なOSで、PDP-10向けのTOPS-10の後継OSである。ハードウェアリファレンスマニュアルには「DECsystem-10 / DECSYSTEM-20 プロセッサ」と記載された（DEC PDP-10とDECSYSTEM-20を意味している)。

TOPS-20の起源は、 BBNテクノロジーズ(BBN)のTENEXオペレーティングシステム(1969年)であり、1976年にDECから販売された。このシステムは名前の類似しているTOPS-10とはほぼ全く関係がなかったが、PA1050というTOPS-10のモニターコールをエミュレーションする機能が同梱されており、一部を除いてTOPS-10用実行ファイルをほとんど修正なしで動作させることができた。DECの方針により、DECのアプリを実行するのに必要となった場合を除いて、TOPS-10のその後の修正をフォローするためにPA1050をアップデートすることはなかった。

TOPS-20はPDP-10で当時利用可能だったOSとして、TOPS-10、ITS、WAITSなどの著名なタイムシェアリングシステムと競合関係にあった。

TENEX 
 TOPS-20はBBNがDECのPDP-10用に開発したTENEXというOSをベースに開発された。TENEXはPDP-10で動作するサードパーティー製のOSとして当時最も人気があったが、DECが新たに開発した高速なKI-10版PDP-10では動作しなかった。この問題に対応するため、DECのPDP-10担当セールスマネージャはBBNからTENEXの権利を買い取り、新機種に移植するプロジェクトを立ち上げた。最終的には元のTENEXのコードはほとんど残らず、TOPS-20という名前で販売された。

PA1050 
このTOPS-20のおまけはTOPS-10のシステムコールをエミュレーションするエミュレーターに過ぎなかった。UUO (Unimplemented User Operation; 未実装ユーザー命令)と呼ばれる仕組みを利用し、TOPS-20用ではないコンパイラを実行したり、こうした言語で書かれたユーザープログラムを実行したりするのに必要だった。ユーザーアドレス空間にマップされたパッケージの名称がPA1050だった。PAまたはPATは互換の意味で、10はDECやPDP-10を意味し、50はPDP-10モデル50、10/50、1050を意味していた。

PA1050はPATと呼ばれることもあり、PA1050は特権を持たないユーザーモードのプログラムであり、JSYSコールを使って必要な時だけ動作することから、この名前は体をよく表していた。

TOPS-20の機能 
TOPS-20は以下の機能によりその特徴を最大限に活用できる。

 コマンドプロセッサEXEC.EXEを介してコマンドを入力する
 マクロ言語(.MAC)からJSYS(Jump to System)を呼び出す

EXECは主に以下の方法で機能を実現している。

 JSYS経由の呼び出しを含むコード 
 GALAXYコンポーネント（スプーラなど）からのサービスの要求

コマンドプロセッサー 
TOPS-20は当時としては非常に先進的な機能があった。

 コマンド補完  
 次のような動的ヘルプ
 ノイズワード - DIRと入力してESCapeキーを押すと次のようになる。 
 DIRectory (of files) 
 「I」と入力して<ESC>キーを押すと次のようになる。 
 Information (about)

「？」を入力すると、許されるオペランドや必要なオペランドが補完される。

コマンド 
以下のコマンド一覧はTOPS-20のコマンドプロセッサによりサポートされる。 
 ACCESS
 ADVISE
 APPEND
 ARCHIVE
 ASSIGN
 ATTACH
 BACKSPACE
 BLANK
 BREAK
 BUILD
 CANCEL
 CLOSE
 COMPILE
 CONNECT
 CONTINUE
 COPY
 CREATE
 CREF
 CSAVE
 DAYTIME
 DDT
 DEASSIGN
 DEBUG
 DEFINE
 DELETE
 DEPOSIT
 DETACH
 DIRECTORY
 DISABLE
 DISCARD
 DISMOUNT
 EDIT
 ENABLE
 END-ACCESS
 EOF
 ERUN
 EXAMINE
 EXECUTE
 EXPUNGE
 FDIRECTORY
 FORK
 FREEZE
 GET
 HELP
 INFORMATION
 KEEP
 LOAD
 LOGIN
 LOGOUT
 MERGE
 MODIFY
 MOUNT
 PERUSE
 PLOT
 POP
 PRINT
 PUNCH
 PUSH
 R
 RECEIVE
 REENTER
 REFUSE
 REMARK
 RENAME
 RESET
 RETRIEVE
 REWIND
 RUN
 SAVE
 SEND
 SET
 SET HOST
 SKIP
 START
 SUBMIT
 SYSTAT
 TAKE
 TALK
 TDIRECTORY
 TERMINAL
 TRANSLATE
 TYPE
 UNATTACH
 UNDELETE
 UNKEEP
 UNLOAD
 VDIRECTORY

JSYSの機能 
JSYSは Jump to SYStemの略。オペランドにはメモリアドレスの指定もあった。TOPS-20は18ビットまたは30ビットのアドレスを使用できた。モニタコールには1つないしは2つのオペランドが必要だった。一部のコールは両方の形式をサポートした。一部のモニタコールでは指定したアドレスのうちの18ビット以上が無視された。これらのコールは18ビットのアドレスが現在のセクションを参照しているものと解釈された。

内部的には、まずGTJFN (Get Job File Number)というJSYSでファイルを識別し、次にOPENFでJFN番号を指定してファイルを開き、ファイルの内容を操作した。

PCL（プログラム可能コマンド言語） 
PCL（Programmable Command Language）はTOPS-20で動作するプログラミング言語。PCLのソースプログラムは、デフォルトでは.PCLというファイル形式で保存され、TOPS-20の拡張されたEXECでDECLAREという動詞名を使ってコンパイルでき、コンパイルしたコマンドはEXECの一部として機能した。

PCL言語の機能 
PCLには次のような機能があった： 

 フロー制御：DO While / Until、CASE / SELECT、IF-THEN-ELSE、GOTO 
 文字列操作 (length, substring, concatenation） 
 システム情報へのアクセス (日付/時刻、ファイル属性、デバイス特性)

関連項目

脚注 

 デジタルコンピューティングタイムライン

さらに読む 

 Storage Organization and Management in TENEX  ダニエル・L・マーフィー。 AFIPS Proceedings 1972年 FJCC 
 KI10でのTENEXの実装  ダニエル・L・マーフィー TENEXパネルセッション NCC 1974 
 Origins and Development of TOPS-20 ダニエル・L・マーフィー 1989年 
 TOPS-20 User's Guide 1988. 
 DECSYSTEM-20 Assembly Language Guide フランクダクルス、クリスライランド 1980年 
 Running TOPS-20 V4.1 under the SIMH Emulator

外部リンク 

 Origins and Development of TOPS-20 詳細な歴史 
 Panda TOPS-20 distribution 。 
 SDF Public Access TWENEX 。 
 SIMHシミュレータ PDP-10のシミュレーションとTOPS-20の実行が可能。 
 Manuals for DEC 36-bit computers 。 
 PDP-10ソフトウェアアーカイブ 。 
 36-bits Forever 。 
 Request a login to Living Computers: Museum + Labs TOPS-20が動くTOAD-2

1969年のソフトウェア