Tuesday 31 July 2018

前期の授業は終了

研究室のクーラーも治りました

隙間ケーブルも配線しました

ついでにウルトラマンタイマーのブザーの磁石が外れていたのも治しました (この間、落とした)

まだ少し仕事はあるが、8/10 ぐらいから二週間は東京にいるようです

その後は、OSの補講かなんかをやってるかも知れません

いや、なんか暑いです

Monday 30 July 2018

Floppy disk のsalvage

なんか、昔作った汎用の232C cable を研究室で発掘したので、

  PC9801 で昔の8inch floppy 読んでみるか!

ってことで立ち上げたんですが...

  MSDOS 3.3 が立ち上がる

そういえば、ROM baseな MSDOSが付いてる時代だったっけ。

でも、それではそんなにできることはないので、N88 Basic な5inch floppyがあるので、そっちから。ネット上のリファレンスを見ると、

  D$=DSKI$(3,1,1,1)

う、懐い。なのだが、

  アクセスはするが読めません〜

その辺にあった2DDな8inchだと読める。128byte/sectorな1Sは読めんのか。そうか。さらにググってみると、

  読めない時には、disk bios を使う

え、8086のアセンブラってこと? いや、まぁ、書きまくっていた時期はありましたけど。Basic からpokeは嫌だな。

そういえば、MSDOSのdebugからアセンブルできるんじゃなかったっけ!? と思いましたが、

  ROMなMSDOSにはdebug commandはありませんでした

くそ〜 まぁ、でも大したものではなく、int 1bh を読み出せば良いだけらしいです。それを読み出す basic のusr関数を書けば良いだけだな。おそらく20byteくらい。間違えると basic が飛びますが。

http://island.geocities.jp/cklouch/column/pc98bas/bios/disk.htm

まぁ、続きをやるかどうかは謎だな。

Sunday 29 July 2018

今の季節のingress

昼間は暑いから夕方からと考えたんですが、

  日差しはましだが、汗はかく

まあ、そうだよなぁ。スーツで廻るってのもやってはしまうんですが、どろどろになっちゃうのがな。一度戻ってシャワー浴びてから大学ってのが良さそう。そうしろよ。

この前買ったバッテリーは予想通りケーブルが逝かれました。まぁ、そんなもんだよなぁ。

取りあえず、予定通り、普天間の反対側のキーは取れたのでいいか。

Saturday 28 July 2018

Ingress 札幌 Anomaly

まあ、いかなかったんですけどね。琉大でリチャージ会があるので、そちらに参加しました。

戦況に貢献できたとは思えないですが、100万ぐらいはリチャージしました。あまりLPC貯めれなかったので、だいぶめんぐんでもらいました。ありがとうございました。

だいたい、いつもの通りだったのですが、負けは構造的な問題だとも思うのでしかたないかなぁ。青の参加者が劇的に増えるとかでもあれば。

Friday 27 July 2018

シス管打ち上げ

まだ、試験期間中なんだけどいいのか?

学科Webは妙にactiveな1年次のおかげで更新されたんですが、いろいろ問題が。特に、

  英語のページどうした

なんか、クリスティーナとかと一緒に頑張ってた時期から後、放置だったらしく...

まぁ、なんとかしまししょう。

Thursday 26 July 2018

ハッカソン〜

一回だけ参加したことあります。このscript がその結果だな。mh から command line でfacebook に投稿すると言う

  自分に取ってはすっばらしく便利なツール

です。そういえば、この前、動かなくなった時には助けてくれてありがとうございました。Token の有効期限とかなかなか見えなくて。

まぁ、でも、

  基本、もくもくとプログラミングする

イベントなわけですよ。差し入れとかあったりしますが。

自分的には「ねぇ、ねぇ、どんな調子?」みたいに聞いて廻るのも好きなんですが、なかなかね〜

と、いいながら、今月のos9 level 2も、ハッカソンみたいなものだったよな。

学生と一緒にやる時には65inch displayを使ってますが、最近、目の調子がそんなに良いわけじゃないからなぁ。その65inch TVも

  なんか、一本黒い縦線が...

えぇ。まぁ、実害ないから当分我慢するか。

Wednesday 25 July 2018

50's cafe

なんか嘉数に open してました。11時から21時まで開いてるらしいです。(その場所、微妙なんだけど。割とだめなお店が続いたので...)

いまどき、50's ですかぁ? ってことはターゲットは70代? アメリカ人の50'sへのあこがれに共感できていたものって、Back to the future とか? エルビスとか好きな世代がいるのは確かだけど。

もちろん,僕も1950は知らない。いや、ぎりぎり生まれてはいたんだけど。でも日本の50/60年代って豊かな時代ってのとは違うからなぁ。貧乏で煙草臭い時代ね。

日本のバブルって80年代後半だったので、その辺とかが面白いんじゃないかとも思いますが...

