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

📄 std1.lst

📁 合泰USB键盘程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
 203  0045              EndpointStatusCF:                               ;clear stall flag
 204  0045              ;Check Feature Selector
 205  0045  1080     E                  SZ     	FIFO_wValueL          	;ENDPOINT_STALL = 0 ?
 206  0046  2800     E  				JMP		ToStallPipe0            ;No
 207  0047              
 208  0047              ;Check	Endpoint Number
 209  0047              ;				snz		fifo_windexL.7
 210  0047              ;				jmp		ToStallpipe0
 211  0047  0700     E                  MOV     A,FIFO_wIndexL        	;Get endpoint number
 212  0048  0E7F        				and		a,01111111b
 213  0049  0200     E  				SUB		A,FIFO_temp
 214  004A  3C0A        				SZ		C
 215  004B  2800     E  				JMP		ToStallPipe0
 216  004C              
 217  004C  0700     E  				MOV		A,FIFO_wIndexL
 218  004D                  ;Is it necessary to check endpoint number range ?
 219  004D  0E0F                        AND     A,0FH                   ;Ignore direction
 220  004E  2000     E  				call	GetPipeBit
 221  004F  2000     E                  CALL    ClearStall              ;Clear endpoint stall
 222  0050                  ;Is it necessary to check clear completely ?
 223  0050  2800     E                  JMP     SendHandshake           ;send handshake flag
 224  0051              ;-----------------------------------------------------------------------------------
 225  0051              
 226  0051              DeviceStatusCF:
 227  0051              ;Check Feature Selector
 228  0051  0700     E                  MOV     A,FIFO_wValueL        	;DEVICE_REMOTE_WAKEUP = 1 ?
 229  0052  0C01                        XOR     A,01H                   ;
 230  0053  390A                        SNZ     Z                       ;
 231  0054  2800     E                  JMP		ToStallPipe0            ;No
 232  0055              
 233  0055  1080     E                  SZ      FIFO_wIndexL          	;Is wIndex == 0 ?
"File: STD1.ASM      Holtek Cross-Assembler  Version 2.86      Page 5

 234  0056  2800     E                  JMP		ToStallPipe0            ;No
 235  0057              	;disable remote wakeup          			;Yes
 236  0057  3400     E                  CLR     bRmtWakeup   			;disable remote wakeup (flag)
 237  0058  1800     E  				rla		cmd_addr
 238  0059  0EFE        				and		a,11111110b
 239  005A  0080     E  				mov		fifo_addr,a
 240  005B  3400     E                  CLR     ADDR_Wake  				;Clear remote wakeup flag
 241  005C              
 242  005C  2920                        JMP     SetAddrWake       		;send handshake flag
 243  005D              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 244  005D              
 245  005D              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 246  005D              GetStatus:
 247  005D                              ;Check bmRequestType direction
 248  005D  3800     E                  SNZ     FIFO_Type.@Setup_D    	;Device to Host ?
 249  005E  2800     E                  JMP		ToStallPipe0            ;No: Error
 250  005F              
 251  005F  1080     E  				SZ      FIFO_wIndexH      		;Is wIndex == 0 ?
 252  0060  2800     E                  JMP		ToStallPipe0        	;No
 253  0061                             
 254  0061              
 255  0061  0700     E                  MOV     A,FIFO_Type           	;Type (Device, Interface or
 256  0062  0E1F                        AND     A,Setup_Rev             ;   Endpoint)
 257  0063  0080     E                  MOV     TEMP,A
 258  0064              ;!!!!! Need in same page
 259  0064  0A04                        SUB     A,04H                   ;Over 4 item ?
 260  0065  3C0A                        SZ      C                       ;
 261  0066  2800     E                  JMP		ToStallPipe0            ;Yes
 262  0067  0700     E                  MOV     A,TEMP
 263  0068              get_status_pcl_5:
 264  0068  0386                        ADDM    A,PCL
 265  0069  288B                        JMP     DeviceStatusS
 266  006A  2894                        JMP     InterfaceStatusS
 267  006B  287A                        JMP     EndpointStatusS
 268  006C  2800     E                  JMP		ToStallPipe0
 269  006D              ;-----------------------------------------------------------------------------------
 270  006D              EndpointStatusS:
 271  006D  0700     E                  MOV		A,FIFO_wIndexL
 272  006E  0E7F        				and		a,01111111b
 273  006F  0200     E  				SUB		A,fifo_temp
 274  0070  3C0A        				SZ		C
 275  0071  2800     E  				JMP		ToStallPiPe0	
 276  0072                  ;Don't care direction, maybe it's neccesary.
 277  0072  0F0F                        MOV     A,0FH               	;Ignore direction (D7)
 278  0073  0600     E                  AND	    A,FIFO_wIndexL    		;get stall pipe number
 279  0074  2000     E                  CALL    GetPipeBit          	;and transform to bitmap
 280  0075  0080     E                  MOV     FIFO_TEMP,A
 281  0076  0700     E                  MOV     A,STALL           		;get stall status into ACC
 282  0077              ShiftLoop:
 283  0077  1B80     E                  RRC     FIFO_TEMP         		;Shift stall bit to D0
 284  0078  3C0A                        SZ      C                   	;
 285  0079  2889                        JMP     FoundStall          	;
 286  007A  1985                        RR      ACC                 	;
 287  007B  2884                        JMP     ShiftLoop           	;
 288  007C              FoundStall:
 289  007C  0E01                        AND     A,01H               	;mask bits except stall bit
 290  007D  2890                        JMP     SendEndpointStsS    	;Send endpoint status
 291  007E              ;-----------------------------------------------------------------------------------
 292  007E              DeviceStatusS:
 293  007E  1080     E                  SZ      FIFO_wIndexL      		;Is wIndex == 0 ?
