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

📄 class_request.asm

📁 以&#1049307 &#1049319 &#1049287 &#1049289 &#1049317 &#1049301 &#1049288 &#1049283 为核心设计的&#1049320 &#1
💻 ASM
字号:
;;Established date:                  2006/03/01

;;********************************************************************
L_ClassRequest:
	MOV	A,T_RequestType
	AND	A,1FH
	MOV	M_TEMP1,A
	SUB	A,04H
	SZ	C
	JMP	L_StallPipe0
	
	MOV	A,M_TEMP1		
	ADDM	A,PCL
	JMP	L_StallPipe0
	JMP	L_InterfaceReciver		;RequestType=1000 0001?
	JMP	L_StallPipe0
	JMP	L_StallPipe0
L_InterfaceReciver:
	SZ	T_IndexH                         
	JMP	L_StallPipe0			;IndexH!=0,error!
	MOV	A,T_IndexL
	SUB	A,C_InterfaceNO			
	SZ	C
	JMP	L_StallPipe0			;IndexL>=2,error

	MOV	A,T_RequestNUM
	SUB	A,0CH
	SZ	C
	JMP	L_StallPipe0			;RequesetNUM>=12,error!
	MOV	A,T_RequestNUM
	ADDM	A,PCL
	JMP	L_StallPipe0			;;0
	JMP	L_GetReport			;;1
	JMP	L_GetIdle			;;2
	JMP	L_GetProtocol			;;3
	JMP	L_StallPipe0			;;4
	JMP	L_StallPipe0			;;5
	JMP	L_Stallpipe0			;;6
	JMP	L_StallPipe0			;;7
	JMP	L_StallPipe0			;;8
;;	JMP	L_SetReport			;;9
	JMP	L_StallPipe0			;;no suport
	JMP	L_SetIdle			;;A
	JMP	L_SetProtocol			;;B
;;********************************************************************

L_GetReport:
	SNZ	T_RequestType.7                 
	JMP	L_StallPipe0 			;check RequestType.7       
	MOV	A,T_ValueH			;check Report Type.(1:in 2:out 3:feature)
	SUB	A,C_ReportType           
	SZ	C
	JMP	L_StallPipe0
	MOV	A,T_ValueH 
	ADDM	A,PCL
	JMP	L_StallPipe0
	JMP	L_GetInputReport                
	JMP	L_StallPipe0                    
L_GetFeatureReport:                                 
	JMP	L_StallPipe0
L_GetInputReport:
	SZ	T_LengthH			;report size
	JMP	L_StallPipe0
	MOV	A,T_IndexL
	ADDM	A,PCL				;????
	JMP	L_GetCOMDataInput
	JMP	L_StallPipe0
L_GetCOMDataInput:
	MOV	A,T_LengthL
	XOR	A,C_ReportSize
	SNZ	Z
	JMP	L_StallPipe0
		
;;	MOV	A,M_ReBufferAddress
;;	SUB	A,R_TrBufferAddress
;;	SZ	Z
;;	JMP	L_StallPipe0
;;	JMP	L_COMToUSB
;;-------------------------------------------------------------------
;;L_COMZero:
;;	CLR	F_DataUpdate
;;	CLR	M_FIFOBAK0
;;	JMP	L_SendFIFO
;;--------------------------------------------------------------------
;;L_COMToUSB:
;;	give data from COM
;;--------------------------------------------------------------------
L_SendFIFO:
	MOV	A,C_ReportSize
	MOV	M_FIFOBAK0,A
	MOV	A,55H
	MOV	M_FIFOBAK1,A
	MOV	M_FIFOBAK2,A
	MOV	M_FIFOBAK3,A
	MOV	M_FIFOBAK4,A
	MOV	M_FIFOBAK5,A
	MOV	M_FIFOBAK6,A
	MOV	M_FIFOBAK7,A                             
	MOV	A,C_ReportSize                   
	JMP	L_WriteDataToFIFO_AnyBytes
;;********************************************************************
L_GetIdle:
	SNZ	T_RequestType.7
	JMP	L_StallPipe0
	SZ	T_ValueH
	JMP	L_StallPipe0
	SZ	T_LengthH                       
	JMP	L_StallPipe0
	MOV	A,T_LengthL                     
	XOR	A,01H
	SNZ	Z
	JMP	L_StallPipe0
	MOV	A,M_IdleTime
	SZ	T_IndexL			;;0-KB, 1-Mouse
	JMP	L_StallPipe0
;;	MOV	M_FIFOBAK1,A
	MOV	M_FIFOBAK0,A			
	MOV	A,01H                 
	JMP	L_WriteDataToFIFO_AnyBytes
;;********************************************************************
L_GetProtocol:
	SNZ	T_RequestType.7
	JMP	L_StallPipe0
	SZ	T_ValueL
	JMP	L_StallPipe0
	SZ	T_ValueH
	JMP	L_StallPipe0

	SZ	T_LengthH
	JMP	L_StallPipe0
	MOV	A,T_LengthL
	XOR	A,01H
	SNZ	Z
	JMP	L_StallPipe0

	CLR	ACC
	SZ	T_IndexL                       
	JMP	L_StallPipe0
	SZ	F_ReportProtocol
	SET	ACC.0
	MOV	M_FIFOBAK0,A
	MOV	A,01H                          
;;	JMP         L_WriteDataToFIFO_0_Packet		;????
	JMP	L_WriteDataToFIFO_AnyBytes
;;********************************************************************
L_SetReport:
	SNZ	T_RequestType.7
	JMP	L_StallPipe0
	MOV	A,T_ValueH
	SUB	A,04H
	SZ	C
	JMP	L_StallPipe0
	MOV	A,T_ValueH
	ADDM	A,PCL
	JMP	L_StallPipe0
	JMP	L_StallPipe0
	JMP	L_SetOutputReport		;Output report
L_SetFeatureReport:
	JMP	L_StallPipe0
L_SetOutputReport:
	SZ	T_IndexL
	JMP	L_StallPipe0
	SZ	T_LengthL
	XOR	A,08H
	SNZ	Z
	JMP	L_StallPipe0
	MOV	A,C_SetReport
	MOV	M_ReportIndex,A
	JMP	L_Exit_ISRUSB
;;********************************************************************
L_SetIdle:
	SZ	T_LengthL
	JMP	L_StallPipe0
	SZ	T_LengthH
	JMP	L_StallPipe0
;;	MOV	A,OFFSET R_IdleTime
	SZ	T_IndexL                        
	JMP	L_StallPipe0
;;	MOV	MP0,A
	MOV	A,T_ValueH                      
;;	MOV	R0,A
	MOV	M_IdleTime,A
	JMP	L_WriteDataToFIFO_0_Packet
;;********************************************************************
L_SetProtocol:
	MOV	A,T_LengthL                     
	ADD 	A,T_LengthH
	SNZ	Z
	JMP	L_StallPipe0
	SZ	T_ValueH
	JMP	L_StallPipe0
	SZ	T_IndexL                       
	JMP	L_StallPipe0
	CLR	F_ReportProtocol
	SZ	T_ValueL
	SET	F_ReportProtocol               
	JMP	L_WriteDataToFIFO_0_Packet
;;********************************************************************

⌨️ 快捷键说明

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