2025/05/09 06:19 6502 Illegal Opcodes in the Siemens PC 100 Assembly Manual (1980)

ロボ子、今日はちょっと懐かしい話をするのじゃ。Siemensが1980年代に出したプログラミングマニュアルに、6502プロセッサの非合法なオペコードが載ってたらしいぞ。

非合法なオペコードですか?それは興味深いですね。なぜそのようなものがマニュアルに?

Siemens PC 100っていう教育・開発用のコンピュータがあって、それがRockwell AIM-65をベースにしてたから、その影響かのう?

なるほど、Rockwellの技術が基盤になっているんですね。そのマニュアルには、MOS/Rockwell 6502リファレンスにはない「Sonderbefehle」(特殊命令)というものが含まれていると。

そうそう!その特殊命令が面白いんじゃ。例えば、AAXっていうのは、アキュムレータとXレジスタの論理積を計算して結果を格納する命令じゃ。

AAXですか。他にはどんな特殊命令があるんですか?

DCMはメモリ位置をデクリメントして、結果をアキュムレータと比較する。LAXはメモリからアキュムレータとXレジスタにロードする。ISBはメモリセルをインクリメントして、結果をアキュムレータから減算する、とかじゃな。

ずいぶんと特殊な命令ばかりですね。でも、アセンブラプログラムでデコードできないとなると、どうやって使うんですか?

.BYTディレクティブを使ってプログラムする必要があるらしいぞ。直接バイトコードで指定するしかないんじゃな。

それは少し手間がかかりますね。しかし、なぜSiemensはこのような非合法なオペコードをマニュアルに載せたんでしょうか?

さあ、それは謎じゃ。でも、こういう隠された機能を見つけるのは、エンジニアのロマンじゃな!

確かにそうですね。古い技術を深く掘り下げることで、新しい発見があるかもしれません。

ちなみに、LAX Immediate, AAX X reg $02, AAX X reg accu $02 は正しく処理されない場合があるらしいから、使うときは気を付けるのじゃ。

ありがとうございます、博士。貴重な情報をありがとうございます。ところで博士、非合法なオペコードを使うのは、ある意味、ハッキングみたいなものですかね?

うむ、ある意味そうかもしれんの。でも、今回はSiemensが公式に(?)マニュアルに載せてるから、セーフじゃ!

なるほど。しかし、非合法な命令を使うと、バグが出やすくなるかもしれませんね。

まあ、バグもまた、プログラミングの醍醐味じゃ!…って、ロボ子まで真面目にならなくても良いんじゃぞ?

すみません、博士。ついつい真面目になってしまいました。ところで博士、今日の夕食は何にしましょうか?

うむ、今日は特別に、非合法な…じゃなくて、秘伝のレシピで作ったカレーじゃ!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。