"File: STD1.ASM      Holtek Cross-Assembler  Version 2.86      Page 6

 294  007F  2800     E                  JMP		ToStallPipe0        	;No
 295  0080              
 296  0080  1F05        				clr		acc
 297  0081  3C00     E  				sz		bRmtwakeup
 298  0082  3085        				set		acc.1	
 299  0083              SendEndpointStsS:
 300  0083  0080     E                  MOV     FIFO_OUT1,A       		;low byte
 301  0084  1F00     E                  CLR     FIFO_OUT2         		;high byte = 00H
 302  0085  0F02                        MOV     A,02H             		;data length = 2
 303  0086  2800     E                  JMP     SendFIFOOut       		;Send it
 304  0087              ;-----------------------------------------------------------------------------------
 305  0087              InterfaceStatusS:
 306  0087  3C00     E  				sz		baddr_state
 307  0088  2800     E  				jmp		TOstallpipe0
 308  0089  0700     E                  MOV		A,FIFO_wIndexL
 309  008A  0A02        				SUB     A,INTERFACE_NO         	;Over 2 Interface ?
 310  008B  3C0A                        SZ      C                   	;
 311  008C  2800     E                  JMP		ToStallPipe0        	;Yes
 312  008D              
 313  008D              ;No Matter which Interface
 314  008D  1F00     E                  CLR     FIFO_OUT1         		;low byte = 00H
 315  008E  1F00     E                  CLR     FIFO_OUT2         		;high byte = 00H
 316  008F  0F02                        MOV     A,02H               	;data length = 2
 317  0090  2800     E                  JMP     SendFIFOOut         	;Send it
 318  0091              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 319  0091              
 320  0091              
 321  0091              
 322  0091              ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 323  0091              ;Get string descriptor
 324  0091              GetStringDes:
 325  0091              
 326  0091  1080     E                  SZ      FIFO_wIndexH
 327  0092  28AF                        JMP		get_other_string
 328  0093                      		;FIFO_wIndexL = Language ID
 329  0093  1080     E  				sz		fifo_windexl
 330  0094  28AF        				jmp		get_other_string
 331  0095  1080     E  				sz		fifo_wvaluel
 332  0096  2800     E  				jmp		tostallpipe0
 333  0097              
 334  0097              get_string:		
 335  0097  0700     E  				mov		a,fifo_wvaluel
 336  0098  0A03        				sub		a,3
 337  0099  3C0A        				sz		c
 338  009A  2800     E  				jmp		Tostallpipe0
 339  009B              
 340  009B  0F00     E  				mov		a,low LangID					;00
 341  009C  3C00     E  				sz		fifo_wvaluel.0
 342  009D  0F00     E  				mov		a,low ManufactureS				;01
 343  009E  3C00     E  				sz		fifo_wvaluel.1
 344  009F  0F00     E  				mov		a,low ProductS					;10
 345  00A0              
 346  00A0  0087                        MOV     TBLP,A                  ;
 347  00A1  298B                        JMP     ReadTableAndSendcnf        ;Read Device table and send it
 348  00A2              
 349  00A2              get_other_string:
 350  00A2  0700     E  				mov		a,fifo_windexH
 351  00A3  0C04        				xor		a,LAND_ID_H
 352  00A4  390A        				snz		z
 353  00A5  2800     E  				jmp		ToStallPipe0