まぁ、そのうち入ってみよう。

Monday 23 July 2018

隙間を通す奴

結局、スカパーが逝かれたのは、サッシの隙間を通すアンテナケーブルアダプタみたいな奴だったんですが、

  台風があるから、やっぱり、あった方が良い

ということで、 ベスト電気に。でも、

  4千円?

ちょっと高くない? Amazon で探すと2千円らしい。送料考えると同じようなものか。いや、そういう値段設定なのかな。

数年すると、また壊れるでしょうけど。

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がちゃんとしているかどうか

の方が大きい気もする。

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

Thursday 12 July 2018

os9 level 2 done!

なんか、月曜日に Shell prompt 見たので「楽勝!」と思ったんですが、その後、

  何にも動かない状態に...

アセンブラの処理のまずさとかいろいろ直すんだが、どうにもこうにも動かない。まぁ、

  OSの最初からトレースしてチェックしていく

しかないんですけどね。まぁ、それが勉強になるので酔いんですけど。

  0. osp1 の起動、vector の設定
  1. RAMのチェック
  2. 直後にあるとされるROM上の os9 module の登録(F$Modul)
  3. boot module の実行
  4. os9p2,p3,p4 の実行
  5. SysGo の fork (Unixのinit相当、init module はメモリ構成用)
  6. F$NProc (exit に相当するのかな?) で、Sysgoに移行
  7. Sysgo が /Term と /D0 を開けて
  8. Shell を fork

という手順らしいです。

5 の fork はユーザモードで実行されるのだが、そこででたらめなアドレスに戻ってしまう。で、わかったのだが、

  0xa000-0xcffff までを一時的にMMUでpage切り替えして stack のcopyとかをやってる
  が、そこに、まさに今動いているTaskのsystem call stack がある

だめじゃん。で、しばらく寝てたらわかったんですが、

  そこは、どうも、Boot 時にmoduleをloadしているべきところらしい

つまり、控え目にBoot時のメモリを要求したのが間違いだったらしい。でも、

  0xa000を越えて要求すると死ぬ

つまり、boot module の大きさが4kとはっきり決まっているらしいです。そういうコードがos9p1にハードコードされてる。つまり、

月曜日に「Boot時のメモリを要求を2kbyteにけちった」から、まったく動かなくなったということだったらしいです。あっそ。そこに気づいたら、即座に動きました。

ディスクが読めないこと自体は、バッファをMMUで変換するのを忘れたからでした。これは、本来なら月曜日に動いているべきものだったな。

まぁ、そんなもの。

    https://github.com/shinji-kono/sbc09/tree/os9lv2

まだ、clock 接続してないけど、もういいかな。

  % sh run29.sh
   OS-9 LEVEL TWO VR. 03.00.02
     COPYRIGHT 1988 BY
    MICROWARE SYSTEMS CORP.
    LICENSED TO TANDY CORP.
    ALL RIGHTS RESERVED.


  Shell

  OS9:/d1/cmds/basic09

        BASIC09
  COPYRIGHT 1980 BY MOTOROLA INC.
   AND MICROWARE SYSTEMS CORP.
    REPRODUCED UNDER LICENSE
     TO DRAGON DATA LTD.
    ALL RIGHTS RESERVED.

  Basic09
  Ready
  B:

Wednesday 11 July 2018

OS9 level 2

まぁ、大方の予想通り、はまっております。

  たの〜し〜

アンテナは昼間の暑い時にやる気はしないが、酔っ払ってる時には危ないからなぁ。

Tuesday 10 July 2018

台風8号(まりあ)

暴風圏には入らなかったのでバスは運行中。ってことは授業もあるということで。

  結構、しっかりした台風でビル周辺だと風に向かって歩けないくらい

でした。局所的には風速20mは出ていたんじゃなかろうか。

アンテナは届いたので、また、あれをやらないといかん。もっとも、アンテナ不良と決まったわけでもないんですけどね。ケーブルな可能性もまだある。

Monday 9 July 2018

OS9 level 2, lldb, gdb

OS9 Level 2 はMMUの実装もできて、Shellが起動するところまではいきました。が、

D1C5: 0D 06     TST     <$06
D1C7: F6 0C 07    LDB     $0C07
D1CA: 0F 0E     CLR     <$0E
D1CC: 07 18     ASR     <$18
D1CE: 16 07 30    LBRA    $D901
v09>c
OS-9 LEVEL TWO VR. 03.00.02
   COPYRIGHT 1988 BY
  MICROWARE SYSTEMS CORP.
  LICENSED TO TANDY CORP.
  ALL RIGHTS RESERVED.


Shell

OS9:

しかし、Diskにアクセスできない

  OS9:dir /d0
  Error #221

ぶう。Disk driver の初期化に来てないから、なんかで蹴られているんだろうな。Level 1は動いているのでいけそうなものなんですが。

