8: 2009-11-22 (日) 16:56:03 hideyosi |
9: 2009-11-22 (日) 22:09:37 hideyosi |
| COLOR(red){試作中・・・} | | COLOR(red){試作中・・・} |
| ---- | | ---- |
- | *OSASK-HBとは? [#p5f012b7] | + | *第二世代OSASKとは? [#p5f012b7] |
| | | |
| | | |
- | ものすごく簡単に言えば、ほぼゼロから新しくOSASKを興しなおす。OSASKの作り直しバージョンだと思ってください。''第二世代OSASK''。そのコードネームです。 | + | ものすごく簡単に言えば、ほぼゼロから新しく興しなおす。第一世代OSASKの作り直しバージョンだと思ってください。 |
| + | -第一世代OSASKとは? |
| + | --2000年5月頃から川合秀実氏が発表を続けていた独自OS。2004年12月発表のVer4.7を最後に休眠。 |
| + | |
| + | COLOR(blue){''※''以下、上記第一世代OSASKを第一世代、第二世代OSASKを単に第二世代と呼ぶ} |
| | | |
| **なぜ作り直すのか [#t525a0ac] | | **なぜ作り直すのか [#t525a0ac] |
| | | |
- | -ことの経緯は旧OSASK Ver.4.8(試作。一般公開はなし)に手を入れていたあたり | + | -ことの経緯は第一世代の Ver.4.8(試作。一般公開はなし)に手を入れていたあたり |
- | -この頃はKHBIOS、はりぼてOSを作っていた。特にはりぼてOSは書籍用のもの。かなり時間を割いて専念していたらしい。 | + | -この頃はKHBIOS、はりぼてOSが作くられていた。特にはりぼてOSは書籍用のもの。かなり時間を割いて専念していたらしい。 |
| -川合氏曰く、これらを作るために猛烈に新しい技術等を勉強していたとのこと。 | | -川合氏曰く、これらを作るために猛烈に新しい技術等を勉強していたとのこと。 |
- | -さてはりぼても無事完成。ひさしぶりに旧OSASKのソースを眺めてみて・・・げー!これじゃダメだ!って思ったんだそうです。(勉強したりいろんなものを作っていく上で川合氏自身のスキルや考え方が大きく変化したらしい) | + | -さてはりぼても無事完成。ひさしぶりに第一世代のソースを眺めてみて・・・げー!これじゃダメだ!って思ったんだそうです。(勉強したりいろんなものを作っていく上で川合氏自身のスキルや考え方が大きく変化したらしい) |
- | -・・・で! それら新しい技術で試しにいくつかのAPIやツールを試作してみると、旧OSASKよりずっといい感じに仕上がってしまったと。 | + | -・・・で! それら新しい技術で試しにいくつかのAPIやツールを試作してみると、第一世代よりずっといい感じに仕上がってしまったと。 |
| -「こりゃばかばかしい。これで最初から作っちゃったほうがいいじゃないか!」と。 | | -「こりゃばかばかしい。これで最初から作っちゃったほうがいいじゃないか!」と。 |
| -で、手元にある改良が容易なはりぼてOSにAPIをどんどん乗せていくと・・・いけるいける!と。 | | -で、手元にある改良が容易なはりぼてOSにAPIをどんどん乗せていくと・・・いけるいける!と。 |
- | -そんなわけで、はりぼてを土台にした''OSASK-HB''が形になってきた。こういう流れだそうです。 | + | -そんなわけで、はりぼてを土台にした第二世代の試作が形になってきた。こういう流れだそうです。 |
| -COLOR(blue){もっとも改良しすぎてもうはりぼては見る影もなくなっちゃっているそうですがw} | | -COLOR(blue){もっとも改良しすぎてもうはりぼては見る影もなくなっちゃっているそうですがw} |
| | | |
| | | |
| | | |
- | 旧OSASKを建て増してゆくのに限界が出てきた。ヘタに手直しするより新しい技術・新しいツール・新しい設計で作り直したほうが早く良いものができるかもしれない。こうした考えから始動したものです。 | + | 第一世代を建て増してゆくのに限界が出てきた。ヘタに手直しするより新しい技術・新しいツール・新しい設計で作り直したほうが早く良いものができるかもしれない。こうした考えから始動したものです。 |
| | | |
| | | |
- | COLOR(green){''※''ただし。この第二世代OSASKは旧OSASKのように単独で動作するOSという形にはなりえていません。誤解を恐れずに言えば、新OSASKへのたたき台・部分試作的な色合いが強いです。単独で動く新OSASKは、これから着手が予定されている第三世代OSASKにてとなるようです} | + | COLOR(green){''※''ただし。この第二世代は第一世代のように単独で動作するOSという形にはなりえていません。誤解を恐れずに言えば、第三世代へのたたき台・部分試作的な色合いが強いです。第二世代の技術やノウハウを元に第一世代のように単独で動き、起動可能な第三世代へに着手が予定されています。} |
| | | |
| | | |
| | | |
| *作り直しによる成果 [#p1a57760] | | *作り直しによる成果 [#p1a57760] |
- | せっかく動いていた旧OSASKを事実上凍結してまで行った作り直し。その成果は??? | + | せっかく動いていた第一世代を事実上凍結してまで行った作り直し。その成果は??? |
| | | |
| **アプリのサイズ: [#l2770a83] | | **アプリのサイズ: [#l2770a83] |
| | | |
| --コンソール画面に「hello, world\n」と表示するアプリを、わずか16バイト! | | --コンソール画面に「hello, world\n」と表示するアプリを、わずか16バイト! |
- | ---アプリの先頭の2バイトは誤認防止用のシグネチャが入っており、DOSの.COMファイルのようなヘッダのないフォーマットではありません(このシグネチャは全てのOSASK-HBアプリに共通して含まれます)。 | + | ---アプリの先頭の2バイトは誤認防止用のシグネチャが入っており、DOSの.COMファイルのようなヘッダのないフォーマットではありません(このシグネチャは全ての第二世代用・第三世代用のアプリに共通して含まれます)。 |
| ---「hello, world\n」はそれだけで13バイトあります。アプリのフォーマットの効率の高さ(無駄の少なさ)が察せられるのではないでしょうか? | | ---「hello, world\n」はそれだけで13バイトあります。アプリのフォーマットの効率の高さ(無駄の少なさ)が察せられるのではないでしょうか? |
| ---「hello, world\n」に特化したAPIを持つなどの卑怯なことはしないで実現しています | | ---「hello, world\n」に特化したAPIを持つなどの卑怯なことはしないで実現しています |
| ---(参考:DOSの.COMファイルで書くと22バイトになります)。 | | ---(参考:DOSの.COMファイルで書くと22バイトになります)。 |
| | | |
- | --コンソールに「 !"#$%&'() ... uvwxyz{|}~」と、キャラクタコード0x20から0x7eを出力するプログラムを作ると、OSASK-HB用はたった13バイトになります。 | + | --コンソールに「 !"#$%&'() ... uvwxyz{|}~」と、キャラクタコード0x20から0x7eを出力するプログラムを作ると、第二世代用はたった13バイトになります。 |
| ---あったりまえですがこれは16bitアプリではなくもちろん32bitのネイティブアプリです。 | | ---あったりまえですがこれは16bitアプリではなくもちろん32bitのネイティブアプリです。 |
| ---(参考:DOSの.COMファイルで書くと17バイトになります)。 | | ---(参考:DOSの.COMファイルで書くと17バイトになります)。 |
| | | |
- | --OSASK-HBのアプリにはcpy.g01というものがあり、これはファイルのコピーや連結を行うことができるアプリです。このアプリは引数無しで起動すると、usageが出力されます。 | + | --第二世代用のアプリにはcpy.g01というものがあり、これはファイルのコピーや連結を行うことができるアプリです。このアプリは引数無しで起動すると、usageが出力されます。 |
| | | |
| >> usage>cpy.g01 [in:]input-file [[in:]input-file]... out:output-file | | >> usage>cpy.g01 [in:]input-file [[in:]input-file]... out:output-file |
| | | |
- | ---これの文字数を数えると、66文字あります。しかしながらこのcpy.g01というファイルは45バイトしかありません。たったの45バイトでも、コピーや連結ができる上に、66バイトものusage出力が可能なのです。それがOSASK-HBの常識であり、x86の本当の能力なのです。 | + | ---これの文字数を数えると、66文字あります。しかしながらこのcpy.g01というファイルは45バイトしかありません。たったの45バイトでも、コピーや連結ができる上に、66バイトものusage出力が可能なのです。 |
| + | ---第一世代用のものでもとても小さいことがウリでしたが、第二世代はさらにその上を行きます。(そしてこれが、x86の本当の能力なのです。) |
| + | |
| + | -誤解がありそうなので書いておきますが、ただアプリを縮めるのではありません。こんな小さなサイズでもキチンと動作できるAPI。普通に作っても小さくなってしまうAPI。これが第二世代の能力です。 |
| | | |
- | 他のOSは機能密度の高いアプリを作りやすいAPIはどうあるべきかを考えていません。考えたつもりかもしれませんが、そんなのはOSASK-HBからすれば、考えていないに等しいのです。十分な汎用性や表現力を担保しつつ、かつ簡潔な表現を可能にするにはどうしたらいいのか、その答えがOSASK-HBのAPIにはつまっています。 | |
| | | |
| **アプリの互換性 [#vb864eb7] | | **アプリの互換性 [#vb864eb7] |
| | | |
- | OSASK-HBのアプリは他のOS上で実行可能!?? | + | 第二世代~のアプリは他のOS上で実行可能!?? |
| | | |
- | 旧OSASKアプリはQEMU等のエミュレータ無しではWindows上で実行することができませんでした(そらそーだw)。 | + | 第一世代のアプリはQEMU等のエミュレータ無しではWindows上で実行することができませんでした(そらそーだw)。 |
| | | |
- | しかしOSASK-HB用のアプリはのエミュレータを使わずに''efg01''と呼ばれる20KB程度のローダを使うだけで、Windows上での実行が可能です(efg01の大きさはバージョンabcdw014時のもの)。 | + | しかし第二世代用のアプリはのエミュレータを使わずに''efg01''と呼ばれる20KB程度のローダを使うだけで、Windows上での実行が可能です(efg01の大きさはバージョンabcdw014時のもの)。 |
| | | |
| -COLOR(Purple){efg01つーのが専用のエミュレータってところか?} | | -COLOR(Purple){efg01つーのが専用のエミュレータってところか?} |
| --まずは。圧倒的に小さい小さいってこと。QUME等はPC/ATが持つすべての機能をエミュレートしないといけません。機能・プログラムは複雑になり、速度も問題になってきます。efg01は本体がたったの20kbです。 | | --まずは。圧倒的に小さい小さいってこと。QUME等はPC/ATが持つすべての機能をエミュレートしないといけません。機能・プログラムは複雑になり、速度も問題になってきます。efg01は本体がたったの20kbです。 |
| | | |
- | 他の独自OS(旧OSASKを含む)~ | + | 他の独自OS(第一世代を含む) |
| ネイティブアプリ → 各種独自OS → QEMU → 実際のOS(Win・Linux・MacOSX等)→ 実機が動作 | | ネイティブアプリ → 各種独自OS → QEMU → 実際のOS(Win・Linux・MacOSX等)→ 実機が動作 |
| | | |
| ***efg01は既にLinux用・MonaOS用・MEG-OS用もある [#d5679f77] | | ***efg01は既にLinux用・MonaOS用・MEG-OS用もある [#d5679f77] |
| | | |
- | はりぼてOS用・旧OSASK用、その気になればTownsOS用やDOS汎用(DOS|Extender的なもの)もそう難しくないらしい。 | + | はりぼてOS用・第一世代用、その気になればTownsOS用やDOS汎用(DOS|Extender的なもの)も可能なはずです。 |
- | 基本的にx86用32bitOSであれば、ほとんど対応可能なはずです。 efg01の移植には多少の苦労が伴いますが、それさえできれば、OSASK-HB用のアプリは''再コンパイルしなくてもバイナリのまま''動いてしまうのです。それに苦労といってもたかが20KBのアプリです。それだけで全てのOSASK-HB用のアプリが使えるようになるのですから、安いものです。 | + | 基本的にx86用32bitOSであれば、ほとんど対応可能なはずです。 efg01の移植には多少の苦労が伴いますが、それさえできれば、第二世代用のアプリは''再コンパイルしなくてもバイナリのまま''動いてしまいます。それに苦労といってもたかが20KBのアプリです。それだけで全ての第二世代用のアプリが使えるようになります。 |
| | | |
- | OSASK-HB(のAPIを利用した)アプリは単に機能密度が高いというだけではなく、OS横断的な共通互換アプリしての資質まで備えているのです。 | + | 第二世代用(のAPIを利用した)アプリは単に機能密度が高いというだけではなく、OS横断的な共通互換アプリしての資質まで備えているのです。 |
| | | |
| -COLOR(purple){Javaでいいじゃんwww} | | -COLOR(purple){Javaでいいじゃんwww} |
| --Javaや.netというすばらしい先人がいます。これらはx86という壁も越えているので、互換性に関しては格が違います。 | | --Javaや.netというすばらしい先人がいます。これらはx86という壁も越えているので、互換性に関しては格が違います。 |
| しかしその代償としてJavaや.netのランタイムは非常に大きく、waba等の軽量実装でさえ40KBを切ることは非常に難しいです。 | | しかしその代償としてJavaや.netのランタイムは非常に大きく、waba等の軽量実装でさえ40KBを切ることは非常に難しいです。 |
- | またOSASK-HBアプリはx86ネイティブなので、JIT等が不要で実行開始までのレイテンシもほとんどありません。そして多分Javaや.netでは.g01よりも小さく作ることはできないでしょう。・・・したがってOSASK-HBを「バイトコードを使わずにやったらどこまでいけるのか」の実験例としてみていただければと思います。 | + | また第二世代用のアプリはx86ネイティブなので、JIT等が不要で実行開始までのレイテンシもほとんどありません。そして多分Javaや.netでは.g01よりも小さく作ることはできないでしょう。・・・したがって第二世代を「バイトコードを使わずにやったらどこまでいけるのか」の実験例としてみていただければと思います。 |
| | | |
- | この「エミュレータなしで実行可能にする」を実現しようとすると、APIの設計の選択肢が減ります。そのため旧OSASKアプリでは実現できませんでしたし、他のOS用のアプリでもこのような特徴を挙げているものはほとんどないと思います。サイズの追求という面とは競合もしています。つまりこのバイナリ互換を捨てれば、アプリサイズはもっと小さくできたのです。・・・しかしこれは逆にとらえてほしいです。互換性まで盛り込みながらも、このサイズを達成できているのだ、と。 | + | この「エミュレータなしで実行可能にする」を実現しようとすると、APIの設計の選択肢が減ります。そのため第一世代用アプリでは実現できませんでしたし、他のOS用のアプリでもこのような特徴を挙げているものはほとんどないと思います。サイズの追求という面とは競合もしています。つまりこのバイナリ互換を捨てれば、アプリサイズはもっと小さくできたのです。・・・しかしこれは逆にとらえてほしいです。互換性まで盛り込みながらも、このサイズを達成できているのだ、と。 |
| | | |
| ***バイナリのまま互換を保てることで生まれる可能性 [#qa94293b] | | ***バイナリのまま互換を保てることで生まれる可能性 [#qa94293b] |
- | -当然ですが、「OSASK用」に作ったアプリを他のOSで動かそうとすると丸々移植・・・いやそれどころか事実上作り直しになるでしょう。 | + | -当然ですが、第一世代用に作ったアプリを他のOSで動かそうとすると丸々移植・・・いやそれどころか事実上作り直しになるでしょう。 |
| -せっかく苦労してアプリを作ってもOSASKでしか動かない。アプリを作ってくださる人のモチベーションを大きく下げる要因かもしれません | | -せっかく苦労してアプリを作ってもOSASKでしか動かない。アプリを作ってくださる人のモチベーションを大きく下げる要因かもしれません |
- | -しかしOSASK-HP用に作ったアプリはソース互換どころかefg01によってバイナリが直接動作します。つまり、「移植をする」という手間どころか概念が不要になるのです! | + | -しかし第二世代用に作ったアプリはソース互換どころかefg01によってバイナリが直接動作します。つまり、「移植をする」という手間どころか概念が不要になるのです! |
| | | |
| *実用性 [#z893df63] | | *実用性 [#z893df63] |
| | | |
| おっと。こう考える人もいるかもしれませんね。(現にまだまだAPIは不足しています) | | おっと。こう考える人もいるかもしれませんね。(現にまだまだAPIは不足しています) |
- | | |
| でもそう考えるのは早計ですよ。アナタが望むアプリはまだ作れないかもしれませんが、既に''十分実用''できるものが作られ、実際に動いています。 | | でもそう考えるのは早計ですよ。アナタが望むアプリはまだ作れないかもしれませんが、既に''十分実用''できるものが作られ、実際に動いています。 |
| | | |
| -例:nask | | -例:nask |
- | --OSASKや「はりぼてOS」の開発ツールの定番に、naskというアセンブラがあります。(naskについてはこちら) | + | --第一世代(OSASK)や「はりぼてOS」の開発ツールの定番に、naskというアセンブラがあります。(naskについてはこちら) |
| --naskはwin32版で27,648というサイズで、x86用アセンブラとしては世界最小をうたっています。このサイズは当時から「さすがだ」とたくさんの人に評価していただいています。 | | --naskはwin32版で27,648というサイズで、x86用アセンブラとしては世界最小をうたっています。このサイズは当時から「さすがだ」とたくさんの人に評価していただいています。 |
- | --このnaskはすでにOSASK-HB用(efg01で動く)に移植が完了していて、そのサイズは22,824です。つまり4,824バイトも小さくなっているのです。 | + | --このnaskはすでに第二世代用(efg01で動く)に移植が完了していて、そのサイズは22,824です。つまり4,824バイトも小さくなっているのです。 |
- | --naskは決して高機能とは呼べない(GAS等のモンスター級に比べればw)単機能アセンブラですが、現に旧OSASK・そのアプリ・はりぼてOSのコンパイルに実際に使用されています。そしてこの移植時にそれらの機能はなにも損なっていません。 | + | --naskは決して高機能とは呼べない(GAS等のモンスター級に比べればw)単機能アセンブラですが、現に第一世代(OSASK)・そのアプリ・はりぼてOSのコンパイルに実際に使用されています。そしてこの移植時にそれらの機能はなにも損なっていません。 |
| --先のefg01を持っていれば、この小さくなったnaskもWindows上で実行できますしLinux上でも動いています。(当然eft01さえ移植すれば、他のOS上でも動きます。) | | --先のefg01を持っていれば、この小さくなったnaskもWindows上で実行できますしLinux上でも動いています。(当然eft01さえ移植すれば、他のOS上でも動きます。) |
| --こんなに小さくなったのに・・・・ | | --こんなに小さくなったのに・・・・ |
| *問題点は? [#g7ceb1dd] | | *問題点は? [#g7ceb1dd] |
| -残念ながら現時点ではGUIまわりのAPIが装備されていません。 | | -残念ながら現時点ではGUIまわりのAPIが装備されていません。 |
- | -OSASK-HBのアプリケーションフォーマットやAPIは、残念ながら旧OSASKとは互換性のないものになっています(とはいえ、APIブリッジなどでサポート可能ではありますが)。 | + | -第二世代用のアプリケーションフォーマットやAPIは、残念ながら第一世代とは互換性のないものになっています(とはいえ、APIブリッジなどでサポート可能ではありますが)。 |
| -ドキュメントやサンプル等、作ってみたい人へのフォローが貧弱すぎる(汗 | | -ドキュメントやサンプル等、作ってみたい人へのフォローが貧弱すぎる(汗 |
| | | |
| 技術的な細部に興味があるひとは、とりあえず http://wiki.osask.jp/?OsaTech を見てください | | 技術的な細部に興味があるひとは、とりあえず http://wiki.osask.jp/?OsaTech を見てください |
| | | |
- | OSASK-HB構想の最中、K氏によって書かれた文書郡 | + | 第二世代の構想の最中、K氏によって書かれた文書郡 |
| #ls2(GUIGUI01/) | | #ls2(GUIGUI01/) |