os9 のコードは教育用に公開されているらしいんですが、それを修正している人たちがいるらしく...
http://hg.code.sf.net/p/nitros9/code
それはアセンブラソースなので、7/12に動いていやつを、それに合わせて動かそうと思うわけですが、
sbc09 (https://github.com/6809/sbc09) のA09の機能が全然足りない
という問題があって。まぁ、これよりまともな6809用のアセンブラはいくらでもあったんですが、こいつは琉大のコンパイラの授業で最初に使ったりしたので。
ところが、A09のできが悪いのと、自分が適当に入れた機能拡張がバグりまくったので、結構、苦労しました。が、まぁ、なんとか動きました。
https://github.com/shinji-kono/sbc09.git の os9lv2 branch
に置きました。
level1 は boot で要求した領域にあるmoduleは落とさないようになっているんですが、ROMに割り当ててbootでは適当にサイズ0を返したら、ROM上のmoduleをunlikするという技を出されて動かなかったみたい。boot を呼び出さなければそういうことは起きない。ChgDir するとDisk driverがunlinkされるとか謎な状況が面白かったです。
level2 の方は「アセンブラのラベルが一つだけ狂う」とかのバグが面白すぎた。mac OS の lldb のwatch pointが壊れているせいで sudo gdb の方を使って直しました。label の構造体をpointerで指していたらコピーベースのinsert sortで実装されていて指した先がずれると言うもの。hash で書けよと思うが、自分もhashを知ったのは大学4年だったり。
Tandy/RadioShack のEmulator だとMAMEがあるらしいんですが、どうもMMUに対応してないっぽい。
学生部屋のクーラーは今週末に治るらしいので、それまで、もう少しいじろうかと思ってます。
No comments:
Post a Comment