#022

【MSX,Z88DK】C言語でキースキャン【MSX,Z88DK】C言語でキースキャン戻る 設定


概要

 BIOSに「SNSMAT(0141H)」という機能があり、Aレジスタに取得したいキーマトリクスの行(0~10)をセットし、BIOS CALLします。すると、状態がAレジスタに渡されます。

【参考】3章 キーボード・インターフェイス - MSX Datapack wiki化計画(外部サイト)

ソース

#include <stdio.h>
#define TRUE    1
int snsmat( char line )
{
#asm
    LD      A, L        ; line
    CALL    0141h       ; SNSMAT
    LD      L, A        ; return
    LD      H, 0
#endasm
}

void main()
{
    while( TRUE ){
        for( int i = 0; i < 10; i++ ){
            printf( "%X", snsmat( i ) );
        }
        printf( "\n" );
    }
}

解説

 Z88DKのC言語では、関数の引数が1つだった場合、アセンブリ側ではHLレジスタで取得できます。また、C言語関数としての戻り値もHLレジスタの値が使われます。


関連記事

#025 【MSX,Z88DK】C言語でBeep音

#019 【MSX,Z88DK】C言語で任意の座標に文字描画

#016 【MSX,Z88DK】C言語でゲームループとFPS制御


最終更新日時:2022/05/03
戻る戻る back