Mona開発苦労話

id:yaneuraoさんの絶対再現できないプロテクトの話に感心したり、びっくりした人たちはたくさんいると思う。私も「すごい」と感心したのだがちょっとだけ皆さんより実感を伴った驚きだった。(そんな小学生すごいよ。。)


というのもMonaの実装で大変だったものといえば、スレッドでもページングでもスケジューラでもなくて
フロッピィディスクドライバなのだから。


まず以下の点でそもそもハードルが高いのだ(個人的な理由もふくむ)

  • ハードウェア本格的なドライバを書いたことが一切ない。
  • フロッピィの物理的な仕組みを一切知らない
  • ドライバの動作母体となるMonaカーネルが貧弱でバグだらけ。


FDC(フロッピィディスクコントローラ)の仕様を本で調べつつ、ソースが公開されているOSのドライバの大まかな流れを参考にして自分色にコーディングする。


まずはエミュレータbochsVirtual PCで動作確認をするのだが、全然動かないのだ。
readしているのにメモリに正しく読み込めていない、割込みが来ないので先に進まない。
DMAの初期化がうまくいかない・・・


これらをたくさんの方々の助言を頂いて改善して、いよいよ実機にて動かす。
するとまた動かない(゜∀゜ )
FDランプがつきっぱなしで止まる。何も表示されずマシンごと再起動する。
動作するマシンもあれば動作しないマシンもある。


このテストで我が家のフロッピィディスクドライブが1台お亡くなりになったのは秘密だ。o(`ω´*)o


今はだいぶ安定しているのだが、本当に勉強になった実際に作って見ないとあの苦労は分からないかもしれない。
そもそもプログラミングを始めたのが幼少のころだったわけでもない富豪プログラミング世代(Java世代?)の私にあのような世界に触れるのはよい経験だったと思う。
でももう2度とやりたくないよー。