IBM 1401
メモリ上、これらビットは以下のようなフォーマットで配置される:
C B A 8 4 2 1 M
1401のメモリ構成は 1.4K、2K、4K、8K、16K の5種類あった(ごく一部の1401は特注で32Kまで拡張された)。メモリは文字単位でアドレス指定可能であり、アドレス範囲は0から15999までだった。
一部命令は特定のメモリ位置を使用するが、それらの位置は予約されているわけではなく、他の用途にも使用可能である。Read a card 命令は80欄ぶんのデータをパンチカードから読み取り、メモリ位置 001-080 に格納する。インデックスレジスタはメモリ上に3本あり、それぞれ 087-089、092-094、097-099 の位置である。Punch a card 命令は 101-180 の位置の内容をパンチカードにパンチする。Write a line 命令は 201-332 の位置の内容をプリンターに出力する。
1401の命令フォーマットは次の通りである。
命令コード (Opcode) は1文字である。メモリアドレス("I" は分岐先アドレス、"A" と "B" はデータのアドレス)と装置アドレスは3文字で表される。命令コードの修飾子 (modifier) は1文字である。以上から命令の長さは、1文字、2文字、4文字、5文字、7文字、8文字がある。
065HELLO WORLD
上述のようにLOADボタンを押下すると001番地(先頭の ",")から実行を開始する。"," は命令コードとしては Set Word Mark 命令である。それが7命令続いており、読み込んだ全命令にワードマークを設定する。"/" は Clear Storage 命令で、オペランド333で指定されたプリンター出力エリアの 333-300 の範囲をクリアし、次の "/" で連鎖アドレスを使って 299-200 の範囲をクリアする。次の命令コード "M" は Move Charactors to Word Mark 命令であり、079番地から250番地へワードマークまで文字列転送を行うが、これが "HELLO WORLD" をプリンター出力エリアにコピーすることになる。次の "2" が Write line 命令で印字を行い、次の "F" が Control Carriage 命令(修飾子が 1)でプリンターにページ送りをさせ、次の "." が Halt 命令となっていて停止する。065はHalt命令の番地であり、STARTボタンを押下しても停止したままとするようになっている。
↑ 本項目では K を1000の意味で用いており、1024ではない。
1401では各英数字を6ビットで表現し、各ビットを B, A, 8, 4, 2, 1 と呼ぶ。B,A ビットは「ゾーン」ビット、8,4,2,1 のビット群は「数字」ビットと呼ぶ。これらの呼称はIBMの80欄パンチカードから採られている。
1から9の数字については、ゾーンビットをゼロとし、数字ビット列でBCDで符号化している。数字の0は数字ビット列を全てゼロにするのではなく、8,2 を1にする。
アルファベットではソーンビットと数字ビットを使い、80欄パンチカードでの文字コードに対応させている。パンチカードの上3列を12-11-0ゾーンと呼ぶが、12 を B,Aビット、11 を B ビット、0 を A ビットに対応させ、残る1から9の列を数字ビットに対応させた。従って、例えばAという文字はパンチカード上は 12.1 だが、これがメモリ上では B,A,1 と符号化される。
他の文字の符号化については、文字コードと命令コードの節を参照。
IBMは1401の文字コードをBCDと称していたが、実際のところこの用語は十進の数字の符号化しか説明していない。1401の英数字の照合順序はパンチカードの称号順序と互換となっている。
記憶装置上では、この6ビットにさらに2ビットが付属し、C ビットは 「odd パリティチェック」であり、M ビットは「ワードマーク」ビットである。