Sunday, 22 July 2018

OS9 level 2 vrbf 完了

os9 側から Unix file system を直接見れる仮想RBFを書いたので、これで os9 disk image 抜きで上げられるように。ついでに dir -e も。

RBFにはdir -e用のundocumented system call (FDINF)てのがあって、それでfile descriptor(Unixのとは関係ない os9 のファイルの情報を格納するセクタ)にアクセスしてきます。なので、そのセクタを stat とかから作ってやれば良い。なのだが、LSN(logical sector number)でアクセスされる。さらに、os9 はcurrent directory (work/execの二つ)をLSNで管理してる。つまり、

  directoryのLSN(24bit)を仮想RBF側で覚えておいてやらないとだめ

inode番号使えば良いのだが、最近のinode番号って無駄に長いのね。でも下位3byteで良いらしい。ちゃんと管理するとあれなんだけど、でも、shell とか dir commadが動いている間だけつじつまが合えば良いと考えて、FIFOな辞書でいいや的な感じですませました。 まぁ、だめな方法なんだけど。

これで、level2 のcommandも一通り動かせました。mfree が変だったけど。Coco は512kbyte memoryかと思っていたんだが、実は2MBあるらしく、そこをなんとかするべきらしい。まあ、別にいいかな。

最後は、clock moduleをdebugして、ちゃんと時刻が表示できたり、時分割で並列実行できたりするのを確認しました。無駄にloopするコマンド作って裏で動かしました。

Sysgo から os9 F$STime すると clock module がリンクされるので、そこで timer start してやれば良いらしい。タイマー割り込み IRQ/FIRQからは自分のos9 system mode で動かすルーチンを登録、ルーチン側では最後に os9 の time slice routine である D.Clock を呼び出してやる方式。

  L00AE  leax ClockIRQ1,pcr
       stx  <D.SvcIRQ
       jmp  [D.XIRQ]  Chain through Kernel to continue IRQ handling
  ClockIRQ1
       jmp  [>D.Clock]

この方法だと、割り込み内で処理するものは少なくてすむわけね。これを発見するのには少し時間がかかったが...

これでだいたい終了かな。実機持っていた81年ぐらいにやるべきだったとは思うけど、あの頃は他にやることたくさんあったからなぁ。(いまでもそうですが..)

  OS9:loop & loop & loop & loop & loop &
  &003
  &004
  &005
  &006
  &007

  OS9:proc

   ID Prnt User Pty Age Tsk Status Signal  Module  I/O Paths
  ___ ____ ____ ___ ___ ___ _______ __ __ _________ __________________
   1  0  0 255 255  00 s    0 00 System  <TERM >TERM >>TERM
   2  1  0 128 134  00 s    0 00 Shell   <TERM >TERM >>TERM
   3  2  0 128 132  02      0 00 Loop   <TERM >TERM >>TERM
   4  2  0 128 131  03      0 00 Loop   <TERM >TERM >>TERM
   5  2  0 128 130  04      0 00 Loop   <TERM >TERM >>TERM
   6  2  0 128 129  05      0 00 Loop   <TERM >TERM >>TERM
   7  2  0 128 128  06      0 00 Loop   <TERM >TERM >>TERM
   8  2  0 128 133  07 s    0 00 Proc   <TERM >TERM >>TERM

  OS9:proc

   ID Prnt User Pty Age Tsk Status Signal  Module  I/O Paths
  ___ ____ ____ ___ ___ ___ _______ __ __ _________ __________________
   1  0  0 255 255  00 s    0 00 System  <TERM >TERM >>TERM
   2  1  0 128 134  00 s    0 00 Shell   <TERM >TERM >>TERM
   3  2  0 128 132  02      0 00 Loop   <TERM >TERM >>TERM
   4  2  0 128 131  03      0 00 Loop   <TERM >TERM >>TERM
   5  2  0 128 130  04      0 00 Loop   <TERM >TERM >>TERM
   6  2  0 128 129  05      0 00 Loop   <TERM >TERM >>TERM
   7  2  0 128 128  06      0 00 Loop   <TERM >TERM >>TERM
   8  2  0 128 133  07 s    0 00 Proc   <TERM >TERM >>TERM

  OS9:proc

   ID Prnt User Pty Age Tsk Status Signal  Module  I/O Paths
  ___ ____ ____ ___ ___ ___ _______ __ __ _________ __________________
   1  0  0 255 255  00 s    0 00 System  <TERM >TERM >>TERM
   2  1  0 128 128  00 s    0 00 Shell   <TERM >TERM >>TERM
   8  2  0 128 128  02 s    0 00 Proc   <TERM >TERM >>TERM

