itiB / hariboteOS_30days

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

『30日でできる!OS自作入門』

30日でできる!OS自作入門をいちびが読んで作ったものです.
著者独自のツールや仕様は極力省いて作成しています.

環境

  • Windows10 Home + WSL(Ubuntu)
  • VirtualBox 6.1

完成図

day30

ライセンス

MIT

もとのOSは著者の川合氏がKL-01で公開している

日記的なものたち

1日目

2日目

3日目

4日目

とくにつまるところ無し

5日目

  • またなんか持ってきやがったな!!!!!
    • Font探すのが面倒だったからkeita/30daysOSさんからいただいてきた
    • 変換はこっちの方のコードを参考にさせていただいた
  • sprintf#include<stdio.h>じゃできないぞ~~~
    • 直接ライブラリを指定してみる?@Makefile
    • /lib/x86_64-linux-gnu/libc.so.6
    • /usr/include/stdio.h
    • うまくいかねぇ...
    • stdio.hの中見てみたけどexternで実質なにもないじゃん
    • http://www.rcc.ritsumei.ac.jp/2017/1217_8241/
    • あきらめてみんながやっているようにsprintfを作っていただいたものをコピペ...
  • nasmfunc.asmを書き換えて関数を増やした.

6日目

  • 分割コンパイル
    • 結構なやんだ
    • gccのオプションとかまとめた
    • オブジェクトファイルとソースコードがっとまとめちゃってるけど
  • 割り込み処理がいかなくて悩んでいた
    • io_sti()の宣言をbootpack.hに書きそびれていた
    • init_pic()int.cinit_pid()とタイポしていた
  • なんか重大なエラーが発生する
    • image
    • nasmfunc.asmio_in32:が間違っていたので書き換え
    • dsctbl.cの中のアドレスを定数宣言した値にすべて書き換えたらうまく動いた!

7日目

  • a なんかキーボードがリリースされないんだけど...
    • なおった
  • VirtualboxをCUIから起動できる用にした

8日目

マウス動くようになった!!!やったね

9日目

  • 2(harib06b)
    • なんか筆者はうまく出なかったらしいけど...うまく32MBって出るわ
    • gccのなんかっぽいしつぎのcはとばそう

10日目

なんか演算と->がわかりにくいから->の前後につけていたスペースをなくすことにした

11日目

なんか画面が崩れたらひたすらデバッグすることになるからわかりやすい.
とくに詰まることはない(何時間やったかは知らない).

12日目

  • bがうまく動かない,タイマーが1秒で100進まない
    • めちゃデバッグした
    • Memory.cがすこし間違ってたため書き換えた.
    • 結局理由はBootpack.cのinit_pit()と書くべきところをinit_pic()って書いていたからだった
  • Mouse_coursor -> mouse_cursor
  • ポケモンしてたら一日過ぎてた,遅れがでてしまった...HOME解禁日だったんや...ユルシテユルシテ...

13日目

  • 性能計測してみてるけど遅くね...???どっかでミスったのかな...
    • harib10c
      • 335849587, 356351942
    • harib10g
      • 618541936, 618063662
      • よくなってないし...
    • harib10h
      • 610880252, 618872756
    • harib10i
      • 607591402, 607585217

14日目

とくにつまるところなし ベンチマーク比較してるとこは...まぁいいかなって

15日目

はじめにaで躓いて時間使っちゃったけどそれ以降はサクサク
詰まった原因もただの関数書き忘れだった

16日目

  • 昨日のTSS32の構造体,icmapって書くところiomapって書いちゃってたわ
  • bでうまく動かなくてなやんでいたけど原因はtask_initを無駄にしちゃっていてメモリを壊していたからでした
  • うまく動かないときにどこまで表示で来てるかとかでだいたいの当てがつけれるようになってきた

17日目

  • c: make_window8()ってまだbootpack.cにあることになってたんだーーーふーん
  • 英字キーボードの配列に対応させた
  • VMはうまくCapsLockを記憶してくれるみたいでそれぞれ記憶してくれてる,いいね

18日目

  • 新しいライブラリ!!!strcmp!!!来やがったな!!!!
  • imgのなかにファイルをいれるの...どうやるんだろう書き換えちゃえばいいのかな...

19日目

  • HariboteSYS: 20 -> clustno: 0x0002 -> 0x004200
  • clustno * 512 + 0x003e00
  • BOOTPACKC: 20 -> clustno: 0x002E -> 0x5c00 + 0x003e00 = 0x9a00
    • #include "bootp ビンゴ!
  • strncmp 作る.
  • どうやらうちのharibは0x02E(47番)まで入っているみたい
  • ディレクトリ構成をeから変え始める,まぁエラーみれば直せると思うので..
  • hlt.hrbは無理やり突っ込んでいる
    • forとかで一気に入れられる方法探して変えたい

20日目

  • aでたくさん変更したからsrcのなかのconsole.c, file.cが変更されている.
  • メモリマップが!!わからん!!!
    • -Wl,-Map=hoge.mapgccにつけることで隣家に-Map...オプションを渡すことができるらしい
    • これがメモリマップ出力するオプション,無事に出力できた!
    • 0x0000000000000c62 asm_cons_putcharらしい
  • ごめんなさい,cがどうしてもできないのでとりあえずそのまま突き進むことにします...できるようになったらまたupします
  • eからは割り込み処理で作っているためうまく動きます
  • 参考にさせていただいたGitHub https://github.com/yusei-wy/HariboteOS
  • hも動きませんでした...ごめんなさい,次の日に修正があるらしいのでそれ次第で...

