これまで
アセンブラで動作が確認できていた周辺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文字列表示 */