CPU実験室

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

ボード上モニタ

TK80/85のようにボード上のキーとLEDによって操作するモニタを書いてみました。
核となる部分はたったのこれだけです

 

while(1){
	i=hex_inkey(4,&data);
	switch(i){
		case KEY_ADRSET:
			adrs=data;
			break;
		case KEY_RDDECR:
			adrs--;
			break;
		case KEY_RDINCR:
			adrs++;
			break;
		case KEY_WRINCR:
			*(unsigned char *)adrs++=data;
			break;
		case KEY_RUN:
			((void (*)())adrs)();
			break;
		default:
			break;
	}
	dsp_adrdat(adrs);
}
この中で
hex_inkey()は16進キーからの入力をLEDに置数してファンクションキーが押されたら
置数された値をポインタにセットしてキーコードを返す関数、
dsp_adrdat()は与えられたアドレスをLEDの左4桁に、そのアドレスのデータを右2桁に
表示する関数です

 

アドレスセットキーでadrsにアドレス値を保持し、ライトインクリメントキーでデータ書込みしてアドレスを1つ進めます。
RUNキーを押すと現在のアドレス値をコールしますが、ここは関数へのポインタを使って
((void (*)())adrs)();
と処理しています。括弧が多くて一瞬こんがらがりますがこれでOKのはずです