^Cの実装について(方法その1)

FreeDOS の ^C 処理を追うのは引き続き、こつこつやっていくとして、
とりあえず、ROSe については、まだまだ実験体なので、
色々と試してみるのも、ありなんじゃないかな?とか思った。


現状、ROSe は、シングルタスクも良いところで、
入力待ち→コマンド入力→それぞれのコマンド処理→頭に戻る
と、基本的には、こんな感じの処理をループしている。
この流れのどこかで ^C が入力されたら、
単純な話、入力待ち状態に戻れば良いだけである。
ただ、ここで問題になるのが、戻り方だ。
本来であれば、キーボード割り込みで、^C を捕まえて、
そこで、何らかの方法で戻りたいところだが、
BIOS の守備範囲に手を入れるのは、今の段階では控えたい。
そうすると、とりあえず、キー入力を判定している部分で ^C をチェックし、
^C が押されていたら、入力待ちまで戻ると。
戻り方は、キー入力処理部が、CALLで呼ばれているなら、
RETする前にスタック上の戻りアドレスを書き換えてしまう。
但し、どこからキー入力処理が呼び出されるかは分からないので、
ただ、入力待ちまで戻るだけじゃ、ダメだ。
入力待ち処理に入る直前で、SPの値をどこかに保存して、
^C の入力により、入力待ちに戻る際、このSPの値を復元させる。
さて、うまく動くかな?