63 lines
2.2 KiB
NASM
63 lines
2.2 KiB
NASM
|
; debug monitor keyboard routines
|
||
|
|
||
|
; convert a make scancode to an ASCII character
|
||
|
; inputs:
|
||
|
; r0: make scancode
|
||
|
; outputs:
|
||
|
; r0: ASCII character
|
||
|
scancode_to_ascii:
|
||
|
add r0, scancode_table
|
||
|
movz.8 r0, [r0]
|
||
|
|
||
|
ret
|
||
|
|
||
|
; scancode set 1:
|
||
|
; https://wiki.osdev.org/PS/2_Keyboard#Scan_Code_Set_1
|
||
|
const LSHIFT_PRESS: 0x2A
|
||
|
const LSHIFT_RELEASE: 0xAA
|
||
|
const RSHIFT_PRESS: 0x36
|
||
|
const RSHIFT_RELEASE: 0xB6
|
||
|
const CAPS_PRESS: 0x3A
|
||
|
const CAPS_RELEASE: 0xBA
|
||
|
scancode_table:
|
||
|
data.8 0 data.8 27 data.str "1234567890-=" data.8 8
|
||
|
data.8 9 data.str "qwertyuiop[]" data.8 10 data.8 0
|
||
|
data.str "asdfghjkl;'`" data.8 0 data.8 92
|
||
|
data.str "zxcvbnm,./" data.8 0 data.str "*" data.8 0 data.str " "
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.str "-" data.8 0 data.8 0 data.8 0 data.str "+"
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0
|
||
|
scancode_table_shift:
|
||
|
data.8 0 data.8 27 data.str "!@#$%^&*()_+" data.8 8
|
||
|
data.8 9 data.str "QWERTYUIOP{}" data.8 10 data.8 0
|
||
|
data.str "ASDFGHJKL:" data.8 34 data.str "~" data.8 0 data.str "|"
|
||
|
data.str "ZXCVBNM<>?" data.8 0 data.str "*" data.8 0 data.str " "
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.str "-" data.8 0 data.8 0 data.8 0 data.str "+"
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0
|
||
|
scancode_table_caps:
|
||
|
data.8 0 data.8 27 data.str "1234567890-=" data.8 8
|
||
|
data.8 9 data.str "QWERTYUIOP[]" data.8 10 data.8 0
|
||
|
data.str "ASDFGHJKL;'`" data.8 0 data.8 92
|
||
|
data.str "ZXCVBNM,./" data.8 0 data.str "*" data.8 0 data.str " "
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.str "-" data.8 0 data.8 0 data.8 0 data.str "+"
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0 data.8 0
|
||
|
data.8 0 data.8 0 data.8 0
|
||
|
|
||
|
const MONITOR_MODIFIER_BITMAP: 0x03ED3FDB ; 1 byte
|