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

📄 usb_oper.lst

📁 holtek mouse usb asm. FW
💻 LST
📖 第 1 页 / 共 5 页
字号:
"File: USB_OPER.ASM  Holtek Cross-Assembler  Version 2.86      Page 1


   1  0000              INCLUDE		DONGLE.INC


   2  0000              
   3  0000              
   4  0000              PUBLIC		INIT_USB
   5  0000              PUBLIC		USB_ROUTINE
   6  0000              PUBLIC		WRITE_FIFO2
   7  0000              PUBLIC		WRITE_FIFO2X
   8  0000              PUBLIC		WRITE_FIFO2XX
   9  0000              
  10  0000              PUBLIC		WRITE_FIFO1
  11  0000              PUBLIC		WRITE_FIFO1_ALLZERO
  12  0000              PUBLIC		USB_CONFIGURATION_DONE
  13  0000              PUBLIC		FIFO_WF
  14  0000              PUBLIC		FIFO_WF1
  15  0000              PUBLIC		NOT_BOOT_TYPE
  16  0000              EXTERN		RF_KDATA_GOT:BIT
  17  0000              EXTERN		RF_MDATA_GOT:BIT
  18  0000              ;PUBLIC		WRITE_USB_CIRCLE
  19  0000              ;PUBLIC	TEST_V
  20  0000              USB_OPERDATA	.SECTION	'DATA'
  21  0000              
  22  0000  00          EP0_READY				DBIT
  23  0000              EP1_READY				DBIT
  24  0000              EP2_READY				DBIT
  25  0000              USB_CONFIGURATION_DONE	DBIT
  26  0000              ZERO_IN_TOKEN_REQUIRED	DBIT
  27  0000              USB_SUSPENDED			DBIT
  28  0000              FIFO_WF					DBIT
  29  0000              FIFO_WF1				DBIT
  30  0001  00          NOT_BOOT_TYPE			DBIT
  31  0002              
  32  0002  00          USB_LCOUNT				DB			?
  33  0003  00          USB_DATALENGTH			DB			?
  34  0004              
  35  0004  00          BYTE_REST				DB			?
  36  0005  00          BYTE_POS				DB			?
  37  0006  00          BYTE_SADDR				DB			?	
  38  0007  00          USB_SUSPEND_CNT			DB			?	
  39  0008              
  40  0008              ;PLUSONE				DBIT
  41  0008              ;CIRCLE_STEP			DB			?
  42  0008              ;DX						DB			?
  43  0008              ;DY						DB			?
  44  0008              ;TEST_V	DB	?
  45  0008  00          BIGGER_THAN_8_TEMP		DB	?
  46  0009              
  47  0000              USB_OPERCODE	.SECTION	'CODE'
  48  0000              
  49  0000              INIT_USB:
  50  0000              
  51  0000  0F40        			MOV		A, 040H				;Clear SCC options
  52  0001  009C        			MOV		SCC, A				;Select 6MHz
  53  0002              
  54  0002  361B        			CLR		USR.4				;Necessary steps; to ensure the interface selection
  55  0003  369B        			CLR		USR.5				;is the correct one
  56  0004              
  57  0004  0F43        			MOV		A, STALL
"File: USB_OPER.ASM  Holtek Cross-Assembler  Version 2.86      Page 2

  58  0005  0083        			MOV		MP1, A
  59  0006  3482        			CLR		ID1.1
  60  0007  3502        			CLR		ID1.2
  61  0008              
  62  0008  361B        			CLR		USR.4				;NOT SELECT PS/2 INTERFACE
  63  0009  329B        			SET		USR.5				;SELECT USB INTERFACE
  64  000A  339B        			SET		USR.7				;USB MODE
  65  000B  361C        			CLR		SUSP2
  66  000C  319C        			SET		SCC.3				;TURN USB CLOCK
  67  000D              
  68  000D  0F41        			MOV		A, 041H
  69  000E  0083        			MOV		MP1, A
  70  000F  0F06        			MOV		A, 06H
  71  0010  0082        			MOV		ID1, A
  72  0011              
  73  0011              			;CLR		CIRCLE_STEP
  74  0011              
  75  0011  3400     R  			CLR		EP1_READY
  76  0012  3400     R  			CLR		EP2_READY
  77  0013              
  78  0013  0003        			RET
  79  0014              
  80  0014              USB_ROUTINE:
  81  0014  3A0B        			SNZ		USBF		;CHECK IF THERE IS ANY USB EVENT, IF NO,
  82  0015  2800     R  			JMP		EXIT_USB_ROUTINE;THEN EXIT USB ROUTINE
  83  0016              			
  84  0016  3D1A        			SZ		URST		;CHECK IF USB RESET SIGNAL IS RECEIVED,
  85  0017  2800     R  			JMP		HANDLE_USBRST	;IF SO, HANDLE IT 
  86  0018              
  87  0018  3C1A        			SZ		SUSP
  88  0019  2800     R  			JMP		HANDLE_SUSPEND	;IF SUSPEND STATUS IS DETECTED, PROCESS IT
  89  001A              
  90  001A  3D9A        			SZ		RESUME
  91  001B  2800     R  			JMP		HANDLE_RESUME	
  92  001C              
  93  001C  3C1B        			SZ		EP0IF		;CHECK IF THERE IS ANY USB PACKET SENT BY PC,
  94  001D  2800     R  			JMP		HANDLE_EP0	;IF SO, HANDLE IT
  95  001E              
  96  001E  3C9B        			SZ		EP1IF		;CHECK IF THE HOST HAS ACCESS THE EP1,
  97  001F  2800     R  			JMP		HANDLE_EP1	;IF SO, MEANS THAT WE CAN PUT MORE DATA TO THE FIFO1
  98  0020              
  99  0020  3D1B        			SZ		EP2IF		;CHECK IF THE HOST HAS ACCESS THE EP2,
 100  0021  2800     R  			JMP		HANDLE_EP2	;IF SO, MEANS THAT WE CAN PUT MORE DATA TO THE FIFO2
 101  0022              					
 102  0022              
 103  0022  2800     R  			JMP		EXIT_USB_ROUTINE
 104  0023              
 105  0023              	HANDLE_RESUME:
 106  0023  3400     R  			CLR		USB_SUSPENDED
 107  0024  319C        			SET		USBCKEN
 108  0025  2800     R  			JMP		EXIT_USB_ROUTINE
 109  0026              
 110  0026              	HANDLE_SUSPEND:
 111  0026  1480     R  			INC		USB_SUSPEND_CNT
 112  0027  0F0F        			MOV		A, 00FH
 113  0028  0400     R  			XOR		A, USB_SUSPEND_CNT
 114  0029  1085        			SZ		ACC
 115  002A  2800     R  			JMP		EXIT_USB_ROUTINE
 116  002B              
 117  002B  3000     R  			SET		USB_SUSPENDED
"File: USB_OPER.ASM  Holtek Cross-Assembler  Version 2.86      Page 3

 118  002C  359C        			CLR		USBCKEN
 119  002D  2800     R  			JMP		EXIT_USB_ROUTINE
 120  002E              			;HALT
 121  002E              
 122  002E              	HANDLE_EP1:
 123  002E  349B        			CLR		EP1IF
 124  002F  3000     R  			SET		EP1_READY
 125  0030              			;SET		USB_CONFIGURATION_DONE
 126  0030  2800     R  			JMP		EXIT_USB_ROUTINE
 127  0031              
 128  0031              	HANDLE_EP2:
 129  0031  351B        			CLR		EP2IF
 130  0032  3000     R  			SET		EP2_READY
 131  0033              			;SET		USB_CONFIGURATION_DONE
 132  0033  2800     R  			JMP		EXIT_USB_ROUTINE
 133  0034              
 134  0034              	HANDLE_USBRST:
 135  0034  341B        			CLR		EP0IF
 136  0035  349B        			CLR		EP1IF
 137  0036  351B        			CLR		EP2IF
 138  0037              
 139  0037  3400     R  			CLR		EP0_READY
 140  0038  3400     R  			CLR		EP1_READY
 141  0039  3400     R  			CLR		EP2_READY
 142  003A  3400     R  			CLR		USB_CONFIGURATION_DONE
 143  003B  3400     R  			CLR		ZERO_IN_TOKEN_REQUIRED
 144  003C  3400     R  			CLR		USB_SUSPENDED
 145  003D  319C        			SET		USBCKEN
 146  003E  1F00     R  			CLR		USB_SUSPEND_CNT
 147  003F  3000     R  			SET		NOT_BOOT_TYPE
 148  0040  351A        			CLR		URST
 149  0041              
 150  0041              	EXIT_USB_ROUTINE:
 151  0041  360B        			CLR		USBF
 152  0042              
 153  0042  0003        			RET
 154  0043              
 155  0043              
 156  0043              HANDLE_EP0:
 157  0043              
 158  0043  0F46        			MOV		A, MISC
 159  0044  0083        			MOV		MP1, A
 160  0045              
 161  0045  3A82        			SNZ		ID1.SCMD
 162  0046  2800     R  			JMP		CHECK_IF_INTOKEN
 163  0047              
 164  0047  2800     R  			JMP		EP0_SETUPHANDLE
 165  0048              
 166  0048  2800     R  			JMP		EXIT_HANDLE_EP0
 167  0049              
 168  0049              	CHECK_IF_INTOKEN:
 169  0049  0F45        			MOV		A, SIE
 170  004A  0083        			MOV		MP1, A
 171  004B              
 172  004B  3982        			SNZ		ID1.IN			;CHECK IF ANY USB OUT-TOKEN IS RECEIVED
 173  004C  2800     R  			JMP		CHECK_IF_EP0_OUTTOKEN
 174  004D              
 175  004D  2000     R  			CALL	EP0_INHANDLE			;IF SO, HANDLE IT.
 176  004E  2800     R  			JMP		EXIT_HANDLE_EP0
 177  004F              
