📄 class_request.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 + -