📄 usb_oper.asm
字号:
MOV USB_DATALENGTH, A
SUBM A, BYTE_REST
CPL BYTE_REST
INC BYTE_REST
START_TO_WFIFO0:
MOV A, USB_DATALENGTH
MOV USB_LCOUNT, A
MOV A, EP0_BUFF
MOV MP0, A
WFIFO0_MP0LOOP:
TABRDL ID0
INC MP0
DEC USB_LCOUNT
SZ USB_LCOUNT
JMP NEXT_BB
JMP GOTO_WFIFO0
NEXT_BB:
MOV A, TBLH
XOR A, 07FH
SZ ACC
JMP TAKE_H_BYTE
INC TBLP
INC BYTE_POS
JMP WFIFO0_MP0LOOP
TAKE_H_BYTE:
MOV A, TBLH
MOV ID0, A
INC MP0
INC TBLP
INC BYTE_POS
SDZ USB_LCOUNT
JMP WFIFO0_MP0LOOP
JMP GOTO_WFIFO0_X
GOTO_WFIFO0:
INC BYTE_POS
GOTO_WFIFO0_X:
MOV A, USB_DATALENGTH
MOV USB_LCOUNT, A
MOV A, EP0_BUFF
MOV MP0, A
MOV A, MISC
MOV MP1, A
CLR ID1
SET ID1.TX
CALL USB_MISC_DELAY
SET ID1.REQ
WFIFO0LOOP:
MOV A, MISC
MOV MP1, A
CALL USB_MISC_DELAY
SNZ ID1.READY
JMP EXIT_WRITE_FIFO0
MOV A, FIFO0
MOV MP1, A
MOV A, ID0
MOV ID1, A
INC MP0
SDZ USB_LCOUNT
JMP WFIFO0LOOP
EXIT_WRITE_FIFO0:
MOV A, MISC
MOV MP1, A
CLR ID1.TX
CALL USB_MISC_DELAY
CLR ID1.REQ
RET
USB_MISC_DELAY:
NOP
NOP
NOP
NOP
NOP
NOP
RET
WRITE_FIFO2:
CLR FIFO_WF
MOV A, 0
MOV BP, A
MOV A, RF_INBUFF
MOV MP0, A
MOV A, EP2_BUFF
MOV MP1, A
INC MP0
INC MP0
INC MP0
SNZ NOT_BOOT_TYPE
JMP SKIP_REPORT_ID
MOV A, 02H ;MOUSE REPORT ID
MOV ID1, A
INC MP1
SKIP_REPORT_ID:
MOV A, ID0 ;MOUSE KEY STATUS
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;X
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;Y
MOV ID1, A
INC MP0
INC MP1
SNZ NOT_BOOT_TYPE
JMP SKIP_WHEEL
MOV A, ID0 ;Z
MOV ID1, A
SKIP_WHEEL:
MOV A, 1
MOV BP, A
MOV A, EP2_BUFF
MOV MP0, A
SNZ NOT_BOOT_TYPE
JMP MOUSE_3_BYTE_IN
MOV A, 5
MOV USB_LCOUNT, A
JMP MOUSE_NEXT
MOUSE_3_BYTE_IN:
MOV A, 3
MOV USB_LCOUNT, A
MOUSE_NEXT:
MOV A, MISC
MOV MP1, A
CLR ID1
MOV A, 010H
ORM A, ID1
CALL USB_MISC_DELAY
SET ID1.TX
CALL USB_MISC_DELAY
SET ID1.REQ
WFIFO2LOOP:
MOV A, MISC
MOV MP1, A
CALL USB_MISC_DELAY
SNZ ID1.READY
JMP FAIL_WRITE_FIFO2
MOV A, FIFO2
MOV MP1, A
MOV A, ID0
MOV ID1, A
INC MP0
SDZ USB_LCOUNT
JMP WFIFO2LOOP
JMP EXIT_WRITE_FIFO2
FAIL_WRITE_FIFO2:
SET FIFO_WF
EXIT_WRITE_FIFO2:
MOV A, MISC
MOV MP1, A
CLR ID1.TX
CALL USB_MISC_DELAY
CLR ID1.REQ
RET
WRITE_FIFO2X:
CLR FIFO_WF1
MOV A, 0
MOV BP, A
MOV A, RF_INBUFF ;RECV FROM RF
MOV MP0, A
MOV A, EP2_BUFF
MOV MP1, A
INC MP0 ;KB_SN
INC MP0 ;FSP_SN
INC MP0 ;BYTE0
MOV A, 01H ;SPECIAL-KEY REPORT ID
MOV ID1, A
INC MP1
MOV A, ID0 ;BYTE0
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;BYTE1
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;BYTE2
MOV ID1, A
MOV A, 1
MOV BP, A
MOV A, EP2_BUFF
MOV MP0, A
MOV A, 4
MOV USB_LCOUNT, A
MOV A, MISC
MOV MP1, A
CLR ID1
MOV A, 010H
ORM A, ID1
CALL USB_MISC_DELAY
SET ID1.TX
CALL USB_MISC_DELAY
SET ID1.REQ
WFIFO2LOOPX:
MOV A, MISC
MOV MP1, A
CALL USB_MISC_DELAY
SNZ ID1.READY
JMP FAIL_WRITE_FIFO2X
MOV A, FIFO2
MOV MP1, A
MOV A, ID0
MOV ID1, A
INC MP0
SDZ USB_LCOUNT
JMP WFIFO2LOOPX
JMP EXIT_WRITE_FIFO2X
FAIL_WRITE_FIFO2X:
SET FIFO_WF1
EXIT_WRITE_FIFO2X:
MOV A, MISC
MOV MP1, A
CLR ID1.TX
CALL USB_MISC_DELAY
CLR ID1.REQ
CLR RF_KDATA_GOT
CLR RF_MDATA_GOT
RET
WRITE_FIFO2XX:
; ==== FILL_OFFICE_BUT_DATA =============
MOV A, RF_INBUFF
MOV MP0, A
INC MP0
INC MP0
INC MP0
CLR ID0
INC MP0
CLR ID0
INC MP0
MOV A, 004H
MOV ID0, A
;========================================
CLR FIFO_WF
MOV A, 0
MOV BP, A
MOV A, RF_INBUFF ;RECV FROM RF
MOV MP0, A
MOV A, EP2_BUFF
MOV MP1, A
INC MP0 ;MICE_SN
INC MP0 ;FSP_SN
INC MP0 ;BYTE0
MOV A, 01H ;SPECIAL-KEY REPORT ID
MOV ID1, A
INC MP1
MOV A, ID0 ;BYTE0
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;BYTE1
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;BYTE2
MOV ID1, A
MOV A, 1
MOV BP, A
MOV A, EP2_BUFF
MOV MP0, A
MOV A, 4
MOV USB_LCOUNT, A
MOV A, MISC
MOV MP1, A
CLR ID1
MOV A, 010H
ORM A, ID1
CALL USB_MISC_DELAY
SET ID1.TX
CALL USB_MISC_DELAY
SET ID1.REQ
WFIFO2LOOPXX:
MOV A, MISC
MOV MP1, A
CALL USB_MISC_DELAY
SNZ ID1.READY
JMP FAIL_WRITE_FIFO2XX
MOV A, FIFO2
MOV MP1, A
MOV A, ID0
MOV ID1, A
INC MP0
SDZ USB_LCOUNT
JMP WFIFO2LOOPX
JMP EXIT_WRITE_FIFO2XX
FAIL_WRITE_FIFO2XX:
SET FIFO_WF
EXIT_WRITE_FIFO2XX:
MOV A, MISC
MOV MP1, A
CLR ID1.TX
CALL USB_MISC_DELAY
CLR ID1.REQ
;CLR RF_MDATA_GOT
RET
WRITE_FIFO1:
CLR FIFO_WF1
MOV A, 0
MOV BP, A
MOV A, EP1_BUFF
MOV MP1, A
MOV A, RF_INBUFF
MOV MP0, A
INC MP0
INC MP0
INC MP0
MOV A, ID0 ;modifier key
MOV ID1, A
INC MP0
INC MP1
CLR ID1 ;RESERVED BYTE
INC MP1
MOV A, ID0 ;key 1
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;key 2
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;key 3
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;key 4
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;key 5
MOV ID1, A
INC MP0
INC MP1
MOV A, ID0 ;key 6
MOV ID1, A
MOV A, 1
MOV BP, A
MOV A, EP1_BUFF
MOV MP0, A
MOV A, 8
MOV USB_LCOUNT, A
MOV A, MISC
MOV MP1, A
CLR ID1
MOV A, 008H
ORM A, ID1
CALL USB_MISC_DELAY
SET ID1.TX
CALL USB_MISC_DELAY
SET ID1.REQ
WFIFO1LOOP:
MOV A, MISC
MOV MP1, A
CALL USB_MISC_DELAY
SNZ ID1.READY
JMP FAIL_WRITE_FIFO1
MOV A, FIFO1
MOV MP1, A
MOV A, ID0
MOV ID1, A
INC MP0
SDZ USB_LCOUNT
JMP WFIFO1LOOP
JMP EXIT_WRITE_FIFO1
FAIL_WRITE_FIFO1:
SET FIFO_WF1
EXIT_WRITE_FIFO1:
MOV A, MISC
MOV MP1, A
CLR ID1.TX
CALL USB_MISC_DELAY
CLR ID1.REQ
RET
WRITE_FIFO1_ALLZERO:
MOV A, 0
MOV BP, A
MOV A, EP1_BUFF
MOV MP1, A
CLR ID1
INC MP1
CLR ID1
INC MP1
CLR ID1
INC MP1
CLR ID1
INC MP1
CLR ID1
INC MP1
CLR ID1
INC MP1
CLR ID1
INC MP1
CLR ID1
MOV A, 1
MOV BP, A
MOV A, EP1_BUFF
MOV MP0, A
MOV A, 8
MOV USB_LCOUNT, A
MOV A, MISC
MOV MP1, A
CLR ID1
MOV A, 008H
ORM A, ID1
CALL USB_MISC_DELAY
SET ID1.TX
CALL USB_MISC_DELAY
SET ID1.REQ
WFIFO1LOOP_AZ:
MOV A, MISC
MOV MP1, A
CALL USB_MISC_DELAY
SNZ ID1.READY
JMP FAIL_WRITE_FIFO1_AZ
MOV A, FIFO1
MOV MP1, A
MOV A, ID0
MOV ID1, A
INC MP0
SDZ USB_LCOUNT
JMP WFIFO1LOOP_AZ
JMP EXIT_WRITE_FIFO1_AZ
FAIL_WRITE_FIFO1_AZ:
EXIT_WRITE_FIFO1_AZ:
MOV A, MISC
MOV MP1, A
CLR ID1.TX
CALL USB_MISC_DELAY
CLR ID1.REQ
RET
Descript .Section at 0F00h 'code'
DEVICED:
DW 00112H, 00110H, 00000H, 00800H
DW 01410H, 02604H, 00100H, 00201H
DW 00100H
CONFIGURATIOND:
DW 00209H, 0003BH, 00102H, 00A00H
DW 07F32H
INTRFACE0D:
DW 00409H, 00000H, 00301H, 00001H
DW 00001H
HID0D:
DW 02109H, 00101H, 00100H, 03F22H
DW 07F00H
EP0D:
DW 00507H, 00381H, 00008H, 00A00H
INTERFACE1D:
DW 00409H, 00001H, 00301H, 00201H
DW 07F00H
HID1D:
DW 02109H, 00101H, 07F00H, 02201H, 00081H
EP1D:
DW 00507H, 00382H, 00008H, 00008H
KBREPORTD:
DW 00105H, 00609H, 001A1H, 00705H
DW 07F19H, 029E0H, 015E7H, 02500H, 00001H
DW 00175H, 00895H, 00281H, 00195H
DW 00875H, 00181H, 00595H, 00175H
DW 00805H, 00119H, 00529H, 00291H
DW 00195H, 00375H, 00191H, 00695H
DW 00875H, 00015H, 06525H, 00705H
DW 00019H, 06529H, 00081H, 000C0H
MICEREPORTD:
DW 00105H, 00209H, 001A1H, 00285H, 00109H
DW 000A1H, 00905H, 00119H, 00529H
DW 00015H, 00125H, 00595H, 00175H
DW 00281H, 00195H, 00375H, 00181H
DW 00105H, 03009H, 03109H, 03809H
DW 07F15H, 02581H, 0757FH, 07F08H, 00395H
DW 00681H, 07FC0H, 07FC0H
DW 00C05H
DW 00109H, 001A1H, 00185H, 00015H
DW 00125H, 00175H, 01395H, 07F09H, 000B5H
DW 07F09H, 009B6H, 009B7H, 009CDH, 000E2H
DW 07F09H, 009E9H, 00AEAH, 0018AH, 0000AH
DW 00221H, 0230AH, 00A02H, 00224H
DW 0250AH, 00A02H, 00226H, 0270AH
DW 00A02H, 0022AH, 07F0AH, 00192H, 0000AH
DW 00194H, 07F0AH, 00183H, 07F0AH, 00194H, 06281H, 07F95H
DW 07505H, 07F01H, 00381H, 000C0H
LANGID:
DW 00304H, 00409H
ManufactureS:
DW 0030eh, 00048h, 0004fh, 0004ch, 00054h, 00045h, 0004bh ;HOLTEK
PRODUCTS:
DW 0031AH, 00055H, 00053H, 00042H
DW 00020H, 0004BH, 00065H, 00079H
DW 00062H, 0006FH, 00061H, 00072H
DW 00064H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -