CPU実験室

誰も見向きもしない古いCPUをいじって動かしてみようというプロジェクトです

スタートアップルーチン

TI99-4Aエミュレータのサイトをうろうろしていたらプログラム開発用のライブラリを集めたページにアセンブラで書かれたスタートアップルーチンを見つけました。
スタックポインタの初期化やPUSH/CALL/RETURN処理の実体、飛び先の登録が行われているのでまさに欲しかった部分です
 
イメージ 1
 
元々がTI99-4A用のルーチンなので内蔵VDP初期化やキーボードからの入力ルーチンといったプラットホーム固有な部分も含まれ、これら不要な部分をばっさり切り捨ててカスタマイズしたソースが以下です。
非常に読みにくい、(あるいは高度に最適化された)コードですが、R12~R15にスタックポインタとスタック制御関係の処理へのポインタをセットしてmain関数にジャンプします
 
イメージ 2
 
このスタートアップに含まれるスタック制御処理(PUSH/CALL/RETURN)の実体です。
Cのコンパイル結果と合わせてみると、ああなるほど。。と思うコードが書かれています
 
イメージ 3