研究室のクーラーも治りました
隙間ケーブルも配線しました
ついでにウルトラマンタイマーのブザーの磁石が外れていたのも治しました (この間、落とした)
まだ少し仕事はあるが、8/10 ぐらいから二週間は東京にいるようです
その後は、OSの補講かなんかをやってるかも知れません
いや、なんか暑いです
Tuesday, 31 July 2018
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
まぁ、続きをやるかどうかは謎だな。
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
Friday, 27 July 2018
シス管打ち上げ
まだ、試験期間中なんだけどいいのか?
学科Webは妙にactiveな1年次のおかげで更新されたんですが、いろいろ問題が。特に、
英語のページどうした
なんか、クリスティーナとかと一緒に頑張ってた時期から後、放置だったらしく...
まぁ、なんとかしまししょう。
学科Webは妙にactiveな1年次のおかげで更新されたんですが、いろいろ問題が。特に、
英語のページどうした
なんか、クリスティーナとかと一緒に頑張ってた時期から後、放置だったらしく...
まぁ、なんとかしまししょう。
Thursday, 26 July 2018
ハッカソン〜
一回だけ参加したことあります。このscript がその結果だな。mh から command line でfacebook に投稿すると言う
自分に取ってはすっばらしく便利なツール
です。そういえば、この前、動かなくなった時には助けてくれてありがとうございました。Token の有効期限とかなかなか見えなくて。
まぁ、でも、
基本、もくもくとプログラミングする
イベントなわけですよ。差し入れとかあったりしますが。
自分的には「ねぇ、ねぇ、どんな調子?」みたいに聞いて廻るのも好きなんですが、なかなかね〜
と、いいながら、今月のos9 level 2も、ハッカソンみたいなものだったよな。
学生と一緒にやる時には65inch displayを使ってますが、最近、目の調子がそんなに良いわけじゃないからなぁ。その65inch TVも
なんか、一本黒い縦線が...
えぇ。まぁ、実害ないから当分我慢するか。
自分に取ってはすっばらしく便利なツール
です。そういえば、この前、動かなくなった時には助けてくれてありがとうございました。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年代後半だったので、その辺とかが面白いんじゃないかとも思いますが...
まぁ、そのうち入ってみよう。
いまどき、50's ですかぁ? ってことはターゲットは70代? アメリカ人の50'sへのあこがれに共感できていたものって、Back to the future とか? エルビスとか好きな世代がいるのは確かだけど。
もちろん,僕も1950は知らない。いや、ぎりぎり生まれてはいたんだけど。でも日本の50/60年代って豊かな時代ってのとは違うからなぁ。貧乏で煙草臭い時代ね。
日本のバブルって80年代後半だったので、その辺とかが面白いんじゃないかとも思いますが...
まぁ、そのうち入ってみよう。
Monday, 23 July 2018
隙間を通す奴
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
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 ぐらいか。
学生部屋の冷房修理の日だったけど、来てくれたのかな。いや、この台風で4Fのビルのベランダの作業はいやだが。
とか言ってたら、家のネットが繋がらない。
モデムのランプが全滅
何もしてないのに〜 *何もしてないのに*〜 いきなり〜
で、台風の中、沖縄ケーブルのサービスの人を読んだのですが...
ACアダプタが逝ってます
だったようです。まぁ、家の中をあら探しすれば替わりのACアダプタぐらいあったような気もするが、ここはサービスに頼むところでしょう。
os9 level2 も仮想RBF、だいたい動きました。あと残ってるのは clock ぐらいか。
Thursday, 19 July 2018
Software Update
うっとうしい〜 ダウンロードして、設定して、その後で、
切り替えますか?
と聞いてくるものなんじゃないのかなあ。昔と違って、ストレージ容量とかメモリ容量とかたくさんあるわけだし。
でも、OS Xでも、
くそ遅くなった
と思ったら、
mdほげが動作中
なんてのがあるからな〜 計算機、速くなったようで、ぜんぜん速くなってない。しかも、
最近、PCは絶賛値上げ中
な感じだし。MBPとかiMac とか気軽に買えない感じ。昔が、バブルだっただけだけど。超円高の頃のMBP安い〜って感じはもうないなぁ。
切り替えますか?
と聞いてくるものなんじゃないのかなあ。昔と違って、ストレージ容量とかメモリ容量とかたくさんあるわけだし。
でも、OS Xでも、
くそ遅くなった
と思ったら、
mdほげが動作中
なんてのがあるからな〜 計算機、速くなったようで、ぜんぜん速くなってない。しかも、
最近、PCは絶賛値上げ中
な感じだし。MBPとかiMac とか気軽に買えない感じ。昔が、バブルだっただけだけど。超円高の頃のMBP安い〜って感じはもうないなぁ。
Wednesday, 18 July 2018
スカパー修理完了
歳食って早く起きるようになったので... 「朝の涼しいうちに治そう」って、沖縄は朝も大して涼しくはないんですけどね。日差しが楽。
なんだが、ぜんぜん、動かない。なんか、ちらっと入ることがある。線外した時のような気がする。が、お休みにして夕方から再開。真っ昼間にやると日差しが危ない。結局、
サッシからの引込線がやられてるらしい
そこかぁ。外して調整するとピクと来た〜 ここまで来れば。で、引込線を繋げてみるとやっぱりダメ。そこだったらしいです。一度、ダメになるとBDレコーダ側で再設定する必要があるらしい。
終わりと思ったら、JCSAT4は良いんだが、JSSAT3 が入らない。くそ〜 もうネジ締めちゃったのに。でも、仕方ないので再調整。結果的には前よりもアンテナレベルはあがったので'良しと言うことで。
お椀の方にもヒビが入っていたので交換時だったと思います。設置説明書には「テープまくな」とある。まぁ、シロートだからな〜
Skypeでテレビの画面を写して屋上でiPhoneで見る方式ですが、最近のSkypeは自動着信あるのね。昔の自動着信AppleScriptは動かなくなってました。2012の時には無線だとだめで携帯回線でやった記憶がありますが、無線も11nになって少しは入るようになったみたい。明かり窓のところからWifiの電波が屋上に漏れてるみたいだな。
なんだが、ぜんぜん、動かない。なんか、ちらっと入ることがある。線外した時のような気がする。が、お休みにして夕方から再開。真っ昼間にやると日差しが危ない。結局、
サッシからの引込線がやられてるらしい
そこかぁ。外して調整するとピクと来た〜 ここまで来れば。で、引込線を繋げてみるとやっぱりダメ。そこだったらしいです。一度、ダメになると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に対応してないっぽい。
学生部屋のクーラーは今週末に治るらしいので、それまで、もう少しいじろうかと思ってます。
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 と格闘してたんだけど。主にダメなアセンブラをダメに修正したツケを払ってます。あと、もう少しかな。
いや、まだ、OS9 と格闘してたんだけど。主にダメなアセンブラをダメに修正したツケを払ってます。あと、もう少しかな。
Friday, 13 July 2018
明日はオープンキャンパス
まぁ、例年のことなので。来る学生も、
「先生が行けといったので」
的なところがあり、いる学生に聞いても、
「自分はいきませんでした」
とかなので、まぁ、そんなようなイベントらしいです。それよりも、
学科のWebがちゃんとしているかどうか
の方が大きい気もする。
まぁ、学生たちが大学生活を楽しんでいる様子が伝わればいいかな。
「先生が行けといったので」
的なところがあり、いる学生に聞いても、
「自分はいきませんでした」
とかなので、まぁ、そんなようなイベントらしいです。それよりも、
学科の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:
何にも動かない状態に...
アセンブラの処理のまずさとかいろいろ直すんだが、どうにもこうにも動かない。まぁ、
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
Tuesday, 10 July 2018
台風8号(まりあ)
暴風圏には入らなかったのでバスは運行中。ってことは授業もあるということで。
結構、しっかりした台風でビル周辺だと風に向かって歩けないくらい
でした。局所的には風速20mは出ていたんじゃなかろうか。
アンテナは届いたので、また、あれをやらないといかん。もっとも、アンテナ不良と決まったわけでもないんですけどね。ケーブルな可能性もまだある。
結構、しっかりした台風でビル周辺だと風に向かって歩けないくらい
でした。局所的には風速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 でも似たようなことはやったから。まぁ、なんとか。
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才だから、超おじいちゃんで、何が悪いとかってわけでもなく、全体的にやせてたからなぁ。糖尿病とか便秘とか肝臓とかいろいろあった割には、いじきたなさだけは最後までという感じでした。
紅茶の牛乳を狙って、目を離した隙に食卓に飛びのってミルクピッチャーに顔を突っ込むってのが得意技だったみたいです。
無駄に頭の良い猫で、キャットタワーから落ちた後はキャットタワーには登らなくなってたりとか。沖縄と東京も何回か往復したり。お医者さんにいくとまな板の鯉で、超おとなしく、看護婦さんには受けが良かったらしいです。
返ってくると出迎えて「早く、カリカリでないものを出せ」というそんな猫でした。長年ありがとう。
小太郎の方は順調にデブになってるみたいです。
金曜日の朝に「今日は食欲ないみたい」とか言ってたら、夕方には、そのいつものカーテンの裏で冷たくなってました。17才だから、超おじいちゃんで、何が悪いとかってわけでもなく、全体的にやせてたからなぁ。糖尿病とか便秘とか肝臓とかいろいろあった割には、いじきたなさだけは最後までという感じでした。
紅茶の牛乳を狙って、目を離した隙に食卓に飛びのってミルクピッチャーに顔を突っ込むってのが得意技だったみたいです。
無駄に頭の良い猫で、キャットタワーから落ちた後はキャットタワーには登らなくなってたりとか。沖縄と東京も何回か往復したり。お医者さんにいくとまな板の鯉で、超おとなしく、看護婦さんには受けが良かったらしいです。
返ってくると出迎えて「早く、カリカリでないものを出せ」というそんな猫でした。長年ありがとう。
小太郎の方は順調にデブになってるみたいです。
Friday, 6 July 2018
ハリーズ
久しぶりに学生たちと、ハリーズ。
Take out にする前は、だいたいお店で食べていたんですけどね。
今回は、どこからか指令が下ったらしく、学生たちと一緒に行くことに。
激辛が前よりも辛くなったと言う評判です。そうかな?
15年前に比べると、だいぶ値上げされた感じだけど、日本の飲食店は安すぎるので、これぐらいがちょうど良いと思います。
https://www.instagram.com/hallyscafe5232/
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 でも十分便利と言うのも発見でしたけど。
交換しました
メッセージがついて戻ってきました。偉い! 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
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
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
Subscribe to:
Posts (Atom)