|
|
|
@ -41,14 +41,6 @@ _write_index: |
|
|
|
DEFS 1 |
|
|
|
_read_index: |
|
|
|
DEFS 1 |
|
|
|
_alt_write_index: |
|
|
|
DEFS 1 |
|
|
|
_alt_read_index: |
|
|
|
DEFS 1 |
|
|
|
_reports: |
|
|
|
DEFS 64 |
|
|
|
_queued_report: |
|
|
|
DEFS 2 |
|
|
|
_report: |
|
|
|
DEFS 8 |
|
|
|
_previous: |
|
|
|
@ -68,110 +60,77 @@ _previous: |
|
|
|
;-------------------------------------------------------- |
|
|
|
; code |
|
|
|
;-------------------------------------------------------- |
|
|
|
;source-doc/keyboard/kyb_driver.c:28: #define EI __asm__("EI") |
|
|
|
;source-doc/keyboard/kyb_driver.c:23: #define EI __asm__("EI") |
|
|
|
; --------------------------------- |
|
|
|
; Function report_diff |
|
|
|
; --------------------------------- |
|
|
|
_report_diff: |
|
|
|
;source-doc/keyboard/kyb_driver.c:29: |
|
|
|
;source-doc/keyboard/kyb_driver.c:24: |
|
|
|
ld de,_report+0 |
|
|
|
;source-doc/keyboard/kyb_driver.c:30: static uint8_t report_diff() __sdcccall(1) { |
|
|
|
;source-doc/keyboard/kyb_driver.c:33: |
|
|
|
;source-doc/keyboard/kyb_driver.c:25: static uint8_t report_diff() __sdcccall(1) { |
|
|
|
;source-doc/keyboard/kyb_driver.c:28: |
|
|
|
ld b,0x08 |
|
|
|
ld hl,_previous |
|
|
|
l_report_diff_00103: |
|
|
|
;source-doc/keyboard/kyb_driver.c:34: uint8_t i = sizeof(report); |
|
|
|
;source-doc/keyboard/kyb_driver.c:29: uint8_t i = sizeof(report); |
|
|
|
ld a, (de) |
|
|
|
inc de |
|
|
|
ld c, (hl) |
|
|
|
inc hl |
|
|
|
sub c |
|
|
|
jr Z,l_report_diff_00104 |
|
|
|
;source-doc/keyboard/kyb_driver.c:35: do { |
|
|
|
;source-doc/keyboard/kyb_driver.c:30: do { |
|
|
|
ld a,0x01 |
|
|
|
jr l_report_diff_00106 |
|
|
|
l_report_diff_00104: |
|
|
|
;source-doc/keyboard/kyb_driver.c:36: if (*a++ != *b++) |
|
|
|
;source-doc/keyboard/kyb_driver.c:31: if (*a++ != *b++) |
|
|
|
djnz l_report_diff_00103 |
|
|
|
;source-doc/keyboard/kyb_driver.c:38: } while (--i != 0); |
|
|
|
;source-doc/keyboard/kyb_driver.c:33: } while (--i != 0); |
|
|
|
xor a |
|
|
|
l_report_diff_00106: |
|
|
|
;source-doc/keyboard/kyb_driver.c:39: |
|
|
|
;source-doc/keyboard/kyb_driver.c:34: |
|
|
|
ret |
|
|
|
;source-doc/keyboard/kyb_driver.c:41: } |
|
|
|
; --------------------------------- |
|
|
|
; Function report_put |
|
|
|
; --------------------------------- |
|
|
|
_report_put: |
|
|
|
;source-doc/keyboard/kyb_driver.c:42: |
|
|
|
ld a, (_alt_write_index) |
|
|
|
inc a |
|
|
|
and 0x07 |
|
|
|
ld c, a |
|
|
|
;source-doc/keyboard/kyb_driver.c:44: uint8_t next_write_index = (alt_write_index + 1) & KEYBOARD_BUFFER_SIZE_MASK; |
|
|
|
ld a,(_alt_read_index) |
|
|
|
sub c |
|
|
|
ret Z |
|
|
|
;source-doc/keyboard/kyb_driver.c:45: |
|
|
|
ld de,_reports+0 |
|
|
|
ld hl, (_alt_write_index) |
|
|
|
ld h,0x00 |
|
|
|
add hl, hl |
|
|
|
add hl, hl |
|
|
|
add hl, hl |
|
|
|
add hl, de |
|
|
|
ex de, hl |
|
|
|
push bc |
|
|
|
ld bc,0x0008 |
|
|
|
ld hl,_report |
|
|
|
ldir |
|
|
|
pop bc |
|
|
|
;source-doc/keyboard/kyb_driver.c:46: if (next_write_index != alt_read_index) { // Check if buffer is not full |
|
|
|
ld hl,_alt_write_index |
|
|
|
ld (hl), c |
|
|
|
;source-doc/keyboard/kyb_driver.c:48: alt_write_index = next_write_index; |
|
|
|
ret |
|
|
|
;source-doc/keyboard/kyb_driver.c:50: } |
|
|
|
;source-doc/keyboard/kyb_driver.c:36: } |
|
|
|
; --------------------------------- |
|
|
|
; Function keyboard_buf_put |
|
|
|
; --------------------------------- |
|
|
|
_keyboard_buf_put: |
|
|
|
ld c, a |
|
|
|
;source-doc/keyboard/kyb_driver.c:51: |
|
|
|
;source-doc/keyboard/kyb_driver.c:37: |
|
|
|
ld b,0x00 |
|
|
|
ld hl,+(_report + 2) |
|
|
|
add hl, bc |
|
|
|
;source-doc/keyboard/kyb_driver.c:52: static void keyboard_buf_put(const uint8_t indx) __sdcccall(1) { |
|
|
|
;source-doc/keyboard/kyb_driver.c:38: static void keyboard_buf_put(const uint8_t indx) __sdcccall(1) { |
|
|
|
ld a,(hl) |
|
|
|
ld c,a |
|
|
|
cp 0x80 |
|
|
|
jr NC,l_keyboard_buf_put_00111 |
|
|
|
or a |
|
|
|
;source-doc/keyboard/kyb_driver.c:53: const uint8_t key_code = report.keyCode[indx]; |
|
|
|
;source-doc/keyboard/kyb_driver.c:39: const uint8_t key_code = report.keyCode[indx]; |
|
|
|
jr Z,l_keyboard_buf_put_00111 |
|
|
|
;source-doc/keyboard/kyb_driver.c:57: // if already reported, just skip it |
|
|
|
;source-doc/keyboard/kyb_driver.c:58: uint8_t i = 6; |
|
|
|
;source-doc/keyboard/kyb_driver.c:43: // if already reported, just skip it |
|
|
|
;source-doc/keyboard/kyb_driver.c:44: uint8_t i = 6; |
|
|
|
ld b,0x06 |
|
|
|
ld hl,+(_previous + 2) |
|
|
|
l_keyboard_buf_put_00106: |
|
|
|
;source-doc/keyboard/kyb_driver.c:59: uint8_t *a = previous.keyCode; |
|
|
|
;source-doc/keyboard/kyb_driver.c:45: uint8_t *a = previous.keyCode; |
|
|
|
ld a, (hl) |
|
|
|
inc hl |
|
|
|
sub c |
|
|
|
;source-doc/keyboard/kyb_driver.c:60: do { |
|
|
|
;source-doc/keyboard/kyb_driver.c:46: do { |
|
|
|
ret Z |
|
|
|
;source-doc/keyboard/kyb_driver.c:61: if (*a++ == key_code) |
|
|
|
;source-doc/keyboard/kyb_driver.c:47: if (*a++ == key_code) |
|
|
|
djnz l_keyboard_buf_put_00106 |
|
|
|
;source-doc/keyboard/kyb_driver.c:63: } while (--i != 0); |
|
|
|
;source-doc/keyboard/kyb_driver.c:49: } while (--i != 0); |
|
|
|
ld a, (_write_index) |
|
|
|
inc a |
|
|
|
and 0x07 |
|
|
|
ld b, a |
|
|
|
;source-doc/keyboard/kyb_driver.c:64: |
|
|
|
;source-doc/keyboard/kyb_driver.c:50: |
|
|
|
ld a,(_read_index) |
|
|
|
sub b |
|
|
|
ret Z |
|
|
|
;source-doc/keyboard/kyb_driver.c:65: uint8_t next_write_index = (write_index + 1) & KEYBOARD_BUFFER_SIZE_MASK; |
|
|
|
;source-doc/keyboard/kyb_driver.c:51: uint8_t next_write_index = (write_index + 1) & KEYBOARD_BUFFER_SIZE_MASK; |
|
|
|
ld de,_buffer+0 |
|
|
|
ld hl, (_write_index) |
|
|
|
ld h,0x00 |
|
|
|
@ -186,101 +145,66 @@ l_keyboard_buf_put_00106: |
|
|
|
inc de |
|
|
|
ld a, l |
|
|
|
ld (de), a |
|
|
|
;source-doc/keyboard/kyb_driver.c:66: if (next_write_index != read_index) { // Check if buffer is not full |
|
|
|
;source-doc/keyboard/kyb_driver.c:52: if (next_write_index != read_index) { // Check if buffer is not full |
|
|
|
ld hl,_write_index |
|
|
|
ld (hl), b |
|
|
|
l_keyboard_buf_put_00111: |
|
|
|
;source-doc/keyboard/kyb_driver.c:68: write_index = next_write_index; |
|
|
|
;source-doc/keyboard/kyb_driver.c:54: write_index = next_write_index; |
|
|
|
ret |
|
|
|
;source-doc/keyboard/kyb_driver.c:70: } |
|
|
|
;source-doc/keyboard/kyb_driver.c:56: } |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_kyb_buf_size |
|
|
|
; Function usb_kyb_status |
|
|
|
; --------------------------------- |
|
|
|
_usb_kyb_buf_size: |
|
|
|
;source-doc/keyboard/kyb_driver.c:71: |
|
|
|
_usb_kyb_status: |
|
|
|
;source-doc/keyboard/kyb_driver.c:57: |
|
|
|
DI |
|
|
|
;source-doc/keyboard/kyb_driver.c:76: uint8_t alt_size; |
|
|
|
ld a,(_alt_write_index) |
|
|
|
ld hl,_alt_read_index |
|
|
|
sub (hl) |
|
|
|
jr C,l_usb_kyb_buf_size_00102 |
|
|
|
;source-doc/keyboard/kyb_driver.c:77: |
|
|
|
ld a,(_alt_write_index) |
|
|
|
ld hl,_alt_read_index |
|
|
|
sub (hl) |
|
|
|
ld d, a |
|
|
|
jr l_usb_kyb_buf_size_00103 |
|
|
|
l_usb_kyb_buf_size_00102: |
|
|
|
;source-doc/keyboard/kyb_driver.c:79: alt_size = alt_write_index - alt_read_index; |
|
|
|
ld hl, (_alt_read_index) |
|
|
|
ld a,0x08 |
|
|
|
sub l |
|
|
|
ld hl, (_alt_write_index) |
|
|
|
add a, l |
|
|
|
ld d, a |
|
|
|
l_usb_kyb_buf_size_00103: |
|
|
|
;source-doc/keyboard/kyb_driver.c:81: alt_size = KEYBOARD_BUFFER_SIZE - alt_read_index + alt_write_index; |
|
|
|
ld a, d |
|
|
|
or a |
|
|
|
jr Z,l_usb_kyb_buf_size_00105 |
|
|
|
;source-doc/keyboard/kyb_driver.c:82: |
|
|
|
ld a, (_alt_read_index) |
|
|
|
inc a |
|
|
|
and 0x07 |
|
|
|
ld (_alt_read_index),a |
|
|
|
l_usb_kyb_buf_size_00105: |
|
|
|
;source-doc/keyboard/kyb_driver.c:84: alt_read_index = (alt_read_index + 1) & KEYBOARD_BUFFER_SIZE_MASK; |
|
|
|
;source-doc/keyboard/kyb_driver.c:61: uint8_t size; |
|
|
|
ld a,(_write_index) |
|
|
|
ld hl,_read_index |
|
|
|
sub (hl) |
|
|
|
jr C,l_usb_kyb_buf_size_00107 |
|
|
|
;source-doc/keyboard/kyb_driver.c:85: |
|
|
|
jr C,l_usb_kyb_status_00102 |
|
|
|
;source-doc/keyboard/kyb_driver.c:62: |
|
|
|
ld a,(_write_index) |
|
|
|
ld hl,_read_index |
|
|
|
sub (hl) |
|
|
|
ld e, a |
|
|
|
jr l_usb_kyb_buf_size_00108 |
|
|
|
l_usb_kyb_buf_size_00107: |
|
|
|
;source-doc/keyboard/kyb_driver.c:87: size = write_index - read_index; |
|
|
|
jr l_usb_kyb_status_00103 |
|
|
|
l_usb_kyb_status_00102: |
|
|
|
;source-doc/keyboard/kyb_driver.c:64: size = write_index - read_index; |
|
|
|
ld hl, (_read_index) |
|
|
|
ld a,0x08 |
|
|
|
sub l |
|
|
|
ld hl, (_write_index) |
|
|
|
add a, l |
|
|
|
ld e, a |
|
|
|
l_usb_kyb_buf_size_00108: |
|
|
|
;source-doc/keyboard/kyb_driver.c:89: size = KEYBOARD_BUFFER_SIZE - read_index + write_index; |
|
|
|
l_usb_kyb_status_00103: |
|
|
|
;source-doc/keyboard/kyb_driver.c:66: size = KEYBOARD_BUFFER_SIZE - read_index + write_index; |
|
|
|
EI |
|
|
|
;source-doc/keyboard/kyb_driver.c:90: |
|
|
|
xor a |
|
|
|
xor a |
|
|
|
ex de, hl |
|
|
|
;source-doc/keyboard/kyb_driver.c:91: EI; |
|
|
|
;source-doc/keyboard/kyb_driver.c:67: |
|
|
|
;source-doc/keyboard/kyb_driver.c:68: EI; |
|
|
|
ret |
|
|
|
;source-doc/keyboard/kyb_driver.c:93: } |
|
|
|
;source-doc/keyboard/kyb_driver.c:70: } |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_kyb_buf_get_next |
|
|
|
; Function usb_kyb_read |
|
|
|
; --------------------------------- |
|
|
|
_usb_kyb_buf_get_next: |
|
|
|
_usb_kyb_read: |
|
|
|
push ix |
|
|
|
ld ix,0 |
|
|
|
add ix,sp |
|
|
|
push af |
|
|
|
push af |
|
|
|
;source-doc/keyboard/kyb_driver.c:94: |
|
|
|
;source-doc/keyboard/kyb_driver.c:71: |
|
|
|
ld a,(_write_index) |
|
|
|
ld hl,_read_index |
|
|
|
sub (hl) |
|
|
|
jr NZ,l_usb_kyb_buf_get_next_00102 |
|
|
|
;source-doc/keyboard/kyb_driver.c:95: uint32_t usb_kyb_buf_get_next() { |
|
|
|
jr NZ,l_usb_kyb_read_00102 |
|
|
|
;source-doc/keyboard/kyb_driver.c:72: uint32_t usb_kyb_read() { |
|
|
|
ld hl,0xff00 |
|
|
|
ld e, l |
|
|
|
ld d, l |
|
|
|
jr l_usb_kyb_buf_get_next_00103 |
|
|
|
l_usb_kyb_buf_get_next_00102: |
|
|
|
;source-doc/keyboard/kyb_driver.c:97: return 0x0000FF00; // H = -1, D, E, L = 0 |
|
|
|
jr l_usb_kyb_read_00103 |
|
|
|
l_usb_kyb_read_00102: |
|
|
|
;source-doc/keyboard/kyb_driver.c:74: return 0x0000FF00; // H = -1, D, E, L = 0 |
|
|
|
DI |
|
|
|
;source-doc/keyboard/kyb_driver.c:98: |
|
|
|
;source-doc/keyboard/kyb_driver.c:75: |
|
|
|
ld bc,_buffer+0 |
|
|
|
ld hl, (_read_index) |
|
|
|
ld h,0x00 |
|
|
|
@ -289,23 +213,23 @@ l_usb_kyb_buf_get_next_00102: |
|
|
|
ld c, (hl) |
|
|
|
inc hl |
|
|
|
ld b, (hl) |
|
|
|
;source-doc/keyboard/kyb_driver.c:99: DI; |
|
|
|
;source-doc/keyboard/kyb_driver.c:100: const uint8_t modifier_key = buffer[read_index] >> 8; |
|
|
|
;source-doc/keyboard/kyb_driver.c:76: DI; |
|
|
|
;source-doc/keyboard/kyb_driver.c:77: const uint8_t modifier_key = buffer[read_index] >> 8; |
|
|
|
ld a, (_read_index) |
|
|
|
inc a |
|
|
|
and 0x07 |
|
|
|
ld hl,_read_index |
|
|
|
ld (hl), a |
|
|
|
;source-doc/keyboard/kyb_driver.c:101: const uint8_t key_code = buffer[read_index] & 255; |
|
|
|
;source-doc/keyboard/kyb_driver.c:78: const uint8_t key_code = buffer[read_index] & 255; |
|
|
|
EI |
|
|
|
;source-doc/keyboard/kyb_driver.c:107: // L: KeyCode aka scan code |
|
|
|
;source-doc/keyboard/kyb_driver.c:84: // L: KeyCode aka scan code |
|
|
|
push bc |
|
|
|
ld l, c |
|
|
|
ld a, b |
|
|
|
call _scancode_to_char |
|
|
|
ld e, a |
|
|
|
pop bc |
|
|
|
;source-doc/keyboard/kyb_driver.c:110: /* D = modifier, e-> char, H = 0, L=>code */ |
|
|
|
;source-doc/keyboard/kyb_driver.c:87: /* D = modifier, e-> char, H = 0, L=>code */ |
|
|
|
xor a |
|
|
|
ld (ix-1),b |
|
|
|
xor a |
|
|
|
@ -321,57 +245,54 @@ l_usb_kyb_buf_get_next_00102: |
|
|
|
ld (ix-1),a |
|
|
|
pop hl |
|
|
|
push hl |
|
|
|
l_usb_kyb_buf_get_next_00103: |
|
|
|
;source-doc/keyboard/kyb_driver.c:111: |
|
|
|
l_usb_kyb_read_00103: |
|
|
|
;source-doc/keyboard/kyb_driver.c:88: |
|
|
|
ld sp, ix |
|
|
|
pop ix |
|
|
|
ret |
|
|
|
;source-doc/keyboard/kyb_driver.c:113: } |
|
|
|
;source-doc/keyboard/kyb_driver.c:90: } |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_kyb_flush |
|
|
|
; --------------------------------- |
|
|
|
_usb_kyb_flush: |
|
|
|
;source-doc/keyboard/kyb_driver.c:114: |
|
|
|
;source-doc/keyboard/kyb_driver.c:91: |
|
|
|
DI |
|
|
|
;source-doc/keyboard/kyb_driver.c:115: uint8_t usb_kyb_flush() __sdcccall(1) { |
|
|
|
xor a |
|
|
|
ld (_alt_read_index),a |
|
|
|
ld (_alt_write_index),a |
|
|
|
;source-doc/keyboard/kyb_driver.c:92: uint8_t usb_kyb_flush() __sdcccall(1) { |
|
|
|
xor a |
|
|
|
ld (_read_index),a |
|
|
|
ld (_write_index),a |
|
|
|
;source-doc/keyboard/kyb_driver.c:118: |
|
|
|
;source-doc/keyboard/kyb_driver.c:95: |
|
|
|
ld de,_previous+0 |
|
|
|
;source-doc/keyboard/kyb_driver.c:119: uint8_t i = sizeof(previous); |
|
|
|
;source-doc/keyboard/kyb_driver.c:120: uint8_t *a = (uint8_t *)previous; |
|
|
|
;source-doc/keyboard/kyb_driver.c:96: uint8_t i = sizeof(previous); |
|
|
|
;source-doc/keyboard/kyb_driver.c:97: uint8_t *a = (uint8_t *)previous; |
|
|
|
ld b,0x08 |
|
|
|
ld hl,_report |
|
|
|
l_usb_kyb_flush_00101: |
|
|
|
;source-doc/keyboard/kyb_driver.c:121: uint8_t *b = (uint8_t *)report; |
|
|
|
;source-doc/keyboard/kyb_driver.c:98: uint8_t *b = (uint8_t *)report; |
|
|
|
xor a |
|
|
|
ld (de), a |
|
|
|
inc de |
|
|
|
;source-doc/keyboard/kyb_driver.c:122: do { |
|
|
|
;source-doc/keyboard/kyb_driver.c:99: do { |
|
|
|
ld (hl),0x00 |
|
|
|
inc hl |
|
|
|
;source-doc/keyboard/kyb_driver.c:123: *a++ = 0; |
|
|
|
;source-doc/keyboard/kyb_driver.c:100: *a++ = 0; |
|
|
|
djnz l_usb_kyb_flush_00101 |
|
|
|
;source-doc/keyboard/kyb_driver.c:125: } while (--i != 0); |
|
|
|
;source-doc/keyboard/kyb_driver.c:102: } while (--i != 0); |
|
|
|
EI |
|
|
|
;source-doc/keyboard/kyb_driver.c:127: EI; |
|
|
|
;source-doc/keyboard/kyb_driver.c:104: EI; |
|
|
|
xor a |
|
|
|
;source-doc/keyboard/kyb_driver.c:128: |
|
|
|
;source-doc/keyboard/kyb_driver.c:105: |
|
|
|
ret |
|
|
|
;source-doc/keyboard/kyb_driver.c:130: } |
|
|
|
;source-doc/keyboard/kyb_driver.c:107: } |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_kyb_tick |
|
|
|
; --------------------------------- |
|
|
|
_usb_kyb_tick: |
|
|
|
;source-doc/keyboard/kyb_driver.c:131: |
|
|
|
;source-doc/keyboard/kyb_driver.c:108: |
|
|
|
ld hl,_in_critical_usb_section |
|
|
|
ld a, (hl) |
|
|
|
or a |
|
|
|
;source-doc/keyboard/kyb_driver.c:132: void usb_kyb_tick(void) { |
|
|
|
;source-doc/keyboard/kyb_driver.c:109: void usb_kyb_tick(void) { |
|
|
|
jr NZ,l_usb_kyb_tick_00112 |
|
|
|
;././source-doc/base-drv//ch376.h:111: |
|
|
|
ld l,0x0b |
|
|
|
@ -384,7 +305,7 @@ _usb_kyb_tick: |
|
|
|
ld a,0x1f |
|
|
|
ld bc,_CH376_DATA_PORT |
|
|
|
out (c), a |
|
|
|
;source-doc/keyboard/kyb_driver.c:135: |
|
|
|
;source-doc/keyboard/kyb_driver.c:112: |
|
|
|
ld bc,_report+0 |
|
|
|
ld hl, (_keyboard_config) |
|
|
|
ld a,0x08 |
|
|
|
@ -409,81 +330,63 @@ _usb_kyb_tick: |
|
|
|
ld a,0xdf |
|
|
|
ld bc,_CH376_DATA_PORT |
|
|
|
out (c), a |
|
|
|
;source-doc/keyboard/kyb_driver.c:137: result = usbdev_dat_in_trnsfer_0((device_config *)keyboard_config, (uint8_t *)&report, 8); |
|
|
|
;source-doc/keyboard/kyb_driver.c:114: result = usbdev_dat_in_trnsfer_0((device_config *)keyboard_config, (uint8_t *)&report, 8); |
|
|
|
ld hl,_result |
|
|
|
ld a, (hl) |
|
|
|
or a |
|
|
|
jr NZ,l_usb_kyb_tick_00112 |
|
|
|
;source-doc/keyboard/kyb_driver.c:138: ch_configure_nak_retry_3s(); |
|
|
|
;source-doc/keyboard/kyb_driver.c:115: ch_configure_nak_retry_3s(); |
|
|
|
call _report_diff |
|
|
|
or a |
|
|
|
jr Z,l_usb_kyb_tick_00112 |
|
|
|
;source-doc/keyboard/kyb_driver.c:139: if (result == 0) { |
|
|
|
call _report_put |
|
|
|
;source-doc/keyboard/kyb_driver.c:141: report_put(); |
|
|
|
;source-doc/keyboard/kyb_driver.c:117: if (report_diff()) { |
|
|
|
ld b,0x06 |
|
|
|
l_usb_kyb_tick_00103: |
|
|
|
;source-doc/keyboard/kyb_driver.c:142: uint8_t i = 6; |
|
|
|
;source-doc/keyboard/kyb_driver.c:118: uint8_t i = 6; |
|
|
|
ld a, b |
|
|
|
dec a |
|
|
|
push bc |
|
|
|
call _keyboard_buf_put |
|
|
|
pop bc |
|
|
|
;source-doc/keyboard/kyb_driver.c:143: do { |
|
|
|
;source-doc/keyboard/kyb_driver.c:119: do { |
|
|
|
djnz l_usb_kyb_tick_00103 |
|
|
|
;source-doc/keyboard/kyb_driver.c:144: keyboard_buf_put(i - 1); |
|
|
|
;source-doc/keyboard/kyb_driver.c:120: keyboard_buf_put(i - 1); |
|
|
|
ld de,_previous |
|
|
|
ld bc,0x0008 |
|
|
|
ld hl,_report |
|
|
|
ldir |
|
|
|
l_usb_kyb_tick_00112: |
|
|
|
;source-doc/keyboard/kyb_driver.c:147: } |
|
|
|
;source-doc/keyboard/kyb_driver.c:123: } |
|
|
|
ret |
|
|
|
;source-doc/keyboard/kyb_driver.c:149: } |
|
|
|
;source-doc/keyboard/kyb_driver.c:125: } |
|
|
|
; --------------------------------- |
|
|
|
; Function usb_kyb_init |
|
|
|
; --------------------------------- |
|
|
|
_usb_kyb_init: |
|
|
|
push ix |
|
|
|
ld ix,0 |
|
|
|
add ix,sp |
|
|
|
;source-doc/keyboard/kyb_driver.c:151: usb_error usb_kyb_init(const uint8_t dev_index) { |
|
|
|
ld a,(ix+4) |
|
|
|
;source-doc/keyboard/kyb_driver.c:126: |
|
|
|
call _get_usb_device_config |
|
|
|
ex de, hl |
|
|
|
ld (_keyboard_config), hl |
|
|
|
;source-doc/keyboard/kyb_driver.c:153: keyboard_config = (device_config_keyboard *)get_usb_device_config(dev_index); |
|
|
|
;source-doc/keyboard/kyb_driver.c:128: keyboard_config = (device_config_keyboard *)get_usb_device_config(dev_index); |
|
|
|
ld hl,_keyboard_config + 1 |
|
|
|
ld a, (hl) |
|
|
|
dec hl |
|
|
|
or (hl) |
|
|
|
jr NZ,l_usb_kyb_init_00102 |
|
|
|
;source-doc/keyboard/kyb_driver.c:154: |
|
|
|
ld l,0x0f |
|
|
|
jr l_usb_kyb_init_00106 |
|
|
|
l_usb_kyb_init_00102: |
|
|
|
;source-doc/keyboard/kyb_driver.c:156: return USB_ERR_OTHER; |
|
|
|
;source-doc/keyboard/kyb_driver.c:129: |
|
|
|
ret Z |
|
|
|
;source-doc/keyboard/kyb_driver.c:131: return; |
|
|
|
ld a,0x01 |
|
|
|
push af |
|
|
|
inc sp |
|
|
|
ld hl, (_keyboard_config) |
|
|
|
call _hid_set_protocol |
|
|
|
ld l, a |
|
|
|
or a |
|
|
|
jr NZ,l_usb_kyb_init_00105 |
|
|
|
;source-doc/keyboard/kyb_driver.c:157: |
|
|
|
;source-doc/keyboard/kyb_driver.c:132: |
|
|
|
ld a,0x80 |
|
|
|
push af |
|
|
|
inc sp |
|
|
|
ld hl, (_keyboard_config) |
|
|
|
call _hid_set_idle |
|
|
|
ld l, a |
|
|
|
;source-doc/keyboard/kyb_driver.c:159: return hid_set_idle(keyboard_config, 0x80); |
|
|
|
;source-doc/keyboard/kyb_driver.c:160: |
|
|
|
l_usb_kyb_init_00105: |
|
|
|
l_usb_kyb_init_00106: |
|
|
|
;source-doc/keyboard/kyb_driver.c:161: done: |
|
|
|
pop ix |
|
|
|
;source-doc/keyboard/kyb_driver.c:133: hid_set_protocol(keyboard_config, 1); |
|
|
|
ret |
|
|
|
_keyboard_config: |
|
|
|
DEFW +0x0000 |
|
|
|
@ -507,77 +410,6 @@ _write_index: |
|
|
|
DEFB +0x00 |
|
|
|
_read_index: |
|
|
|
DEFB +0x00 |
|
|
|
_alt_write_index: |
|
|
|
DEFB +0x00 |
|
|
|
_alt_read_index: |
|
|
|
DEFB +0x00 |
|
|
|
_reports: |
|
|
|
DEFB +0x00 |
|
|
|
DEFB +0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
DEFB 0x00 |
|
|
|
_queued_report: |
|
|
|
DEFW +0x0000 |
|
|
|
_report: |
|
|
|
DEFB +0x00 |
|
|
|
DEFB +0x00 |
|
|
|
|