データゼネラルNova
次のルーチンは、16桁の2進数としてAC1の値をRDOSコンソールに出力する。 これは、Nova命令セットのさらなる奇抜さを明らかにしている。 たとえば、任意の「即時」値("immediate value")をアキュムレータにロードする命令はない(ただし、メモリ参照命令はそのような値をエンコードして実効アドレスを形成する)。 アキュムレータは一般に、初期化されたメモリ位置(例: n16 )からロードしなければならない。 PDP-11などの他の最新のマシンや、事実上のすべての最新アーキテクチャでは、即時ロードが可能であるが、 ARMなどの多くのマシンでは、即時ロードできる値の範囲が制限されている。
RDOSの .systm 呼び出しマクロは jsr を実装しているため、AC3は .pchar 関数の戻りアドレスで上書きされる。 したがって、この関数の呼び出し元の戻りアドレスを保持するための一時的な場所が必要になる。 再帰的なルーチンや再入可能なルーチンの場合は、スタック、利用可能な場合はハードウェア、利用できない場合はソフトウェアを代わりに使用しなければならない。 リターン命令は jmp @ retrn となり、Novaの間接アドレッシングモードを利用してリターンPCをロードする。
末尾の定数定義では、2つのアセンブラ機能を示している。アセンブラの基数はデフォルトで8進数 ( 20 = 10進数の16)で、文字定数は "0" などのようにエンコードすることができる 。
当時の慣習として、ほとんどのNovaモデルには、CPU機能を制御したり監視するためのフロントパネルコンソールが装備されていた。 Nova 3より前のモデルでは、上記のNova 840パネル写真のような標準的なフロントパネルレイアウトが採用されていた。 このレイアウトには、キー付き電源スイッチ、2列のアドレスランプとデータ表示ランプ、1列のデータ入力スイッチ、および押すとさまざまなCPU機能を作動させるファンクションスイッチが含まれていた。 アドレスランプは常にプログラムカウンタの現在値をバイナリで表示していた。 データ表示ランプは、その時点でどのCPU機能が作動しているかによってさまざまな値を表示していた。 一番左のデータランプの左側には、キャリービットの現在値を表示するランプが追加されていた。 ほとんどのモデルでは、ランプは白熱電球で、パネルボードにはんだ付けされていた。切れたランプを交換することは、データゼネラルのフィールドサービスエンジニアにとって悩みの種であった。
各データスイッチは16ビット値の1ビットの値を制御し、データゼネラルの慣習に従って、左から右へ0〜15の番号が付けられていた。 データスイッチは、さまざまな機能のためのCPUに入力を提供し、READSアセンブリ言語命令を使用して実行中のプログラムから読み出すこともできる。 パネルの乱雑さを減らしてコスト削減のために、ファンクションスイッチは双方向のモーメンタリスイッチとして実装された。 ファンクションスイッチのレバーを上げると、パネル上のスイッチの上に記載されている名前の機能が作動し、レバーを押し下げると、スイッチの下に表示されている名前の機能が作動する。
1975年のNova 3では、内蔵スタックへのアクセスを制御するために2つのレジスタが追加された。 また、プロセッサは TTLコンポーネントを使用して再実装され、システムの性能がさらに向上した。 Nova 3には、4スロット(Nova 3/4)と12スロット(Nova 3/12)があった。
Novaの基本モデルには、価格競争力を維持するためにハードウェアの乗算/除算機能が内蔵されていなかった。 次のルーチンは、2つの16ビット語を乗算して 16ビット語の結果を生成する(オーバーフローは無視される)。 これは、ALU 命令の shift および test(スキップ)を組み合わせて使用していることを示している。 このルーチンが jsr によって呼び出された場合、AC3はリターン・アドレス(英語版)を保持していることに注意すること。 これはリターン命令 jmp 0,3 によって使用される。 アキュムレータをクリアする慣用的な方法は sub 0,0 である。 他の単一命令は、有用な定数の特定のセット(たとえば、-2、-1、または+1)をロードするように配置することができる。