API
1) プログラムの整理
- ファイル検索の関数化
- 各コマンドの関数化、cmd_cls, cmd_dir, cmd_type, cmd_hlt とそれを実行する runcmd
- CONSOLEの構造体追加、sheetとカーソルなどの情報を持つ
2) 一文字表示API
- syscall 的な実装
- あるレジスタに値を入れて関数を呼び出す
[BITS 32]
MOV AL, 'A'
CALL 0xbe3
fin:
HLT
JMP fin
- 異常終了
3) 一文字表示API2
- far call は far ret (RETF)
4) アプリケーションの終了
- C から farcall 呼び出せるように関数を追加
5) OS バージョンが変わっても変わらない API
- GDT が余ってるので0x40 に登録
- CALL なんとかではなく、INT 0x40で呼び出せる
6) アプリケーションの名は自由に
- hlt と打ったら hlt.hrb を呼びだすじゃなくて、ファイルで呼び出せるようにする
- hlt.nas を hello.nas に (hello.hrb)とコンパイルされる
7) レジスタに気をつけよう
- 実は文字列 hello を表示するために、人文字ずつじゃなくて loop 形式にしたら、PUSHAD, POPAD使い必要あった。 おそらくECX が変わっちゃうから。
8) 文字列表示 API
- edx にサブ番号を入れで同じ INT 0x40で受け付ける、文字の表示も、文字列も表示できますね。
- サイズ指定ある文字列表示APIはまだ動いていない
今日は以上