Step7から第2部ということでいよいよOSのための機能を実装するので各ステップが大きくなって解説が長い。
まずはStep7では割り込み部分を実装し、実際にシリアルの受信を割り込みハンドラで行うように変更した。
Machine Name:os myaccount$ sudo cu -l /dev/cu.PL2303-00001004
Password:
Connected.
kzload (kozos boot loader) started.
kzload> load
~+ lsx kozos
Sending kozos, 14 blocks: Give your local XMODEM receive command now.
Bytes Sent: 1920 BPS:857
Transfer complete
XMODEM receive succeeded.
kzload> dump
size: 780
7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00
00 02 00 2e 00 00 00 01 00 ff c0 20 00 00 00 34
00 00 06 30 00 81 00 00 00 34 00 20 00 02 00 28
00 06 00 05 00 00 00 01 00 00 00 00 00 ff bf ac
中略
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
kzload> run
starting from entry point: ffffc020
kozos boot succeed!
> echo abc
abc
> echo Hello World!
Hello World!
> run
unknown.
> load
unknown.
>
unknown.
> ~.
Disconnected.
OS部分のコマンドの処理は全部シリアル受信割り込みハンドラで処理を行っていて、mainのループでは sleep 命令しか行っていない。