Saturday, 21 July 2018

台風〜

直撃でしたが、全然たいしたことありませんでした。

学生部屋の冷房修理の日だったけど、来てくれたのかな。いや、この台風で4Fのビルのベランダの作業はいやだが。

とか言ってたら、家のネットが繋がらない。

  モデムのランプが全滅

何もしてないのに〜 *何もしてないのに*〜 いきなり〜

で、台風の中、沖縄ケーブルのサービスの人を読んだのですが...

  ACアダプタが逝ってます

だったようです。まぁ、家の中をあら探しすれば替わりのACアダプタぐらいあったような気もするが、ここはサービスに頼むところでしょう。

os9 level2 も仮想RBF、だいたい動きました。あと残ってるのは clock ぐらいか。

Thursday, 19 July 2018

Software Update

うっとうしい〜 ダウンロードして、設定して、その後で、

  切り替えますか?

と聞いてくるものなんじゃないのかなあ。昔と違って、ストレージ容量とかメモリ容量とかたくさんあるわけだし。

でも、OS Xでも、

  くそ遅くなった

と思ったら、

  mdほげが動作中

なんてのがあるからな〜 計算機、速くなったようで、ぜんぜん速くなってない。しかも、

  最近、PCは絶賛値上げ中

な感じだし。MBPとかiMac とか気軽に買えない感じ。昔が、バブルだっただけだけど。超円高の頃のMBP安い〜って感じはもうないなぁ。

Wednesday, 18 July 2018

スカパー修理完了

歳食って早く起きるようになったので... 「朝の涼しいうちに治そう」って、沖縄は朝も大して涼しくはないんですけどね。日差しが楽。

なんだが、ぜんぜん、動かない。なんか、ちらっと入ることがある。線外した時のような気がする。が、お休みにして夕方から再開。真っ昼間にやると日差しが危ない。結局、

  サッシからの引込線がやられてるらしい

そこかぁ。外して調整するとピクと来た〜 ここまで来れば。で、引込線を繋げてみるとやっぱりダメ。そこだったらしいです。一度、ダメになるとBDレコーダ側で再設定する必要があるらしい。

終わりと思ったら、JCSAT4は良いんだが、JSSAT3 が入らない。くそ〜 もうネジ締めちゃったのに。でも、仕方ないので再調整。結果的には前よりもアンテナレベルはあがったので'良しと言うことで。

お椀の方にもヒビが入っていたので交換時だったと思います。設置説明書には「テープまくな」とある。まぁ、シロートだからな〜

Skypeでテレビの画面を写して屋上でiPhoneで見る方式ですが、最近のSkypeは自動着信あるのね。昔の自動着信AppleScriptは動かなくなってました。2012の時には無線だとだめで携帯回線でやった記憶がありますが、無線も11nになって少しは入るようになったみたい。明かり窓のところからWifiの電波が屋上に漏れてるみたいだな。

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に対応してないっぽい。

学生部屋のクーラーは今週末に治るらしいので、それまで、もう少しいじろうかと思ってます。

Monday, 16 July 2018

1日休み

オープンキャンパスも終わったので、日曜日はお休みしてました。って、それが普通か。

いや、まだ、OS9 と格闘してたんだけど。主にダメなアセンブラをダメに修正したツケを払ってます。あと、もう少しかな。

Friday, 13 July 2018

明日はオープンキャンパス

まぁ、例年のことなので。来る学生も、

  「先生が行けといったので」

的なところがあり、いる学生に聞いても、

  「自分はいきませんでした」

とかなので、まぁ、そんなようなイベントらしいです。それよりも、

  学科のWebがちゃんとしているかどうか

の方が大きい気もする。

まぁ、学生たちが大学生活を楽しんでいる様子が伝わればいいかな。