@ -62,7 +62,7 @@ _report:
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; code
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; source-doc / keyboard / kyb-init.c : 12 : void keyboard_init ( void ) {
; source-doc / keyboard / kyb-init.c : 12 : uint8_t keyboard_init ( void ) __sdcccall ( 1 ) {
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Function keyboard_init
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -118,7 +118,8 @@ l_keyboard_init_00105:
inc sp
ld hl , ( _keyboard_config )
call _hid_set_idle
; source-doc / keyboard / kyb-init.c : 32 : return ;
; source-doc / keyboard / kyb-init.c : 32 : return 1 ;
ld a , 0x01
jr l_keyboard_init_00108
l_keyboard_init_00106:
; source-doc / keyboard / kyb-init.c : 34 : } while ( + + index ! = MAX_NUMBER_OF_DEVICES + 1 ) ;
@ -130,9 +131,11 @@ l_keyboard_init_00106:
l_keyboard_init_00107:
; source-doc / keyboard / kyb-init.c : 36 : print_string ( " \ r \ nUSB : KEYBOARD : NOT FOUND$ " ) ;
ld hl , kyb_init_str_2
jp _print_string
call _print_string
; source-doc / keyboard / kyb-init.c : 37 : return 0 ;
xor a
l_keyboard_init_00108:
; source-doc / keyboard / kyb-init.c : 37 : }
; source-doc / keyboard / kyb-init.c : 38 : }
ret
kyb_init_str_0:
DEFB 0x0d
@ -147,7 +150,7 @@ kyb_init_str_2:
DEFB 0x0a
DEFM " USB : KEYBOARD : NOT FOUND$ "
DEFB 0x00
; source-doc / keyboard / kyb-init.c : 50 :
; source-doc / keyboard / kyb-init.c : 51 :
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Function keyboard_buf_put
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -155,42 +158,42 @@ _keyboard_buf_put:
push ix
ld ix , 0
add ix , sp
; source-doc / keyboard / kyb-init.c : 51 : void keyboard_buf_put ( const uint8_t modifier_keys , const uint8_t key_code ) {
; source-doc / keyboard / kyb-init.c : 52 : void keyboard_buf_put ( const uint8_t modifier_keys , const uint8_t key_code ) {
ld a ,( ix + 5 )
sub 0x80
jr NC , l_keyboard_buf_put_00112
ld a ,( ix + 5 )
or a
; source-doc / keyboard / kyb-init.c : 52 : if ( key_code > = 0x80 | | key_code = = 0 )
; source-doc / keyboard / kyb-init.c : 55 : / / if already reported , just skip it
; source-doc / keyboard / kyb-init.c : 53 : if ( key_code > = 0x80 | | key_code = = 0 )
; source-doc / keyboard / kyb-init.c : 56 : / / if already reported , just skip it
jr Z , l_keyboard_buf_put_00112
ld c , 0x00
l_keyboard_buf_put_00110:
ld a , c
sub 0x06
jr NC , l_keyboard_buf_put_00106
; source-doc / keyboard / kyb-init.c : 56 : for ( uint8_t i = 0 ; i < 6 ; i + + )
; source-doc / keyboard / kyb-init.c : 57 : for ( uint8_t i = 0 ; i < 6 ; i + + )
ld b , 0x00
ld hl , _previous_keyCodes
add hl , bc
ld a , ( hl )
sub ( ix + 5 )
; source-doc / keyboard / kyb-init.c : 57 : if ( previous_keyCodes [ i ] = = key_code )
; source-doc / keyboard / kyb-init.c : 58 : if ( previous_keyCodes [ i ] = = key_code )
jr Z , l_keyboard_buf_put_00112
; source-doc / keyboard / kyb-init.c : 55 : / / if already reported , just skip it
; source-doc / keyboard / kyb-init.c : 56 : / / if already reported , just skip it
inc c
jr l_keyboard_buf_put_00110
l_keyboard_buf_put_00106:
; source-doc / keyboard / kyb-init.c : 59 :
; source-doc / keyboard / kyb-init.c : 60 :
ld a , ( _write_index )
inc a
and 0x07
ld c , a
; source-doc / keyboard / kyb-init.c : 60 : uint8_t next_write_index = ( write_index + 1 ) & KEYBOARD_BUFFER_SIZE_MASK ;
; source-doc / keyboard / kyb-init.c : 61 : uint8_t next_write_index = ( write_index + 1 ) & KEYBOARD_BUFFER_SIZE_MASK ;
ld a ,( _read_index )
sub c
jr Z , l_keyboard_buf_put_00112
; source-doc / keyboard / kyb-init.c : 61 : if ( next_write_index ! = read_index ) { / / Check if buffer is not full
; source-doc / keyboard / kyb-init.c : 62 : if ( next_write_index ! = read_index ) { / / Check if buffer is not full
ld de , _buffer + 0
ld hl , ( _write_index )
ld h , 0x00
@ -198,7 +201,7 @@ l_keyboard_buf_put_00106:
add hl , de
ld a ,( ix + 4 )
ld ( hl ), a
; source-doc / keyboard / kyb-init.c : 62 : buffer [ write_index ]. modifier_keys = modifier_keys ;
; source-doc / keyboard / kyb-init.c : 63 : buffer [ write_index ]. modifier_keys = modifier_keys ;
ld hl , ( _write_index )
ld h , 0x00
add hl , hl
@ -206,39 +209,39 @@ l_keyboard_buf_put_00106:
inc hl
ld a ,( ix + 5 )
ld ( hl ), a
; source-doc / keyboard / kyb-init.c : 63 : buffer [ write_index ]. key_code = key_code ;
; source-doc / keyboard / kyb-init.c : 64 : buffer [ write_index ]. key_code = key_code ;
ld hl , _write_index
ld ( hl ), c
l_keyboard_buf_put_00112:
; source-doc / keyboard / kyb-init.c : 65 : }
; source-doc / keyboard / kyb-init.c : 66 : }
pop ix
ret
; source-doc / keyboard / kyb-init.c : 67 :
; source-doc / keyboard / kyb-init.c : 68 :
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Function keyboard_buf_size
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_keyboard_buf_size:
; source-doc / keyboard / kyb-init.c : 68 : uint8_t keyboard_buf_size () __sdcccall ( 1 ) {
; source-doc / keyboard / kyb-init.c : 69 : uint8_t keyboard_buf_size () __sdcccall ( 1 ) {
ld a ,( _write_index )
ld hl , _read_index
sub ( hl )
jr C , l_keyboard_buf_size_00102
; source-doc / keyboard / kyb-init.c : 69 : if ( write_index > = read_index )
; source-doc / keyboard / kyb-init.c : 70 : if ( write_index > = read_index )
ld a ,( _write_index )
ld hl , _read_index
sub ( hl )
jr l_keyboard_buf_size_00103
l_keyboard_buf_size_00102:
; source-doc / keyboard / kyb-init.c : 71 :
; source-doc / keyboard / kyb-init.c : 72 :
ld hl , ( _read_index )
ld a , 0x08
sub l
ld hl , ( _write_index )
add a , l
l_keyboard_buf_size_00103:
; source-doc / keyboard / kyb-init.c : 72 : return KEYBOARD_BUFFER_SIZE - read_index + write_index ;
; source-doc / keyboard / kyb-init.c : 73 : return KEYBOARD_BUFFER_SIZE - read_index + write_index ;
ret
; source-doc / keyboard / kyb-init.c : 74 :
; source-doc / keyboard / kyb-init.c : 75 :
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Function keyboard_buf_get_next
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
@ -248,53 +251,53 @@ _keyboard_buf_get_next:
add ix , sp
push af
push af
; source-doc / keyboard / kyb-init.c : 75 : uint32_t keyboard_buf_get_next () {
; source-doc / keyboard / kyb-init.c : 76 : uint32_t keyboard_buf_get_next () {
ld a ,( _write_index )
ld hl , _read_index
sub ( hl )
jr NZ , l_keyboard_buf_get_next_00102
; source-doc / keyboard / kyb-init.c : 76 : if ( write_index = = read_index ) / / Check if buffer is empty
; source-doc / keyboard / kyb-init.c : 77 : if ( write_index = = read_index ) / / Check if buffer is empty
ld hl , 0xff00
ld e , h
ld d , h
jr l_keyboard_buf_get_next_00105
l_keyboard_buf_get_next_00102:
; source-doc / keyboard / kyb-init.c : 78 :
; source-doc / keyboard / kyb-init.c : 79 :
ld bc , _buffer + 0
ld hl , ( _read_index )
ld h , 0x00
add hl , hl
add hl , bc
ld b , ( hl )
; source-doc / keyboard / kyb-init.c : 79 : const uint8_t modifier_key = buffer [ read_index ]. modifier_keys ;
; source-doc / keyboard / kyb-init.c : 80 : const uint8_t modifier_key = buffer [ read_index ]. modifier_keys ;
inc hl
ld c , ( hl )
; source-doc / keyboard / kyb-init.c : 80 : const uint8_t key_code = buffer [ read_index ]. key_code ;
; source-doc / keyboard / kyb-init.c : 81 : const uint8_t key_code = buffer [ read_index ]. key_code ;
ld a , ( _read_index )
inc a
and 0x07
ld ( _read_index ), a
; source-doc / keyboard / kyb-init.c : 82 :
; source-doc / keyboard / kyb-init.c : 83 :
ld a , c
sub 0x39
jr NZ , l_keyboard_buf_get_next_00104
; source-doc / keyboard / kyb-init.c : 83 : if ( key_code = = KEY_CODE_CAPS_LOCK ) {
; source-doc / keyboard / kyb-init.c : 84 : if ( key_code = = KEY_CODE_CAPS_LOCK ) {
ld hl , _caps_lock_engaged
ld a , ( hl )
xor 0x01
ld ( hl ), a
; source-doc / keyboard / kyb-init.c : 84 : caps_lock_engaged = ! caps_lock_engaged ;
; source-doc / keyboard / kyb-init.c : 85 : caps_lock_engaged = ! caps_lock_engaged ;
call _keyboard_buf_get_next
jr l_keyboard_buf_get_next_00105
l_keyboard_buf_get_next_00104:
; source-doc / keyboard / kyb-init.c : 87 :
; source-doc / keyboard / kyb-init.c : 88 :
push bc
ld l , c
ld a , b
call _scancode_to_char
ld e , a
pop bc
; source-doc / keyboard / kyb-init.c : 8 9: / * D = modifier , e- > char , H = 0 , L = > code * /
; source-doc / keyboard / kyb-init.c : 90 : / * D = modifier , e- > char , H = 0 , L = > code * /
xor a
ld ( ix-1 ), b
xor a
@ -311,32 +314,32 @@ l_keyboard_buf_get_next_00104:
pop hl
push hl
l_keyboard_buf_get_next_00105:
; source-doc / keyboard / kyb-init.c : 90 : return ( uint32_t ) modifier_key < < 24 | ( uint32_t ) c < < 16 | key_code ;
; source-doc / keyboard / kyb-init.c : 91 : return ( uint32_t ) modifier_key < < 24 | ( uint32_t ) c < < 16 | key_code ;
ld sp , ix
pop ix
ret
; source-doc / keyboard / kyb-init.c : 92 :
; source-doc / keyboard / kyb-init.c : 93 :
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Function keyboard_buf_flush
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_keyboard_buf_flush:
; source-doc / keyboard / kyb-init.c : 93 : void keyboard_buf_flush () {
; source-doc / keyboard / kyb-init.c : 94 : write_index = 0 ;
; source-doc / keyboard / kyb-init.c : 94 : void keyboard_buf_flush () {
; source-doc / keyboard / kyb-init.c : 95 : write_index = 0 ;
xor a
ld ( _write_index ), a
ld ( _read_index ), a
; source-doc / keyboard / kyb-init.c : 95 : read_index = 0 ;
; source-doc / keyboard / kyb-init.c : 96 : read_index = 0 ;
ret
; source-doc / keyboard / kyb-init.c : 101 :
; source-doc / keyboard / kyb-init.c : 102 :
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
; Function keyboard_tick
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
_keyboard_tick:
; source-doc / keyboard / kyb-init.c : 102 : void keyboard_tick ( void ) {
; source-doc / keyboard / kyb-init.c : 103 : void keyboard_tick ( void ) {
ld hl , _in_critical_usb_section
ld a , ( hl )
or a
; source-doc / keyboard / kyb-init.c : 103 : if ( is_in_critical_section ())
; source-doc / keyboard / kyb-init.c : 104 : if ( is_in_critical_section ())
jr NZ , l_keyboard_tick_00111
; . / . / source-doc / base-drv / / ch376.h : 110 : # endif
ld l , 0x0b
@ -349,7 +352,7 @@ _keyboard_tick:
ld a , 0x1f
ld bc , _CH376_DATA_PORT
out ( c ), a
; source-doc / keyboard / kyb-init.c : 106 : ch_configure_nak_retry_disable () ;
; source-doc / keyboard / kyb-init.c : 107 : ch_configure_nak_retry_disable () ;
ld bc , _report
ld hl , ( _keyboard_config )
ld a , 0x08
@ -374,10 +377,10 @@ _keyboard_tick:
ld a , 0xdf
ld bc , _CH376_DATA_PORT
out ( c ), a
; source-doc / keyboard / kyb-init.c : 108 : ch_configure_nak_retry_3s () ;
; source-doc / keyboard / kyb-init.c : 109 : ch_configure_nak_retry_3s () ;
ld hl , _result
ld a , ( hl )
; source-doc / keyboard / kyb-init.c : 109 : if ( result = = 0 )
; source-doc / keyboard / kyb-init.c : 11 0 : if ( result = = 0 )
or a
jr NZ , l_keyboard_tick_00111
ld c , a
@ -385,7 +388,7 @@ l_keyboard_tick_00109:
ld a , c
sub 0x06
ret NC
; source-doc / keyboard / kyb-init.c : 110 : for ( uint8_t i = 0 ; i < 6 ; i + + ) {
; source-doc / keyboard / kyb-init.c : 111 : for ( uint8_t i = 0 ; i < 6 ; i + + ) {
ld a , + (( _report + 2 ) & 0xFF )
add a , c
ld e , a
@ -404,17 +407,17 @@ l_keyboard_tick_00109:
pop af
pop de
pop bc
; source-doc / keyboard / kyb-init.c : 111 : keyboard_buf_put ( report.bModifierKeys , report.keyCode [ i ]) ;
; source-doc / keyboard / kyb-init.c : 112 : keyboard_buf_put ( report.bModifierKeys , report.keyCode [ i ]) ;
ld b , 0x00
ld hl , _previous_keyCodes
add hl , bc
ld a , ( de )
ld ( hl ), a
; source-doc / keyboard / kyb-init.c : 109 : if ( result = = 0 )
; source-doc / keyboard / kyb-init.c : 11 0 : if ( result = = 0 )
inc c
jr l_keyboard_tick_00109
l_keyboard_tick_00111:
; source-doc / keyboard / kyb-init.c : 113 : }
; source-doc / keyboard / kyb-init.c : 114 : }
ret
_keyboard_config:
DEFW + 0x0000