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
命令しか行っていない。