ND812

ND812
開発者ニュークリアデータ社
タイプミニコンピュータ
発売日1970 (1970)
導入価格1万ドル、2024年には約8万ドルに相当

Nuclear Data社が製造した12ビットのND812は科学 計算市場向けに開発された商用ミニコンピュータでした。Nuclear Data社は1970年に1万ドル未満[1](2024年には約8万ドルに相当[2]の価格で発売しました。

説明

ND812レジスタ
01234567891 01 1(ビット位置)
メインアキュムレータ
JJアキュムレータ
KKアキュムレータ
サブアキュムレータ
RRアキュムレータ
SSアキュムレータ
プログラムカウンタ
パソコンプログラムカウンター
ステータスフラグ
 Oオーバーフロービット
 F遅延ビット
内部レジスタ (コードからはアクセスできません)
IR命令レジスタ
メモリレジスタ
3月メモリアドレスレジスタ

このアーキテクチャは、シンプルなプログラムI/OバスとDMAチャネルを備えています。プログラムI/Oバスは通常、プリンタテレタイプ紙テープパンチ、紙テープリーダーなどの低速から中速の周辺機器で使用され、DMAはライトペン付きブラウン管ディスプレイ、アナログ-デジタルコンバータデジタル-アナログコンバータテープドライブディスクドライブなどで使用されます。

12ビットのワードサイズは、0から4095までの符号なし整数を扱うのに十分な大きさであり、単純な機械の制御には十分な広さです。また、-2048から+2047までの符号付き数値も扱えます。これは、計算尺やほとんどのアナログコンピュータよりも高い精度です。12ビットは、2つの6ビット文字を格納することもできます(ただし、6ビットでは「より完全な」 ASCII文字セットとは異なり、2つのケースを格納するには不十分です)。「NDコード」は、大文字のアルファベット、数字、句読点の一部、およびいくつかの制御文字を含む、そのような6ビット文字エンコーディングの1つでした。[3] ND812の基本構成は、 2マイクロ秒のサイクルタイムを持つ4,096個の12ビットワードのメインメモリを備えています。メモリは4Kワード単位で16Kワードまで拡張可能です。ワード内のビットは、最上位ビット(ビット11) から最下位ビット(ビット0)まで 番号が付けられます

プログラミングモデルは、2つのメインアキュムレータ(JとK)と2つのサブアキュムレータ(RとS)の計4つのアキュムレータレジスタで構成されています。メインアキュムレータには豊富な算術演算と論理演算が用意されており、メインアキュムレータとサブアキュムレータ間でデータを交換するための命令も用意されています。条件付き実行は「スキップ」命令によって提供されます。条件がテストされ、その結果に応じて後続の命令が実行される、またはスキップされます。後続の命令は、テストが失敗した場合に複数の命令が必要な場合、通常はジャンプ命令です。

入力/出力

I/O機能には、4段階の優先度を持つプログラマブル割り込みが含まれており、メモリの最初の4Kワードの任意の位置にトラップできます。I/Oは、1サイクルで12ビットまたは24ビットの送信、12ビットまたは24ビットの受信、あるいは12ビットの送受信が可能です。I/O命令には、周辺機器制御用のパルスを生成するための4ビットが含まれています。I/O周辺機器は、周辺機器による直接メモリアクセスを可能にする76信号コネクタを介して接続できます。DMA、CPUから「サイクルスチール」することで、コアメモリシステムに直接ワードを保存することで実現されます。

Nuclear Data は次の周辺機器へのインターフェースを提供しました。

  • 大容量ストレージデバイス
    • ディアブロモデル 31 標準密度ディスクカートリッジ
    • ディアブロ モデル 31 高密度ディスクカートリッジ
    • EDP​​固定ヘッドディスクモデル3008、3016、3032、3064、または3120
  • 磁気テープI/Oデバイス
    • 磁気カセットテープ
    • PEC 7トラック磁気テープ
    • PEC 9トラック磁気テープ
  • 紙テープI/Oデバイス
    • Superior Electric モデル TRP125-5 光電式テープリーダー (125 文字/秒)
    • Dataterm モデル HS300 光電式テープリーダー (300 文字/秒)
    • Remex モデル RPF1150B 光電式テープリーダー (200 文字/秒)
    • Remex モデル RPF1075B マイラーテープパンチ (75 文字/秒)
    • Tally モデル 1504 紙テープ リーダー (60 文字/秒)
    • Tally モデル 1505 紙テープパンチ (60 文字/秒)
    • テレタイプモデル BRPE11 紙テープパンチ(110 文字/秒)
  • ハードコピーI/Oデバイス
    • Data Products モデル 2410 ラインプリンター
    • Centronics Model 101 ライン プリンタ (165 文字/秒)
    • フランクリン モデル 1220 プリンター (20 行/秒)
    • フランクリン モデル 1230 プリンター (30 行/秒)
    • Hewlett-Packard Model 5050A プリンタ (20 行/秒)
    • Hewlett-Packard モデル 5055A プリンタ (10 行/秒)
    • Calcomp デジタル インクリメンタル プロッタ

プログラミング設備

ND812にはオペレーティングシステムはなく、フロントパネルと実行/停止スイッチのみが搭載されていました。I/O機能により、コンピュータが停止し命令を実行していない状態でも、周辺機器からプログラムをメモリに直接ロードすることができました。また、テレタイプや紙テープリーダーなどの周辺機器から目的のプログラムをブートストラップするための短いローダープログラムを入力することもできました。コアメモリは不揮発性であるため、コンピュータの電源を切ってもデータやプログラムは失われませんでした。

Nuclear Data社は、ND812で使用するために、BASC-12アセンブラ、シンボリックテキストエディタ、NUTRANインタープリタ、ディスクベースのシンボリックテキストエディタなど、いくつかのシステムプログラムを提供しました。

BASC-12 アセンブラ

BASC-12と呼ばれるアセンブラが提供されました。BASC-12は2パスのアセンブラでオプション3パス目を追加できます。1パス目はシンボルテーブルを生成し、2パス目はバイナリ出力テープを作成し、3パス目はプログラムのリストを生成します。

ND812 コンピュータのプログラミングの原則のマニュアルからのアセンブラのサンプルを以下に示します。

/ 2つの異なる数値「A」と「B」を入力し、2つの数値を比較します/そしてどちらが大きいかを判断し、リテラルステートメントを出力する/「A > B」、または「B > A」のいずれか該当する場合。//AとBの値を入力して保存する *200開始、TIF / TTYフラグのクリア JPS入力/Aの値を取得 STJ A JPS入力/Bの値を取得 STJ B/2つの値のどちらが大きいかを判断する LDJ A SBJ B /AからBを引く SIP J /A検査陽性 JMP BRAN /いいえ!B > A LDJ ABCST /はい!A > B SKIP /次の命令をスキップブラン、LDJ バクスト//式の設定と出力/ JPSアウト 停止 ジャンプスタート//作業またはデータ保存エリア/A, 0 /定数AB, 0 /定数BABCST、AB /Aのアドレス > BリテラルBACST、BA /Bのアドレス > リテラルC260, 260 /ASCIIゾーン定数//入力ルーチン + ASCIIゾーンストリップ/入力、0 /エントリポイント TIS ジャンプ .-1 TRF テレタイプでのTCP /エコー入力 利用規約 ジャンプ .-1 SBJ C260 JMP@入力//出力ルーチン - ASCII式を出力する/アウト、0 /エントリーポイント STJループ+1 LDJ C5 /文字定数の数を設定する STJ CTR//出力データループ/ループ、TWLDJ 0 TCP 利用規約 ジャンプ .-1 ISZループ+1 DSZ CTR /全文字のテスト JMP ループ /いいえ JMP@ 出力 / 戻りC5、5クリック率、0//出力メッセージ/AB、215 212 301 /A 276 /> 302 /BBA、215 212 302 /B 276 /> 301 /A$ /終了文字

ニュートラン

FORTRANに似た会話型言語であるNUTRANが提供されました。NUTRANは一般的な科学技術プログラミングを目的としていました。NUTRANのサンプルを以下に示します。

1 'XとYの入力値'を印刷する2 入力 X、Y3 Z=X+Y4 印刷 'X+Y=',Z5 停止

NUTRAN の会話型の性質の例を以下に示します。 >はコマンド プロンプトであり、:は入力プロンプトです。

>1.GXとYの入力値:3:2X+Y= .5000000E 1>

指示フォーマット

命令セットは、シングルワード命令とダブルワード命令で構成されています。オペランドは、即値、直接オペランド、間接オペランドのいずれかです。即値オペランドは、命令内でリテラル値として直接エンコードされます。直接オペランドは、オペランドのアドレスとしてエンコードされます。間接オペランドは、オペランドへのポインタを含むワードのアドレスとしてエンコードされます。

単語1つだけの指示

0345611
手術D/I+/-変位

変位ビットと符号ビットにより、単一ワード命令は命令位置の-63から+63までの範囲のアドレスを指定できます。命令のビット4は、間接アドレス指定と直接アドレス指定のどちらかを選択できます。変位ビットを間接アドレスとして使用する場合、命令位置から+/-63の範囲にあるアドレスの内容が、実際のオペランドへのポインタとして使用されます。

多くの 1 ワード命令はメモリを参照せず、ビット 4 と 5 を操作の仕様の一部として使用します。

リテラル形式

0345611
手術命令リテラル

グループ1形式

034567811
0010KJシフト回転シフト数

グループ1の命令は、アキュムレータレジスタに対して算術演算、論理演算、交換演算、シフト演算を実行します。これには、ハードウェア乗算および除算命令が含まれます。Kレジスタが影響を受ける場合はビット4がセットされます。Jレジスタが影響を受ける場合はビット5がセットされます。両方のレジスタが影響を受ける場合は、両方のビットがセットされます。

グループ2の形式

034567891011
0011KJ字幕コンプセットコンプクリア0
1
>= 0
< 0
!= 0
!= 0

グループ2形式の命令は、JおよびKアキュムレータレジスタの内部状態をテストし、オーバーフロービットとフラグステータスビットを操作し、JおよびKアキュムレータレジスタの補数、増分、および否定演算を行います。ビット9、10、および11は、テストする状態を選択します。

2語の指示

02367891011
手術命令工業KJ アカウンティングフィールドの変更MF1MF2
絶対12ビットアドレス

ビット9(フィールド変更)は、絶対アドレスが命令を含むフィールドとは異なるフィールドを参照することを禁止します。ビット8が1の場合、命令では上位アキュムレータKが使用され、それ以外の場合は下位アキュムレータJが使用されます。ビット7が1の場合、間接アドレッシングが使用され、それ以外の場合は直接アドレッシングが使用されます。

ステータスワードの形式

01234567891011
フラグオーバーフローJPS中位イオンLイオナイオンBイオン現在の実行
MF0MF1MF1MF2MF1MF2

ステータスレジスタは独立したレジスタとして存在しません。これは、必要に応じてJレジスタに格納される複数のインジケータグループの内容です。JPSビットとIntビットは、JPS命令または割り込み時に使用される現在のフィールドの内容を保持します。フラグビットとオーバーフロービットは、RFOV命令を使用してJレジスタの内容から明示的に設定できますが、その他のビットは別の命令で設定する必要があります。

サブルーチン

ND812プロセッサはオペランド用のシンプルなスタックを提供していますが、サブルーチンのリターンアドレスの格納にはこのメカニズムを使用しません。代わりに、リターンアドレスはJPS命令のターゲットに格納され、その後PCレジスタは格納されたリターンアドレスの次の位置を指すように更新されます。サブルーチンから戻るには、サブルーチンの開始位置を経由する間接ジャンプによって、プログラムカウンタをそのJPS命令の次の命令に戻します。

命令セット

メモリ参照命令

アセンブラニーモニック8進コード説明影響を受けるレジスタ
ANDF2000JとAND、前進J
LDJ5000ロードJJ
TWLDJ0500ロードJJ
STJ5400ストアJメモリ
TWSTJ0540ストアJメモリ
トゥエルドック0510荷重KK
TWSTK0550ストアKメモリ
調整4400Jに追加J、OV
TWADJ0440Jに追加J、OV
SBJ4000Jから引くJ、OV
TWSBJ0400Jから引くJ、OV
わかった0450Kに追加K、OV
TWSBK0410Kから引くK、OV
ISZ3400メモリをインクリメントし、ゼロの場合はスキップするメモリ、PC
ツイズ0340メモリをインクリメントし、ゼロの場合はスキップするメモリ、PC
DSZ3000メモリをデクリメントし、ゼロの場合はスキップするメモリ、PC
TWDSZ0300メモリをデクリメントし、ゼロの場合はスキップするメモリ、PC
SMJ2400メモリがJと等しくない場合はスキップパソコン
TWSMJ0240メモリがJと等しくない場合はスキップパソコン
TWSMK0250メモリがKと等しくない場合はスキップパソコン
ジャンプ6000無条件ジャンプパソコン
TWJMP0600無条件ジャンプパソコン
JPS6400サブルーチンにジャンプメモリ、PC
TWJPS0640サブルーチンにジャンプメモリ、PC
XCT7000命令を実行する

論理演算

アセンブラニーモニック8進コード説明影響を受けるレジスタ
そしてJ1100J、K の論理積を J に取るJ
そしてK1200J、K の論理積を K に取るK
そして冗談1300J、K の論理積を J、K に取るJ、K

累算器の算術演算

アセンブラニーモニック8進コード説明影響を受けるレジスタ
AJK J1120(J + K) から JJ、OV
NAJK J1130-(J + K) から JJ、OV
SJK J1121(J - K) から JJ、OV
NSJK J1131-(J - K) から JJ、OV
ADR J1122(R + J) から JJ、OV
NADR J1132-(R + J) から JJ、OV
広告 J1124(S + J) から JJ、OV
NADS J1134-(S + J) から JJ、OV
SBR J1123(R - J)からJJ、OV
NSBR J1133-(R - J) から JJ、OV
SBS J1125(S - J)からJJ、OV
NSBS J1135-(S - J) から JJ、OV
AJK K1220(J + K) から KK、OV
NAJK K1230-(J + K) から KK、OV
SJK K1221(J - K) から KK、OV
NSJK K1231-(J - K) から KK、OV
ADR K1222(R + K) から KK、OV
ナドルK1232-(R + K) から KK、OV
広告K1224(S + K) から KK、OV
ナッドスK1234-(S + K) から KK、OV
SBR K1223(R - K) から KK、OV
NSBR K1233-(R - K) から KK、OV
SBS K1225(S - K) から KK、OV
NSBS K1235-(S - K) から KK、OV
AJK JK1320(J + K) から J,KJ、K、OV
NAJK JK1330(J + K) から J,KJ、K、OV
SJK JK1321(J - K) から J,KJ、K、OV
NSJK JK1331-(J - K) から J,KJ、K、OV
MPY1000JとKをR、Sに掛けるJ、K、R、S、OV
部門1001J,KをRで割ってJ,KにするJ、K、R、S、OV

シフト/回転命令

アセンブラニーモニック8進コード説明影響を受けるレジスタ
SFTZ J1140Jを左にシフトNJ
SFTZ K1240Kを左にシフトNK
SFTZ JK1340シフト J、K 左 NJ、K
ROTD J1160Jを左に回転NJ
ROTD K1260Kを左に回転NK
腐ったJK1360J、Kを左に回転NJ、K

ロードおよび交換操作

アセンブラニーモニック8進コード説明影響を受けるレジスタ
LJSW1010スイッチレジスタからJをロードするJ
LRF J1101JからRをロードするR
LJFR1102RからJをロードするJ
EXJR1103JとRを交換J、R
LSFK1201KからSをロードするS
LKFS1202SからKをロードするK
エクスクス1203KとSを交換K、S
LKFJ1204JからKをロードするK
EXJK1374JとKを交換J、K
LRSFJK1301J、KからR、SをロードするR、S
LJKFRS1302R、SからJ、KをロードするJ、K
エクジェイルクス1303J、KとR、Sを交換J、K、R、S
LJST1011ステータスレジスタをJにロードするJ
無線視野1002フラグ、OVをJから読むJ

条件付きスキップ

アセンブラニーモニック8進コード説明影響を受けるレジスタ
サイズ J1505Jがゼロの場合はスキップパソコン
サイズK1605Kがゼロの場合はスキップパソコン
サイズ JK1705JとKの両方がゼロの場合はスキップするパソコン
SNZ J1501Jがゼロでない場合はスキップするパソコン
SNZ K1601Kがゼロでない場合はスキップパソコン
SNZ JK1701JまたはKが0でない場合はスキップパソコン
SIP J1501Jが正の場合はスキップパソコン
SIP K1602Kが正の場合はスキップパソコン
SIP JK1702JとKの両方が正の場合はスキップパソコン
シンJ1506Jが負の場合はスキップパソコン
シンク1606Jが負の場合はスキップパソコン
シンJK1706JとKの両方が負の場合はスキップパソコン

クリア、補完、増加、設定

アセンブラニーモニック8進コード説明影響を受けるレジスタ
CLR J1510クリアJJ
CLR K1610クリアKK
CLR JK1710クリアJ、KJ、K
CMP J1520補数JJ
CMP K1620補体KK
CMP JK1720補数J、KJ、K
セットJ1530Jを-1に設定するJ
セットK1630Kを-1に設定するK
セットJK1730J、Kを-1に設定するJ、K

オーバーフロービット命令

アセンブラニーモニック8進コード説明影響を受けるレジスタ
サイズ O1445オーバーフローゼロの場合はスキップパソコン
SNZ O1441オーバーフローセットの場合はスキップパソコン
CLR O1450オーバーフローをクリア字幕
CMP O1460補数オーバーフロー字幕
セットO1470オーバーフローを設定する字幕

フラグビット命令

アセンブラニーモニック8進コード説明影響を受けるレジスタ
サイズ1405フラグがゼロの場合はスキップパソコン
SNZ1401フラグが設定されている場合はスキップパソコン
CLRR1410クリアフラグF
CMP1420補数フラグF
セット1430フラグを設定するF

増分と否定

アセンブラニーモニック8進コード説明影響を受けるレジスタ
INC J1504Jを増分J
インクK1604増分KK
インクJK1704J、Kを増分J、K
ネガティブJ1524否定JJ
ネガティブK1624Kを無効にするK
ネガティブJK1724J、Kを否定するJ、K

割り込み命令

アセンブラニーモニック8進コード説明影響を受けるレジスタ
イオン1004割り込みレベルHを有効にする
イオナ1006割り込みレベルA、Hを有効にする
イオンB1005割り込みレベルB、Hを有効にする
イオン1007すべての割り込みレベルを有効にする
IOFF1003すべての割り込みを無効にする

停電ロジック命令

アセンブラニーモニック8進コード説明影響を受けるレジスタ
パイオン1500停電オン
ピオフ1600停電オフ
SKPL1440電力不足でスキップパソコン

文字通りの指示

アセンブラニーモニック8進コード説明影響を受けるレジスタ
ANDL2100J を含む AND リテラルJ
ADDL2200Jにリテラルを追加J
サブル2300Jからリテラルを引くJ

INTおよびJPSレジスタ命令

アセンブラニーモニック8進コード説明影響を受けるレジスタ
LDREG7720JからJPSをロードし、KからINTをロードする
LDJK7721JPSをJに、INTをKにロードするJ、K
RJIB7722JPSとINTステータスを設定する

テレタイプシステム

アセンブラニーモニック8進コード説明影響を受けるレジスタ
TIS7404キーボードの準備ができたらスキップパソコン
ティル7402JにキーボードをロードするJ
TIF7401キーボードリーダーフェッチ
TRF7403キーボード読み取りフェッチJ
利用規約7414プリンタパンチの準備ができている場合はスキップパソコン
目次7411クリアフラグ
TCP7413クリアフラグ、プリントパンチ
トップ7412プリントパンチ

高速紙テープ

アセンブラニーモニック8進コード説明影響を受けるレジスタ
彼の7424スキップHSリーダー準備完了パソコン
HIR7422フラグをクリアし、HSバッファを読み取るJ
HIF7421HSリーダーフェッチ
HRF7423HSリーダーの読み取りフェッチJ
HOS7434HSパンチの準備ができたらスキップパソコン
ホール7432フラグをクリアし、Jからバッファをロードする
ホップ7431HSパンチのパンチ
HLP7433HSパンチを装填してパンチする

磁気カセットテープシステム

アセンブラニーモニック8進コード説明影響を受けるレジスタ
CSLCT17601カセット1をオンラインにする
CSLCT27602カセット2をオンラインにする
CSLCT37604カセット3をオンラインにする
CSTR0740, 0124トランスポートの準備が整っている場合は、選択された TWIO をスキップしますパソコン
CSFM0740、0104ファイルマークをスキップパソコン
CSET0740、0110テープの終わりでトランスポートをスキップするパソコン
CSNE0740、0122エラーがない場合はスキップパソコン
CSBT0740、0130テープの先頭でトランスポートをスキップするパソコン
CCLF0740、0141すべてのカセット制御フラグをクリアする
CWFM0740, 0151ファイルマークの書き込み
CSWR0740, 0152書き込み準備が整っている場合はスキップパソコン
CWRT0740, 0154Jをバッファに書き込む
CSRR0740、0142準備ができたらスキップパソコン
CRDT0740, 0144バッファをJに読み込むJ
CHSF0740、0101EOTまで高速前進
CSPF0740、0102スペースキーでファイルマークまで進む
CHSR0740、0121BOTへの高速後退

その他の指示

アセンブラニーモニック8進コード説明影響を受けるレジスタ
停止0000実行を停止
スキップ1442無条件スキップパソコン
アイドル14001サイクル遅延
トゥイオ07402ワードI/O

参考文献

  1. ^ 「データメーション」16ページ、1970年、84ページ。 {{cite journal}}:ジャーナルを引用するには|journal=ヘルプ)が必要です
  2. ^ 1634–1699: McCusker, JJ (1997). How Much Is That in Real Money? A Historical Price Index for Use as a Deflator of Money Values in the Economy of the United States: Addenda and Corrigenda (PDF) . American Antiquarian Society .1700–1799年:McCusker, JJ (1992). 実質貨幣価値はいくらか?米国経済における貨幣価値のデフレーターとして用いる歴史的物価指数(PDF) .アメリカ古物協会.1800年~現在:ミネアポリス連邦準備銀行。「消費者物価指数(推定)1800年~」 。 2024年2月29日閲覧
  3. ^ 「ND812コンピュータのプログラミング原理」(PDF) 1971年、p. G-1 。 2017年2月11日閲覧
  • ND812 パンフレット
  • ND812コンピュータのプログラミングの原則、1971年
  • NUTRAN ユーザーおよびプログラマガイド、1972年11月
  • ソフトウェア取扱説明書 BASC-12 一般アセンブラ、1971 年 1 月
Retrieved from "https://en.wikipedia.org/w/index.php?title=ND812&oldid=1130651921"