アットウィキロゴ

Chapter 0, 1

■メモ

  • OSを作るためのステップ
  1. Windows などを使ってソースプログラムを書く
  2. それをCコンパイラでコンパイルして、機械語がいっぱい詰まったファイルを作る
  3. そのファイルを加工してフロッピーディスクのイメージファイルを作る
  4. イメージファイルをディスクへ書き込んで、OSがインストールされたディスクを作る
  • イメージファイルを作って→xxx.bat バッチファイルを作って→実行する

アセンブラ

  • nask(なすく) ←こっちのが自動最適化能力が高い xxx.nas
  • nasm(なすむ)
  • プロンプト >..\z_tools\nask.exe helloos.nas helloos.img → 実行するとhelloos.imgができる

  • DB命令     data byte ファイルの内容を1バイトだけ直接書く命令 

  • RESB命令    reserve byte とりあえず10バイトあけといて RESB 10 っと書く
  • DB命令は文字列を書くことができる
  • DB命令の仲間
    • DW命令 data word: 16bitのこと。2byteでもある。
    • DD命令 data double-word: 32bitのこと。バイトでいえば、4byte。
  • アセンブラの世界のワードというのは、16bit(=2byte)のこと。
  • 「0x」をつけると16進数で、つけなければ10進数。
  • $の意味 この行が先頭から何バイト目かを教えてくれる変数
    • $の意味 この行が先頭から何バイト目かを教えてくれる変数。「RESB 0x1fe $」は、0x1fe-$を引いた数字に00を並べてくれる
    • PCはまずディスクの最初のセクタを読み、最後の2バイトを見る。 これが55 AA でなければ、このディスクは起動に必要なプログラムが書かれていないようだっと判断し、起動できないよエラーが表示される。

ソースプログラム

とりあえずまねして書いてみた

 

実行

バイナリエディタで比較してみた

 

■わからないこと

  • 0001F0周辺と001400周辺に00でない数字を入力するのはなぜか ‐> あとでわかるかな...
  • 以下のコマンドの意味がわからない 
    --------------------
    install.bat
    ..\z_tools\imgtol.com w a: helloos.img
     -> a ドライブにhelloos.img を書く 
     
     
    run.bat
    copy helloos.img ..\z_tools\qemu\fdimage0.bin
    ..\z_tools\make.exe -C ../z_tools/qemu
     -> エミュレータを使用して実行するときのコマンド
     
    --------------------
  • CPUは、32x16=512個のON/OFFの電気信号の集まり -> CUPのピンの数が512個
  • 32個の電気信号の集まりは、「BOOK」という単語をあらわしているとはどういう意味か -> あまり気にしなくてOK
  • 「バイナリエディタがあれば、500万画素のデジタルカメラで撮ったJPEGファイルとまったく同じ画像ファイルが、いくつも作れる」と記載されているが、バイナリエディタでは、500万画素までのファイルしか作れない? -> なんでも作れるよ
  • helloos.nasの22行目"HELLO-OS   "と"FAT12   "の半角スペース3つはなんの意味? このスペースがないと実行されなかった

■参照したリンク 

■用語

  • FAT12フォーマット
    • WindowsやMS-DOSでフロッピーディスクをフォーマットすると、この形式でフォーマットされる。
  • ブートセクタ
    • ブートセクタ フロッピディスクの最初のセクタのこと。フロッピーディスクは1バイトずつの読み書きしかできない仕組みになっていて、512バイトずつをまとめて読み書きする。そんなわけで、フロッピーディスクの世界では、512バイトを1セクタと呼ぶ。フロッピーは1440KB。つまり、1,474,560バイトなので、これを512で割ると、2880セクタで構成されているっということになる。
 

 

最終更新:2013年02月01日 20:43