PC-8801MA2にPS/2日本語キーボードをつなぐ その3

PS2Keyboardライブラリ側の問題を解決する。まずはPS/2のお勉強。

http://hp.vector.co.jp/authors/VA037406/html/ps2interface.htm

PC-8801用のキー割り当ては以下を参考にする。STOPはF12、COPYはF11、HELPはF10、PCは右の田キーとする。なおテンキーはカーソルキーでNumLockで数字キーになる。まだバグがあるようなので入力をリセットするのを左の田キーに割り当てた。

http://tulip-house.ddo.jp/digital/USBKEY88/index.html

余計なことをしないavailable2()とread2()を作成します。

PS2Keyboard.h

    /**
     * Returns true if there is a char to be read, false if not.
     */
    static bool available();
    static bool available2();
    
    /**
     * Returns the char last read from the keyboard.
     * If there is no char availble, -1 is returned.
     */
    static int read();
    static int read2();
};

PS2Keyboard.cpp

bool PS2Keyboard::available2() {
	if (CharBuffer || UTF8next) return true;
	CharBuffer = get_scan_code();
	if (CharBuffer) return true;
	return false;
}

int PS2Keyboard::read2() {
	uint8_t result = UTF8next;
	if (result) {
		UTF8next = 0;
	} else {
		result = CharBuffer;
		if (result) {
			CharBuffer = 0;
		} else {
			return get_scan_code();
		}
	}
	if (!result) return -1;
	return result;
}