⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb_oper.asm

📁 holtek mouse usb asm. FW
💻 ASM
📖 第 1 页 / 共 2 页
字号:
			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 + -