"File: USB_OPER.ASM  Holtek Cross-Assembler  Version 2.86      Page 4

 178  004F              	CHECK_IF_EP0_OUTTOKEN:
 179  004F  2000     R  			CALL	CHECK_EP0_FIFO_READY
 180  0050  3C00     R  			SZ		EP0_READY
 181  0051  2800     R  			JMP		EP0_OUTHANDLE
 182  0052              			;SZ		ID1.OUT			;CHECK IF ANY USB IN-TOKEN IS RECEIVED
 183  0052              			;JMP		EP0_OUTHANDLE		;IF SO, HANDLE IT.
 184  0052              		
 185  0052  2800     R  			JMP		EXIT_HANDLE_EP0
 186  0053              
 187  0053              	EP0_SETUPHANDLE:
 188  0053  3682        			CLR		ID1.SCMD
 189  0054  2000     R  			CALL	READ_FIFO0			;READ IN USB SETUP-TOKEN PACKET
 190  0055  2000     R  			CALL	EP0_SETPACKET_ANALY		;ANALYIZE WHAT THE HOST WANT TO
 191  0056              
 192  0056  2800     R  			JMP		EXIT_HANDLE_EP0
 193  0057              
 194  0057              	EP0_OUTHANDLE:
 195  0057              			;SNZ		ID1.LEN0
 196  0057  2000     R  			CALL	READ_FIFO0
 197  0058  3400     R  			CLR		EP0_READY
 198  0059  3502        			CLR		ID1.OUT
 199  005A              
 200  005A  3800     R  			SNZ		ZERO_IN_TOKEN_REQUIRED
 201  005B  2800     R  			JMP		EXIT_HANDLE_EP0
 202  005C              
 203  005C  3400     R  			CLR		ZERO_IN_TOKEN_REQUIRED
 204  005D  2000     R  			CALL	WRITE_LEN0_TOFIFO0
 205  005E              
 206  005E              	EXIT_HANDLE_EP0:
 207  005E              
 208  005E  341B        			CLR		EP0IF
 209  005F              
 210  005F  2800     R  			JMP		EXIT_USB_ROUTINE
 211  0060              
 212  0060              EP0_SETPACKET_ANALY:
 213  0060              
 214  0060  0F90        			MOV		A, EP0_BUFF
 215  0061  0081        			MOV		MP0, A
 216  0062              
 217  0062  0700        			MOV		A, ID0
 218  0063  0E60        			AND		A, 060H
 219  0064              
 220  0064  0C00        			XOR		A, 00H	
 221  0065  1085        			SZ		ACC
 222  0066  2800     R  			JMP		NEXT_CHECK_EP0_0
 223  0067              
 224  0067              			;THIS IS THE HOTS-TO-DEVICE, STANDARD COMMAND
 225  0067              
 226  0067  1481        			INC		MP0
 227  0068  0700        			MOV		A, ID0
 228  0069              
 229  0069              			;SZ		USB_CONFIGURATION_DONE
 230  0069  360E        			CLR		[0EH].4
 231  006A  0386        			ADDM	A, PCL
 232  006B  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY		;0:GET_STATUS
 233  006C  2800     R  			JMP		SETCLR_FEATURE					;1:CLEAR_FEATURE
 234  006D  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY		;2:RESERVED
 235  006E  2800     R  			JMP		SETCLR_FEATURE					;3:SET_FEATURE
 236  006F  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY		;4:RESERVED
 237  0070  2800     R  			JMP		SET_ADDRESS						;5:SET_ADDRESS
"File: USB_OPER.ASM  Holtek Cross-Assembler  Version 2.86      Page 5

 238  0071  2800     R  			JMP		GET_DESCRIPTOR					;6:GET_DESCRIPTOR
 239  0072  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY		;7:SET_DESCRIPTOR
 240  0073  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY		;8:GET_CONFIGURATION
 241  0074  2800     R  			JMP		SET_CONFIGURATION				;9:SET_CONFIGURATION
 242  0075  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY		;A:GET_INTERFACE
 243  0076  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY		;B:SET_INTERFACE
 244  0077  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY		;C:SYNCH_FRAME
 245  0078              
 246  0078              			;THIS IS HOTS-TO-DEVICE, STANDARD, SET/CLEAR_CONFIGURATION COMMAND
 247  0078              	SETCLR_FEATURE:
 248  0078  3C00     R  			SZ		USB_CONFIGURATION_DONE
 249  0079  320E        			SET		[0EH].4
 250  007A  0F43        			MOV		A, STALL
 251  007B  0083        			MOV		MP1, A
 252  007C              	
 253  007C  3402        			CLR		ID1.STALL0						
 254  007D              
 255  007D  2000     R  			CALL	WRITE_LEN0_TOFIFO0
 256  007E              
 257  007E              
 258  007E  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY
 259  007F              
 260  007F              
 261  007F              			;THIS IS HOTS-TO-DEVICE, STANDARD, SET_ADDRESS COMMAND
 262  007F              	SET_ADDRESS:
 263  007F  3C00     R  			SZ		USB_CONFIGURATION_DONE	
 264  0080  320E        			SET		[0EH].4
 265  0081  1F00     R  			CLR		BYTE_REST
 266  0082              
 267  0082  0F45        			MOV		A, SIE
 268  0083  0083        			MOV		MP1, A
 269  0084  0F01        			MOV		A, 01H
 270  0085  0582        			ORM		A, ID1
 271  0086              
 272  0086  0F42        			MOV		A, AWR
 273  0087  0083        			MOV		MP1, A			
 274  0088              
 275  0088  1481        			INC		MP0
 276  0089  0700        			MOV		A, ID0
 277  008A  1885        			RL		ACC
 278  008B  0EFE        			AND		A, 0FEH
 279  008C  0082        			MOV		ID1, A
 280  008D              			
 281  008D  2000     R  			CALL	WRITE_LEN0_TOFIFO0
 282  008E              			
 283  008E  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY
 284  008F              
 285  008F              			;THIS IS HOTS-TO-DEVICE, STANDARD, SET_CONFIGURATION COMMAND
 286  008F              	SET_CONFIGURATION:
 287  008F  3C00     R  			SZ		USB_CONFIGURATION_DONE
 288  0090  320E        			SET		[0EH].4
 289  0091  2000     R  			CALL	WRITE_LEN0_TOFIFO0
 290  0092              
 291  0092              			;SET		USB_CONFIGURATION_DONE
 292  0092              
 293  0092  2800     R  			JMP		EXIT_EP0_OUTPACKET_ANALY
 294  0093              
 295  0093              
 296  0093              			;THIS IS HOST-TO-DEVICE, STANDARD, GET_DESCRIPTOR COMAND
 297  0093              	GET_DESCRIPTOR:
"File: USB_OPER.ASM  Holtek Cross-Assembler  Version 2.86      Page 6

 298  0093              			;SZ		USB_CONFIGURATION_DONE
 299  0093              			;SET		[0EH].4
 300  0093  1481        			INC		MP0
 301  0094  1481        			INC		MP0
 302  0095              
 303  0095  0700        			MOV		A, ID0
 304  0096  0EF0        			AND		A, 0F0H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -