ネタ元 → おねだり (o^^o)
僕のオフィスの引き出しには昔々のメモリやらチップやら、
何の役にも立たんゲジゲジが隅っこで眠ってます。
なんか捨てるに捨てられなくて。
こんなのが眠ってました → Intel 2716
一個で2KBのROMです。
背中に開いた窓から紫外線を当ててしばらくするとデータが消えて0xFFになります。
紫外線を当てるごとにチップの余命がぢわぢわと減っていきます。
最初はほんの数分で消去できるんですけど、消去/書き込みを何度も繰り返すうち、
だんだんと消去にかかる時間が伸び、しまいにちっとも消えてくれなくなるです。
物覚えが悪くなるんじゃなくて、物忘れが悪くなるんですな♪
※ 書き込みはROM-writerてゆーのあるです。
ヒマだったもんで、実験室の備品借りて昔々の2716のナカミを読み出してみました。
16進でダンプを取ると、00 00 00 って三連の0x00がしょっちゅう出てきます。
その昔、僕はZ80のアセンブラで仕事してました。8bit-CPU Z80の命令語では
00 は NOP : なにもしない って命令です。 プログラムとしてはまったくのムダ。
また、Z80での goto 命令は C3 ## ## です。
## ## にはジャンプ先のアドレスが入ります。
同様に call 命令は CD ## ##
つまりね、2716に入ってた三連の0x00は"パッチをあてるため"だったのね。
3バイト空いてればそこに goto/call 命令を埋め込むことができるワケよ。
昔のシステムにはこんなROMに機械語詰め込んだやつをいくつもボード
に挿してお客さんとこに納めてたの。
バグ抜きやら改造/改良に伴ってルーチンのアドレスがズレるとたくさんの
ROMを全部交換せにゃならんくなる。
なのでアドレスをズラさんようにパッチをあてていぢくるんですな。