📄 kb_hub.dt
字号:
INC KTEMP1
JBC KEY_PRESS,4,NEXT_SCAN_BIT_CHK4
CALL CHK_CONFIRM_PKEY
NEXT_SCAN_BIT_CHK4:
INC KTEMP1
JBC KEY_PRESS,5,NEXT_SCAN_BIT_CHK5
CALL CHK_CONFIRM_PKEY
NEXT_SCAN_BIT_CHK5:
INC KTEMP1
JBC KEY_PRESS,6,NEXT_SCAN_BIT_CHK6
CALL CHK_CONFIRM_PKEY
NEXT_SCAN_BIT_CHK6:
INC KTEMP1
JBC KEY_PRESS,7,NEXT_SCAN_BIT_CHK7
CALL CHK_CONFIRM_PKEY
NEXT_SCAN_BIT_CHK7:
MOV A,#0x100-7
ADD KTEMP1,A
JBC KB_FLAG,CHK_PHANTOM_KEY,NEXT_SCAN_BIT_END
MOV A,#PHANTOM_K_BUF1
MOV IAP1,A
FIND_NOT_0XFF_PHANTOM_KBUF:
INCA IAC1
JBC STTS,Z,CHK_PHANTOM_KBUF
MOV A,KEY_PRESS
MOV IAC1,A
JMP NEXT_SCAN_BIT_END
CHK_PHANTOM_KBUF:
MOV A,KEY_PRESS
XOR A,IAC1
JBC STTS,Z,CHK_NEXT_PHANTOM_KBUF
BS KB_FLAG,ERROR_KEY
JMP NEXT_SCAN_BIT_END
CHK_NEXT_PHANTOM_KBUF:
INC IAP1
JBC STTS,DC,FIND_NOT_0XFF_PHANTOM_KBUF
NEXT_SCAN_BIT_END:
RET
CHK_CONFIRM_PKEY:
MOV A,#0x60
MOV IAP1,A
JMP CHK_CONFIRM_PKEY0
CHK_NEXT_HKI_LOOP:
INC IAP1
JBS STTS,DC,NC_KBUFFER_FULL
CHK_CONFIRM_PKEY0:
ZCHK IAC1
JBC STTS,Z,HAD_KEYIN_CHK
INCA KTEMP1
CALL KB_REAL_TABLE
MOV IAC1,A
JMP CHK_CONFIRM_PKEY_END
HAD_KEYIN_CHK:
INCA KTEMP1
CALL KB_REAL_TABLE
XOR A,IAC1
JBC STTS,Z,CHK_NEXT_HKI_LOOP
CALL KB_STORE_CONFIRM_CHK
JBS IAP1,3,HIGH_CONFIRM_CHK
OR KB_CONFIRM1,A
JMP CONFIRM_CHK_OK
HIGH_CONFIRM_CHK:
OR KB_CONFIRM2,A
CONFIRM_CHK_OK:
JBC KB_FLAG,SAME_COLUMN,CHK_SROW_ACOLUMN
BS KB_FLAG,CHK_PHANTOM_KEY
CHK_SROW_ACOLUMN:
BS KB_FLAG,SAME_COLUMN
NC_KBUFFER_FULL:
CHK_CONFIRM_PKEY_END:
RET
CHK_KEY_PRESS:
CALL CHK_CK_KEEP_RELEASE_NEW
MOV A,KTEMP1
XOR A,KB_TEMP1
JBS STTS,Z,$+3
BS KB_FLAG,SEND_KEY_WORK
MOV A,KTEMP1
MOV KB_TEMP1,A
MOV A,KB_TEMP2
CALL CHK_GK_KEEP_RELEASE_NEW
MOV KTEMP1,A
XOR A,KB_TEMP2
JBS STTS,Z,$+3
BS KB_FLAG,SEND_KEY_WORK
MOV A,KTEMP1
MOV KB_TEMP2,A
MOV A,KB_TEMP3
CALL CHK_GK_KEEP_RELEASE_NEW
MOV KTEMP1,A
XOR A,KB_TEMP3
JBS STTS,Z,$+3
BS KB_FLAG,SEND_KEY_WORK
MOV A,KTEMP1
MOV KB_TEMP3,A
MOV A,KB_TEMP4
CALL CHK_GK_KEEP_RELEASE_NEW
MOV KTEMP1,A
XOR A,KB_TEMP4
JBS STTS,Z,$+3
BS KB_FLAG,SEND_KEY_WORK
MOV A,KTEMP1
MOV KB_TEMP4,A
MOV A,KB_TEMP5
CALL CHK_GK_KEEP_RELEASE_NEW
MOV KTEMP1,A
XOR A,KB_TEMP5
JBS STTS,Z,$+3
BS KB_FLAG,SEND_KEY_WORK
MOV A,KTEMP1
MOV KB_TEMP5,A
MOV A,KB_TEMP6
CALL CHK_GK_KEEP_RELEASE_NEW
MOV KTEMP1,A
XOR A,KB_TEMP6
JBS STTS,Z,$+3
BS KB_FLAG,SEND_KEY_WORK
MOV A,KTEMP1
MOV KB_TEMP6,A
MOV A,KB_TEMP7
CALL CHK_GK_KEEP_RELEASE_NEW
MOV KTEMP1,A
XOR A,KB_TEMP7
JBS STTS,Z,$+3
BS KB_FLAG,SEND_KEY_WORK
MOV A,KTEMP1
MOV KB_TEMP7,A
FILLIN_KBTEMP_OK:
JMP KEY_SCAN_END
CHK_CK_KEEP_RELEASE_NEW:
CLR KTEMP1
MOV A,#0x60
MOV IAP1,A
FIND_NEW_CONCK_LOOP:
ZCHK IAC1
JBS STTS,Z,CHK_N_CONCK_KBBUF
CALL SHIFT_CONFIRM_2BYTE
JBC STTS,C,CHK_N_CONCK_KBBUF
JBC IAC1,7,CHK_N_CONCK_KBBUF
CALL CLEAR_CONFIRM_BIT
MOV A,#0x80
XOR A,IAC1
JBC STTS,Z,NOT_WIN_R_KEY
MOV A,#0x80
NOT_WIN_R_KEY:
OR KTEMP1,A
CHK_N_CONCK_KBBUF:
INC IAP1
JBC STTS,DC,FIND_NEW_CONCK_LOOP
RET
CHK_GK_KEEP_RELEASE_NEW:
MOV KTEMP1,A
JBC STTS,Z,COMPARE_16_KBBUF
FIND_NEW_CONK:
MOV A,#0x60
MOV IAP1,A
FIND_NEW_CONK_LOOP:
ZCHK IAC1
JBS STTS,Z,CHK_N_CON_KBBUF
CALL SHIFT_CONFIRM_2BYTE
JBC STTS,C,CHK_N_CON_KBBUF
CALL CLEAR_CONFIRM_BIT
MOV A,IAC1
RET
CHK_N_CON_KBBUF:
INC IAP1
JBC STTS,DC,FIND_NEW_CONK_LOOP
RETL #0x00
COMPARE_16_KBBUF:
MOV A,#0x60
MOV IAP1,A
COMPARE_N_KBBUF_LOOP:
MOV A,KTEMP1
XOR A,IAC1
JBC STTS,Z,COMPARE_N_KBBUF
CALL SHIFT_CONFIRM_2BYTE
JBC STTS,C,COMPARE_N_KBBUF
CALL CLEAR_CONFIRM_BIT
MOV A,IAC1
RET
COMPARE_N_KBBUF:
INC IAP1
JBC STTS,DC,COMPARE_N_KBBUF_LOOP
RETL #0x00
KB_STORE_CONFIRM_CHK:
MOV A,IAP1
AND A,#0x07
ADD A,#0x01
CALL CLEAR_CON_TABLE
RET
CLEAR_CONFIRM_BIT:
CALL KB_STORE_CONFIRM_CHK
JBS IAP1,3,CLEAR_HIGH_B_CON
XOR KB_CONFIRM1,A
RET
CLEAR_HIGH_B_CON:
XOR KB_CONFIRM2,A
RET
CLEAR_CON_TABLE:
TBL
RETL #0b00000001
RETL #0b00000010
RETL #0b00000100
RETL #0b00001000
RETL #0b00010000
RETL #0b00100000
RETL #0b01000000
RETL #0b10000000
SHIFT_CONFIRM_2BYTE:
MOV A,KB_CONFIRM1
MOV KBCON_SHIFT1,A
MOV A,KB_CONFIRM2
MOV KBCON_SHIFT2,A
INCA IAP1
AND A,#0x1F
MOV KTEMP3,A
FIND_CON_BIT_LP:
RRC KBCON_SHIFT2,1
RRC KBCON_SHIFT1,1
DJZ KTEMP3,FIND_CON_BIT
JMP FIND_CON_BIT_LP
FIND_CON_BIT:
RET
KB_REAL_TABLE:
TBL
RETL #0x00 ;FAIL
RETL #0x21 ;4
RETL #0x20 ;3
RETL #0x31 ;\ (L)
RETL #0x23 ;6
RETL #0x1E ;1
RETL #0x1F ;2
RETL #0x22 ;5
RETL #0x29 ;ESC
RETL #0x3C ;F3
RETL #0x3B ;F2
RETL #0x39 ;Caps Lock
RETL #0x3E ;F5
RETL #0x4E ;Page Down
RETL #0x3A ;F1
RETL #0x3D ;F4
RETL #0x2C ;SPACE
RETL #0x38 ;/
RETL #0x37 ;.
RETL #0x05 ;B
RETL #0x55 ;Num *
RETL #0x10 ;M
RETL #0x36 ;,
RETL #0x4C ;Delete
RETL #0x11 ;N
RETL #0x2E ;=
RETL #0x2D ;-
RETL #0x24 ;7
RETL #0x2B ;Tab
RETL #0x26 ;9
RETL #0x27 ;0
RETL #0x2A ;Backspace
RETL #0x25 ;8
RETL #0x1C ;Y
RETL #0x17 ;T
RETL #0x14 ;Q
RETL #0x0C ;I
RETL #0x08 ;E
RETL #0x15 ;R
RETL #0x18 ;U
RETL #0x1A ;W
RETL #0x50 ;RIGHT
RETL #0x48 ;PAUSE
RETL #0x31 ;\ (R)
RETL #0x49 ;Insert
RETL #0x52 ;UP
RETL #0x4B ;Page Up
RETL #0x4F ;LEFT
RETL #0x4A ;Home
RETL #0x51 ;DOWN
RETL #0x28 ;Enter
RETL #0x12 ;O
RETL #0x16 ;S
RETL #0x2F ;[
RETL #0x30 ;]
RETL #0x04 ;A
RETL #0x13 ;P
RETL #0x0E ;K
RETL #0x0D ;J
RETL #0x07 ;D
RETL #0x33 ;;
RETL #0x0A ;G
RETL #0x0B ;H
RETL #0x0F ;L
RETL #0x09 ;F
RETL #0x44 ;F11
RETL #0x58 ;Num Enter
RETL #0x5A ;Num 2
RETL #0x46 ;Print Screen
RETL #0x62 ;Num 0
RETL #0x63 ;Num Del
RETL #0x45 ;F12
RETL #0x5B ;Num 3
RETL #0x1B ;X
RETL #0x1D ;Z
RETL #0x34 ;'
RETL #0x19 ;V
RETL #0x4D ;End
RETL #0x00 ;
RETL #0x06 ;C
RETL #0x35 ;`
RETL #0x5E ;Num 6
RETL #0x5D ;Num 5
RETL #0x60 ;Num 8
RETL #0x59 ;Num 1
RETL #0x56 ;Num -
RETL #0x5C ;Num 4
RETL #0x57 ;Num +
RETL #0x61 ;Num 9
RETL #0x53 ;Num Lock
RETL #0x43 ;F10
RETL #0x3F ;F6
RETL #0x5F ;Num 7
RETL #0x41 ;F8
RETL #0x42 ;F9
RETL #0x47 ;Scroll Lock
RETL #0x40 ;F7
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x54 ;Num /
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0xA0 ;Shift (R) -- 20
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x88 ;Windows (L) -- 08
RETL #0x00 ;
RETL #0x00 ;
RETL #0x82 ;Shift (L) -- 02
RETL #0x65 ;Catalog
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x84 ;Alt (L) -- 04
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x90 ;Ctrl (R) -- 10
RETL #0xC0 ;Alt (R) -- 40
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x81 ;Ctrl (L) -- 01
RETL #0x00 ;
RETL #0x00 ;Fn
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x00 ;
RETL #0x80 ;Windows (R) -- 80
RETL #0x00 ;
// FOR FPGA SINK CURRENT, DELAY I/O CHANGE 1->0 ABOUT 170us
DELAY:
CLR KTEMP2
DELAY_LOOP:
NOP
DJZ KTEMP2,DELAY_BACK
JMP DELAY_LOOP
DELAY_BACK:
RET
UKB_INITIAL:
CLR KB_FLAG
CLR KB_FLAG2
MOV A,#0x00
MOV IOCA,A
MOV IOCD,A
MOV IOCE,A
MOV IOCF,A
MOV PORTF,A
MOV A,#0b00000111
MOV IOCC,A
MOV KB_LED,A
MOV A,#0xFF
MOV IOCB,A
MOV KB_ROW,A ;KB ROW INPUT =1
MOV PUCB,A ;KB ROW PULL HIGH ENABLE
MOV A,#0x00
MOV KB_COLUMN0,A ;KB COLUMN OUTPUT =1
MOV KB_COLUMN1,A ;KB COLUMN OUTPUT =1
MOV KB_COLUMN2,A
MOV A,#0b00111000
MOV KB_LED,A ;LED OFF / KB COLUMN OUTPUT =1
CLR KB_CONFIRM1
CLR KB_CONFIRM2
CLR KB_STORE1
CLR KB_STORE2
MOV A,#0x00
CALL ALL_KB_TEMP_FILLIN
CALL ALL_KEY_NCTEMP_FILLIN0
BANK 1
MOV A,#0x01
MOV PROTOCOL,A
MOV A,#0x80
MOV IDLE_TIMER,A
RET
//////////////////////////////////////////////////////////////////////
ORG 0x3FFF
DW 0x4010
;============================================================
;Copyright c 2004 by ETOMS Electronics Corp. All right reserved.
;No part of this computer program may be reproduced, stored in a retrieval system, or
;transmitted in any form or by any means, electronic, mechanical, photocopying,
;recording, scanning or otherwise, except as permitted under ETOMS authorization.
;セ筿福祘Αぇ帝
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -