Tuesday 17 July 2018

OS9 level 2

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: