INT 16h (AH=10h, AH=11h)

基本的には、INT 16h (AH=00, AH01)と同じように使えるはず。
但し、拡張とあるだけに、何か違うんだろうなぁ...
とりあえず、置き換えてみると...

readloop:
	; キーボードステータス読み込み
	MOV	AX, 1100h
	INT	16h

	JNZ	readkey		; 入力文字があれば、読み込む
	HLT			; ちょっと休憩
	JMP	readloop	; 繰り返し

readkey:
	; キーボード一文字読み込み
	MOV	AX, 1000h
	INT	16h

	CALL	putscancode	; 戻り値を出力
	CALL	putchar		; 文字出力

	CMP	AL, 1Bh		; ESCコード
	JNZ	readloop

fin:
	MOV	SI, shutdownmsg
	CALL	puts
finloop:
	HLT			; 何かあるまでCPUを停止させる
	JMP	finloop		; 無限ループ

とりあえず、変わらないように動いている感じ...


う〜ん。
ちょっと、BochsBIOS でも追ってみるか?