マイペースなプログラミング日記

x86エミュレータやFPGA、WebGLにお熱なd-kamiがマイペースに書くブログ

キーイベント

キーイベント実装例。現在引数は無いが、そのうちキーコードとキーの状態を渡そうかと思っている。以下のコードで何らかのキーが押されたときに、画面にBと表示するようにしている。0x400000に関数のアドレスをセットしておけば、キーが押されたときに登録した関数が呼ばれる。

void key(void);

void main(void){
    char* vram = (char*)0x100000;
    *vram = 'A';
    
    void** address = (void**)0x400000;
    *address = key;
    
    for(;;){
      
    }
}

void key(void){
    char* vram = (char*)0x100000;
    *vram = 'B';
}

以下のコマンドでhello.binを作成する

gcc -m32 hello.c -c -nostdlib -o hello.obj
ld -Ttext 0 hello.obj -o hello.exe
objcopy -I elf32-i386 -O binary hello.exe hello.bin