21日目

  • dは...異常終了するけど...qemuじゃないしなぁきっとうまくいってると信じて進むか
  • eの時点でうまくコンソールに文字表示できたぞ??やっぱVirtualBox最強!
  • gがどんなアプリを動かそうとしても止まっちゃう
    • nasmfunc.asmstart_app()RETFRFTFってタイポしてた...

22日目

  • cでほんとはctrl見て...ってやりたかったけどちょっと後回しにします
  • f以降は.asmもしっかりと実行ファイルの型に合っていないとエラーが出るようになっている
  • gのAPI,レジスタの順番なんでわざわざ変えてるのこれ
  • わかりにくいだけじゃね??
  • 追記: winを表示するとカーソルが消えるバグがあった,23日目で直した

23日目

  • 参考にさせていただいている https://github.com/kamaboko123/30daysOS
  • なんかカーソルがwin表示でバグる,
    • 原因はsheet.cのなかにあるsheet_updown(), 一つ+しないと上に行かないのに足してなかった.
  • まーたライブラリ使ってる...rand()...検索したら出てきた
    • なるほどなーって感じだ
  • hはアプリ追加しただけだからfのなかでできる

24日目

  • キーボードの割り当て確認URL http://oswiki.osask.jp/?%28AT%29keyboard
  • gでnoodle.cがコンパイルできない...
    • sprintfとかはstdlib.hファイルに入れて管理することにした
gcc ../tests/noodle.c -march=i486 -m32 -nostdlib -fno-pic -fno-builtin -O0 -c -o noodle.o
ld -T ../app.ls -m elf_i386 -o noodle.hrb noodle.o a_asm.o mysprintf.o
ld: section .data VMA [0000000000000400,0000000000000414] overlaps section .text VMA [0000000000000030,00000000000004a2]
Makefile:39: recipe for target 'noodle.hrb' failed
make: *** [noodle.hrb] Error 1
  • リンカスクリプトのdataサイズ大きくすればいいのかな...あんまわかんないけど
    • .data 0x0500 : AT ( ADDR(.text) + SIZEOF(.text) ) {って0x0400だったとこを0x0500にしたらコンパイルできた
    • と思ったらApp動かなかった...
    • LONG(0x0500) /* 12 : スタック初期値&.data転送先 */こっちも0x500に書き換えなきゃ行けなかった,そりゃ行方不明になるわ
  • タイマ1秒進んで動かないんだけど
    • cons.timeに直していったらできた
  • 参考にしている

25日目

最近これ自分用としてはわかりにくいからgitのhistoryで管理すればよかったな...って思うんですよ...

  • a bewp音がVirtualBoxだと出るのかわからん...とりあえず出ない
    • あってることにして進める
  • fでtask構造体をいじったのでlibbootpack.hのinclude先を変更している.
  • fからgでファイル分けるの忘れた
  • i 動くくね...???

26日目

  • a 遅いか...???
  • またgで.hのなかの構造体をいじるのでbootpack.hをつなぎ直す必要あり

27日目

  • c なんかすでに保護されてるけど...
  • apiを分割してコンパイルした実行ファイルと比較してみる
    • -rwxrwxrwx 1 itib itib 150 Mar 11 19:52 hello3_in_a_asm.hrb
    • -rwxrwxrwx 1 itib itib 553 Mar 11 19:55 hello3_in_apiXX.hrb
    • 差がすごい
  • f golibってなんだ...
  • libつくったときに.oがAPIのディレクトリに作られるのいやだなぁ...
  • gパズルすぎてあれ...
    • まぁできたけど今後どうするかは要検討
    • どうファイルを変更していくか次第で構造は考える

28日目

  • なんかSOSU APPとかアプリが動かない...
    • 原因はファイル名にあるみたい.変えれば動く
    • 自作したstrcmpとかが悪かったみたいなので他の方のを参考に作り直した
  • alloca作ったけど...どうやってリンクさせよう
    • わからん...とりあえずMallocで進めていこうかな
  • winheloでスタック例外出されるんだけど
  • フォントはルートのなかのinsertってディレクトリにいれた
  • 日本語うまくだせたけどMakefileのなかでappをいれてからじゃないと他の.hrbファイルがエラーを吐くようになるみたい...
    • fでなんか違う感じにバグるけど...一応全角文字はしっかり作れてるなぁ...あとにまわそうかな...日本語興味ないし
    • irohaに0x82 0xa0 0x00ってやればうまく出力してくれるしなぁ
  • gのバグもなんか出力のされかたが違うぞ―――???

29日目

  • 文字は正しく出力できるようになった!
  • bの筆者独自の圧縮形式は...まぁやんなくていいや
  • appサイズ云々のとこは...mallocしてる
  • invaderのとこはstackの大きなリンカスクリプトをつなげている

30日目

  • 必要な標準ライブラリがまた増えた
  • いつまでたってもTviewがうまくいかないと思ったらapi_fsize.asmが間違っていた
    • tviewで1文字しかなぜか表示されない症状
    • api_fsize()で取ってきたファイルサイズが違う
    • はじめにPushしてたけどこれデータ格納する必要とかないからいらんわ
  • Beep音だせないし...形だけつくった
  • GViewがStackよくわからなさ過ぎて結局mallocで作ってしまった.
  • 圧縮は作者独自形式でいやだったから辞めとく
  • ipl09.asmは作ったものの9シリンダまでではなくそのまま20シリンダ読んでる

とりあえず完成!

改修ポイント

  • ctrl + cへの対応
  • ファイル書き込みAPI

About

License:MIT License


Languages

Language:C 84.5%Language:Assembly 11.9%Language:Makefile 3.3%Language:LiveScript 0.3%