eTakazawa / makeos

0 stars 0 forks source link

毎回ROMに書き込むのをやめる(4章) #4

Open eTakazawa opened 4 years ago

eTakazawa commented 4 years ago

問題点

→ OSプログラムをダウンロードするように

xmodem転送対応

プロトコルに合わせて諸々書く.
今回でシリアル受信(serial.c)も追加されている

つまづきポイント

kzload> load

後に,書籍では~Cとなっているが,

kzload> load
~+ lsx a.txt

~+とする必要がある(http://blog.livedoor.jp/noanoa07/archives/1994090.html

kzload> dump
size: 80
74 65 73 74 0a 61 62 63  0a 31 32 33 0a 68 65 6c
6c 6f 20 77 6f 72 6c 64  21 1a 1a 1a 1a 1a 1a 1a
1a 1a 1a 1a 1a 1a 1a 1a  1a 1a 1a 1a 1a 1a 1a 1a
1a 1a 1a 1a 1a 1a 1a 1a  1a 1a 1a 1a 1a 1a 1a 1a
1a 1a 1a 1a 1a 1a 1a 1a  1a 1a 1a 1a 1a 1a 1a 1a
1a 1a 1a 1a 1a 1a 1a 1a  1a 1a 1a 1a 1a 1a 1a 1a
1a 1a 1a 1a 1a 1a 1a 1a  1a 1a 1a 1a 1a 1a 1a 1a
1a 1a 1a 1a 1a 1a 1a 1a  1a 1a 1a 1a 1a 1a 1a 1a

使ってない部分は1aで埋めるxmodemの決まり.

$ hexdump a.txt
0000000 74 65 73 74 0a 61 62 63 0a 31 32 33 0a 68 65 6c
0000010 6c 6f 20 77 6f 72 6c 64 21
0000019

OK!!

ブートローダー

OSの実行形式ファイルをダウンロードして,それをRAM上に展開して起動するプログラムのこと

→ ブートストラップ

アセンブリ

eTakazawa commented 4 years ago

スタートアップ

_start:
    mov.l   #_stack,sp
    jsr @_main

1:
    bra 1b

スタックポインタの設定が必要(#_stack. sp)

1b は今まであるラベル1の中で直前にあるもの.
mainから帰ってきたときに暴走しないように無限ループで止める