CPU実験室

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

ドライバをC言語化

これまでアセンブラで動作が確認できていた周辺IOのドライバをC言語で書き換え
次のような関数群がさくっと出来上がりました。
ライブラリ化してユーザプログラムにリンクすれば制御がとても楽になります。

void pit_init(void);				/* 8253タイマ初期化		*/
unsigned int pit_chk(int );			/* 8253タイマチェック		*/

void pic_init(void);				/* 8259割込み初期化		*/
void pic_mask(unsigned char );			/* 8259割込みマスク		*/
void eoi(void);				/* 8259割込み終了通知		*/

unsigned char sio_get(void);			/* 8251シリアル1文字受信	*/
void sio_put(unsigned char);			/* 8251シリアル1文字送信	*/

void kdc_init(void);				/* 8279初期化		*/
char kdc_chk(void);				/* 8279キーセンス		*/
void kdc_dsp(unsigned char ,unsigned char );	/* 8279LEDデータ表示		*/
void kdc_clr(void);				/* 8279LEDクリア		*/
void kdc_deg(unsigned char ,unsigned char );	/* 8279LED1桁数値表示		*/
unsigned int hex_inkey(int );			/* 8279テンキー入力&LED置数	*/
void kdc_int(int );				/* 827910進数値表示		*/
void kdc_hex(int );				/* 827916進数値表示		*/

void opn_init(void);				/* OPN初期化		*/
void opn_dout(unsigned char );			/* OPNポート出力		*/
unsigned char opn_dout(void );			/* OPNポート入力		*/
void opn_regchk(void);			/* OPNbusyチェック		*/
void opn_tmr_seta(unsigned int );		/* OPNタイマ時定数セット	*/
void opn_tmr_starta(void);			/* OPNタイマスタート		*/
void opn_tmr_reseta(void);			/* OPNタイマフラグリセット	*/

void lcd_cmd(unsigned char );			/* LCDコマンドレジスタセット	*/
void lcd_dat(unsigned char );			/* LCDデータレジスタセット	*/
void lcd_init(void);				/* LCD初期化		*/
void lcd_clr(void);				/* LCDクリア		*/
void lcd_home(void);				/* LCDカーソルホーム		*/
void lcd_locate(int);				/* LCDカーソルロケート	*/
void lcd_dsp(int );				/* LCD数値表示		*/
void lcd_str(char *);				/* LCD文字列表示		*/