あなたは7788人目
Electronics Crafting/Creative Programming/Music Creation/Illustrating

Contents:

HomePage

  • Furlands -of Sleepiness-(未完成)--http://furlands.ddo.jp/
  • Mail:Syn.Tri.Nagaあっとgmail.com(適切に変換して下さい)

製作中のOS

  • 可能な限りモジュールに分割することで、改造のしやすさの向上を目標としています
  • ページングによるメモリ管理方式を用いることにより、よりセキュアなメモリ空間の提供が可能です(たぶん
  • 開発環境はgcc 4.7.2(C++)+nasm 2.09.08+Fedora 18です。カーネル自体は少し手を加えたELFファイルです。

PanelSystem

  • ダブルバッファリングを局所的に掛けて、チラつきを抑えてかつ半透明ウィンドウを実現するシステム
  • 製作中のOSのGUIの標準的なシステムになる予定です

DiffSystem

  • FATのようにテーブル方式ではなく、クラスタごとに片方向連結リストのような構造を組んで管理する方式です
  • クラスタサイズは1024bytes
  • クラスタ->セクタ換算式:(cluster * 2)+1
  • FATと違って、次のクラスタが同一クラスタ内に記述されているのでテーブルアクセスが不要になります
  • 構造体として表すと、
    struct cluster_t {
      unsigned long long next_cluster;
      unsigned char data[1016];
    };
    • next_cluster(uint64-type)は次のクラスタを絶対で指します
  • このクラスタ管理方式を使うと、FATと同じディレクトリクラスタの構造にした場合に半端な空きができます。製作中のOSでは先頭に24バイトの詰めものを入れることで解決しています。

Comments

  • エミュレータでしか正常動作を確認できていなくて、どうやらそれを軽視しているようになんとなく見えます。それはよくない傾向です。エミュレータは正しくないプログラムも動いてしまいます。エミュレータは実機の「マネ」でしかなく、実機とエミュレータとで動作が異なるとき、正しいのは実機です。つまり実機で動かないのは何か問題がある証拠です。もし開発者が僕だったら、他の改良点をいったん全部まき戻してでも、実機で動くようになることを優先します。 -- K 2009-06-09 (火) 08:38:16
  • ウーム、他の人のOSもやってみましたが、いずれも再起動してしまいました。やはりPCの問題かと。 -- Triangle_Ld. 2009-06-19 (金) 16:49:18
  • (>実機とエミュレータとで動作が異なるとき、正しいのは実機です。)じゃあ初期化部分を何度も読み直して問題ないと踏み切った私はプログラミング(C言語の能力)不足ですか? -- Triangle_Ld. 2009-07-03 (金) 15:31:59
  • それは何のためにプログラムを作っているのかによると僕は思います。実機で動くOSを作ることが目的なら僕の方法がいいと思いますが、実機で動かなくてもいいOSを作るのが目的ならTriangle_Ld.さんの方法は間違っていないと思います。・・・僕はあくまでも実機で動かすためにOSを作っていると仮定してコメントを書いています。その観点では、実機で動かないという重大な問題が生じたら、全てに優先してその問題を解決するべきです。ちなみに僕の言う「解決」には、その実機以外の機種を調達する(つまりその機種は対応から外す)、という究極の選択肢も含まれます。・・・OSが複雑になった後で問題を追求しようとすれば、原因の切り分けがより困難になります。ちなみにどんなに正しいプログラムを書いていてもそれがうまく動かないということはたまにあります。OSやドライバなどハードウェアに近いプログラムではそういうこともありますので、ソースの正しさはあまり意味がありません。仕様書を持ってきて、仕様書通りに作ってあるのだから動くはずだ、動かないのはハードが悪いのだ!とふてくされることはできますが、それでは何も解決はしません。参考まで。 -- K 2009-07-03 (金) 19:15:47
  • ご指摘によるとそもそも無改造の「はりぼてOS」もTriangle_Ld.さんのPCでは動作しないようなので、その点で「はりぼてOS」そのものも失格です。これについては当方では確認できないので僕のミスなのか、それともそのPCの異状なのか判断できないのですが(Athlon64X2のときのように似たような報告が多数あれば手がかりがつかめるのですが)、仮にPCに問題がなければ悪いのは明らかにOSのほうです。どうもすみません。 -- K 2009-07-03 (金) 19:24:00
  • すいません。リメイクとして1から作り直したら動きました。でも圧縮とかはやってないので、前のはそこで何かあったのかもしれません。とにかく動きました。お騒がせしました。 -- Triangle_Ld. 2009-07-27 (月) 10:18:13
  • おめでとうございます!動いて何よりです。 -- K 2009-07-27 (月) 23:53:13
  • こんにちは。 -- anzy 2009-09-26 (土) 21:15:30
  • 日本語入力に関して参照を差し上げます. 本に見れば背を押した時キーボードで返還される値段で英語などを入力しています. このようにキーボードで返還される値段と日本語文字のキーと対応させてそれで入力をすれば処理がもっと簡単にならないでしょうか? そして IME Standard(日本語バージョン)でローマ字が表示された後自動的に変換されるようになっています. 私の見る時はそうなことも必要のようです. -- Kor_Lee_Hee_Rak 2009-10-20 (火) 12:42:03
  • つまり日本語を直接入力するということですか?(たとえばAを押したら「ち」が出てくる)それならかんたんですので、あとでもう一個載せときます。 -- Triangle Ld. 2009-10-31 (土) 11:13:07
  • 「あなたは999人目」とったー!(自慢) -- K 2009-12-14 (月) 19:08:04
  • 今考えたら、僕と一学年しか違わないけど、すごい差です… -- hikarupsp 2009-12-15 (火) 19:58:08
  • Triangle_Ld.さんのホームページが文字化けするんですけど(自分だけかもしれません)、<meta charset="UTF-8">というタグをいれると文字化けしないですよ。 -- ケーボ 2009-12-28 (月) 15:32:02
  • WinXP+IE8の環境では勝手にUTF-8が指定されるので、現状では何もできません。
    もしよろしければ開いたときにブラウザが選択したエンコードを教えて下さい。
    ちなみにその補助的なものとして、「Character Encode must be Unicode(UTF-8).」と書いてあり、翻訳すると「文字のエンコードはUnicode(UTF-8)である必要があります。」となります。
    でもこれでは優しくないとしみじみ思ってますので、今月中に直したいと思います。 -- Triangle Ld. 2010-01-04 (月) 12:06:25
  • HPをEUC対応にしました。WinXP+IE6では正常にEUCが選択されます。 -- Triangle Ld. 2010-01-05 (火) 10:07:53
  • あけましておめでとうございます。HPは正常に表示されるようになってました。 -- ケーボ 2010-01-06 (水) 16:02:14
  • はじめましてTriangle Ld.さん。昨日はコメントをありがとうございました。Triangle Ld.さんのNoize Ld. -2nd Style-の完成も楽しみに待っています。 -- ケーボ 2010-02-07 (日) 11:10:26
  • 羨ましいですね。私もハングルの出力をしようとするとハングルのフォントがないうえ、ハングルの出力を試みましたが、コンソールが停止にしても失敗しました T.T。もしかしてハングルの出力の部分についてのように作成することがある方は、なぜないか知りたいですね。 -- Kor_Lee_Hee_Rak 2010-03-04 (木) 21:30:35
  • とうとうTriangle_Ld.さんも半透明シートですね。がんばってください。ちなみに自分は、refresh_subのとき最後面のシートから順に色を混ぜながら変数に保存し、その保存している色と最前面のシートの色を混ぜてvramに書き込むという方法を使っています。ご参考までに。 -- ケーボ 2010-04-06 (火) 20:06:49
  • 久しぶりに帰ってきました。 OSの動作中に電源を完全に遮断してしまう方法については心配していただく上で、ここで私が1つの重要な事実をお知らせしようと思います。 -- Kor_Lee_Hee_Rak 2010-09-16 (木) 17:32:54
  • 最初に、APM - BIOSを使用するために、リアルモードに再変換する前に、必ずすべてのタスクを終了する必要があるということです。もし、そうではなく、移行する場合にセグメンテーション処理で問題が生じ、頭が病気にされています。したがって、まずタスクをすべて殺す方法について研究する必要があります。 -- Kor_Lee_Hee_Rak 2010-09-16 (木) 17:35:42
  • おっと、そうでしたか。改めて、それを視野に入れてAPMを操作してみたいと思います。 -- Percentage 2010-09-18 (土) 16:04:36
  • [ページングの件]私も以前、64bitOSをつくろうとしたときに(3回挫折w)ページングを使おうとしたことがあります。そのとき、cr0に0x80000001をorした後、「vramに何かを書きこむたびにリセットされる」バグが発生しました。なので、ちょうどPercentageさんのソースも同じようなところでバグが発生したようなので驚きました。根本的な解決にはならないですが、よろしければ、vramに何も書き込まずにもう一度試していただけませんか?もしそれでリセットされないようなら、私の場合と同じかもしれません。自分で試してみたいんですが、現在自分のPCが使えないので(笑)。以上、長文失礼いたしました。 -- ケーボ 2011-01-28 (金) 23:54:52
  • えーと、あげているプログラムによるリセットの手順は、
    1:PDE/PTEを初期化し、cr0に0x80000000をor
    2:1の直後にページング用の番地へジャンプ
    3:たぶんジャンプ命令でリセット。
    実機でもBochsでも同じリセット問題が確認できています。もしかしたらvram用のページを作ったら解決できるかもしれませんというのが今さっき閃いた解決策。
    とにかく似たような報告があって助かりました。何とか解決しそうですので解決したらその都度お知らせしてみます。 -- Percentage 2011-01-29 (土) 17:38:16
  • EFAT12に関してとても興味があるので、是非どこかに解説のページを作っていただけ無いでしょうか。よろしくお願いします。 -- JsZ 2011-01-31 (月) 03:07:18
  • >JsZさん
    少しわかりづらくなりそうですが作ってみます。
    ページングの件につきましては見事に自己解決しました。ケーボさんありがとうございます。 -- Percentage 2011-02-01 (火) 17:36:49

コメントお名前NameLink

リロード   新規 編集 差分 添付   トップ 一覧 検索 最終更新 バックアップ   ヘルプ   最終更新のRSS
Last-modified: 2013-04-13 (土) 17:16:07 (3150d)