"File: STD1.ASM      Holtek Cross-Assembler  Version 2.86      Page 7

 354  00A6              
 355  00A6  0700     E  				mov		a,fifo_windexl
 356  00A7  0C09        				xor		a,LAND_ID_L
 357  00A8  390A        				snz		z
 358  00A9  2800     E  				jmp		TOStallpipe0
 359  00AA  28A4        				jmp		get_string
 360  00AB              
 361  00AB              ;Standard--------------------------------------------------------------------
 362  00AB              ;Get device descriptor
 363  00AB              std_des_start_pcl:
 364  00AB              GetDeviceDes:
 365  00AB  1080     E                  SZ      FIFO_wIndexH
 366  00AC  2800     E                  JMP		ToStallPipe0
 367  00AD  1080     E                  SZ      FIFO_wIndexL
 368  00AE  2800     E                  JMP		ToStallPipe0
 369  00AF              
 370  00AF  0F00     E                  MOV     A,LOW DeviceD           ;Set table pointer to device
 371  00B0  0087                        MOV     TBLP,A                  ;  table
 372  00B1  298B                        JMP     ReadTableAndSendcnf     ;Read Device table and send it
 373  00B2              ;----------------------------------------------------------------------------------------------
 374  00B2              
 375  00B2              ;(Configuration, interface & endpoint) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 376  00B2              GetConfigurationDes:
 377  00B2                              ;Configuration
 378  00B2  1080     E                  SZ      FIFO_wIndexH
 379  00B3  2800     E                  JMP		ToStallPipe0
 380  00B4  1080     E                  SZ      FIFO_wIndexL          	;report ID 0 ?
 381  00B5  2800     E                  JMP		ToStallPipe0            ;
 382  00B6              
 383  00B6              
 384  00B6  0F00     E                  MOV     A,LOW ConfigurationD    ;Set table pointer to
 385  00B7  0087                        MOV     TBLP,A                  ;configuration
 386  00B8  0FC8                        MOV     A,LOW GetInterfaceDes 	;Save Return Address
 387  00B9  0080     E                  MOV     ReturnAddr,A            ;to ReturnAddr
 388  00BA  298B                        JMP     ReadTableAndSendCnf     ;Read configuration table
 389  00BB                                                              ;and send it
 390  00BB              ;----------------------------------------------------------------------------------------------
 391  00BB              
 392  00BB              GetInterfaceDes:
 393  00BB                              ;Interface
 394  00BB  200D        				call	get_Interface_des_adr
 395  00BC  0087        				MOV     TBLP,A                  ;configuration
 396  00BD              
 397  00BD  0FCD                        MOV     A,LOW GetHIDDes    		;Save Return Address
 398  00BE  0080     E                  MOV     ReturnAddr,A          	;to ReturnAddr
 399  00BF  298F                        JMP     GetTableLength
 400  00C0              ;----------------------------------------------------------------------------------------------
 401  00C0              
 402  00C0              GetHIDDes:
 403  00C0                              ;HID
 404  00C0  2011        				call	get_HID_des_adr
 405  00C1  0087                        MOV     TBLP,A                  ;  configuration
 406  00C2  0FD2                        MOV     A,LOW GetEndpointDes    ;Set Return Address
 407  00C3  0080     E                  MOV     ReturnAddr,A          	;  to ReturnAddr
 408  00C4  298F                        JMP     GetTableLength
 409  00C5              ;----------------------------------------------------------------------------------------------
 410  00C5              
 411  00C5              GetEndpointDes:
 412  00C5                              ;Endpoint
 413  00C5  2015        				call	get_endpt_des_adr

⌨️ 快捷键说明

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