SBC09 ってのをEmulatorに使っているんですが、ちょっとダメだったかも。アセンブラもエミュレータもバグが多くて。まぁ、動いたから良いんだけど。

で、こいつは signalを使って traceに入れるんですが...

  lldb が signal を食ってしまう

そういうの制御するのがありそうなものなんだけど。外からシグナル送ると少しなんとかなるみたいだが、まぁ、だめぽ。

あと、lldb が core を読んでくれない。

    (lldb) target create --arch=mips32-pc-linux "app_mips.elf" --core "core_mips"

こんな感じで triple を指定してやると良いらしいが、

  the specified architecture 'x86_64-apple-darwin17.6.0' is not compatible with 'x86_64-apple-macosx'

つまり、lldb がサポートしてるのは、darwin17.6.0 で、吐かれた core の方はmacosxなのでだめらしい。ググった感じではだめっぽいです。

そんなこんなで、

  じゃぁ、gdb 使うか

となったんですが、例の

  SIPで、code sign がどうとか

で、csrutil disable とか、いろいろやったんですが、

  gdb 8.1 は、High Sierra ではバグで動かないから、8.0.1 を使え

で、しかも、code signしてもダメで、8.0.1 を

  sudo gdb

すると動くと言うことがわかりました。さすが、OS X 、SIP で超安全。

  root で gdb でデバッグ

とか、超安心で素晴らしいです。

OS9 level 2 の disk は RBF からオープンに来るらしいので、少し苦労しそうだな。見当付かない感じ。os9 I$Open から trace かな。Leve1 でも似たようなことはやったから。まぁ、なんとか。

Sunday 8 July 2018

カリフ

享年17才だそうです。数日前には食卓に飛びのって、塩ピーナッツのん瓶をひっくり返そうとかやってたんだけどな。

金曜日の朝に「今日は食欲ないみたい」とか言ってたら、夕方には、そのいつものカーテンの裏で冷たくなってました。17才だから、超おじいちゃんで、何が悪いとかってわけでもなく、全体的にやせてたからなぁ。糖尿病とか便秘とか肝臓とかいろいろあった割には、いじきたなさだけは最後までという感じでした。

紅茶の牛乳を狙って、目を離した隙に食卓に飛びのってミルクピッチャーに顔を突っ込むってのが得意技だったみたいです。

無駄に頭の良い猫で、キャットタワーから落ちた後はキャットタワーには登らなくなってたりとか。沖縄と東京も何回か往復したり。お医者さんにいくとまな板の鯉で、超おとなしく、看護婦さんには受けが良かったらしいです。

返ってくると出迎えて「早く、カリカリでないものを出せ」というそんな猫でした。長年ありがとう。

小太郎の方は順調にデブになってるみたいです。

Friday 6 July 2018

ハリーズ

久しぶりに学生たちと、ハリーズ。

Take out にする前は、だいたいお店で食べていたんですけどね。

今回は、どこからか指令が下ったらしく、学生たちと一緒に行くことに。

激辛が前よりも辛くなったと言う評判です。そうかな?

15年前に比べると、だいぶ値上げされた感じだけど、日本の飲食店は安すぎるので、これぐらいがちょうど良いと思います。

https://www.instagram.com/hallyscafe5232/

Thursday 5 July 2018

スカパーのアンテナがやられたみたい

自分で設置したから、接続のところとか手抜きだからな〜 ショートとか言ってるので、接続部だろうとは思うんですが。

また、台風が来るらしいので、なおすのは少しさぼろうかな。

Wednesday 4 July 2018

ハンソロ

奥様と別々に観てきました。

  面白い映画は一人で観る
  それほど面白くない映画は観ない

だっけか。

チューバッカ、いい奴だな〜 ヒロインも、ああいうの良いね。

マーベル観るのとあまり変わらない気もするけど、マーベルはもういいや感。

Tuesday 3 July 2018

MBP修理完了

どうせ、何もしてくれないだろうと思ってたら...

  交換しました

メッセージがついて戻ってきました。偉い! Applecare ギリギリだったので交換してくれたのはうれしいです。最近、Apple のサポートはがっかりなことが多かったのですが、これは素晴らしいです。症状確認しましたとあったが、再現しないと思っていたんだがな〜

システムもそのままだったので「本当に交換されたの?」的なことは妻に言われましたが、良く見ると液晶の端のゴムっぽい部分が新しいみたい。

まぁ、2011なMacBook Air でも十分便利と言うのも発見でしたけど。

Monday 2 July 2018

OS9の続き

MBPは即座に送り返されたようなので、やっぱり、なにもしてくれなかった感じ。まぁ、再現しない症状に何かする義理もないものな。

OS9は結局、disk driverまで書いてしまいました。残りはMMUとlevel 2だが、Tandy Cocoに合わせれば良いのだが、まぁ、別にいいかな。そのうち気が向けば。

HDD emulation 自体は簡単だけど、OS9側と辻褄合わせるのがな。久しぶりに6809書いたので、結構間違えた。

結局、自分で書いたドライバまでOS9 kernelをtraceする羽目になったので、だいぶ中が読めました。module link してメモリ用意して初期化ルーチン呼び出すだけだけど。moduleを認識させるのを乗り切れば。

結局、家から持ってきたFDとかROM dumpは使わずに動かしてしまった。そんなもの。

このdisk imageに落ちてるBasic09はなぜが動かない。メモリが足りないらしいです。

  % ./v09 -rom os9/os9d.rom -l 0xc000 -0 os9/disk1.dsk
   OS-9 LEVEL ONE  VERSION 1.2
  Shell

  OS9:dir /d0

   Directory of /d0 00:00:00
  OS9Boot      CMDS      SYS
  DEFS        startup     NITROS9

  OS9:/d0/cmds/basic09
  ERROR #207

  OS9:/d0/cmds/mfree

   Address pages
  --------- -----
   B00-5CFF  82
  B900-B9FF  1

  Total pages free = 83
  Graphics Memory Not Allocated

  OS9:/d0/cmds/free /d0

  "NitrOS-9/6309 Level 1" created on: 2018/04/07
  Capacity: 2,880 sectors (1-sector clusters)
  1,018 free sectors, largest block 1,018 sectors

Sunday 1 July 2018

OS9

ROMにmoduleそのまま載せて shell を起動して mdir するところまで動きました。あとやるとすると、

  Basic09 動かす
  Timer emulation を入れてconcurentに動かす
  Floppy Disk読んで仮想なドライバ書いて動かす
  MMUまで書いて level2 まで動かす

あたりでしょうけど、やらないかも知れないです。

  A09 に OS9 用のコマンドを入れた (mod/emod/ifp1/os9)
  mod はCRCを生成するように
  module をファイルにまとめて配置する makerom プログラム

まで書いて動かしたんですが、

  EmulatorのV09は有無を言わせずTimer割り込みする作り

実行途中でいきなり暴走してて何かと思ったよ。 で、まず、それを切ることから。でも、ぜんぜん動かないので、

  V09 に disassemble/trace/dump/break

などを結局全部実装してしまったので、80年代の自作PCのmonitorでプログラムしてる気分を満喫しました。

その辺に落ちてた os9 のmoduleを表示するプログラムが結構ひどくて、それで通った大丈夫ってのは全部間違いで、OS9 側で蹴られてた。if (crc[0]=crc1) とか書いてあって、0でなければok表示するとかひどすぎる...

OS9 のアセンブラのmod は、ORGを強制的に0に設定するってのを見落としてて driver entry へのオフセットがずれていたってのが、最後のバグだったかな。

OS9のkernelでは hash とか使わずに固定なmodule テーブルを頭から全部コードが。マイコン時代はそれが合理的だったんだよな。

CRC生成自体はOS9 kernelに含まれてないのか。当時、その辺りがネックだったが、今は拾ってこれるからね。CRCチェックを切って実装するのが楽だったんじゃないかな。

  % ./v09 -l 0xd000 -rom os9/os9.rom -nt
  x=0000 y=0000 u=0000 s=0000 a=00 b=00 cc=00 pc=F876: 8E 00 20    LDX     #$0020
  v09>?
   s [count] one step trace
   n     step over
   f     finish this call (until stack pop)
   b [adr]  set break point
   l     break point list
   d [n]   delte break point list
   c [count] continue;
   x [adr]  dump
   xi [adr]  disassemble
   L file  start log to file
   S file  set input file
   X exit
   q exit
   U file  upload from srecord file
   D file  download to srecord file
   R do reset
   h,? print this
  v09>n
   OS-9 LEVEL ONE  VERSION 1.2
  COPYRIGHT 1980 BY MOTOROLA INC.
   AND MICROWARE SYSTEMS CORP.
    REPRODUCED UNDER LICENSE
     TO DRAGON DATA LTD.
     ALL RIGHTS RESERVED.


  Shell

  OS9:mdir

   Module directory at 00:00:00
  Shell    Init    Mdir    SysGo    IOMan
  SCF     TERM    PTY     OS9p2    OS9


  OS9:x=cf80 y=0222 u=07b2 s=07b0 a=f4 b=f0 cc=f8 pc=FA96: E7 C4     STB     ,U
  v09>xi
  FA96: E7 C4     STB     ,U
  FA98: 84 0F     ANDA    #$0F
  FA9A: AA C4     ORA     ,U
  FA9C: A7 C4     STA     ,U
  FA9E: 39       RTS 
  FA9F: 53       COMB
  FAA0: C6 D0     LDB     #$D0