📄 class_request.asm
字号:
;;Established date: 2005/09/01
;;********************************************************************
L_ClassRequest:
MOV A,T_RequestType
AND A,1FH
MOV R_TEMP1,A
SUB A,04H
SZ C
JMP L_StallPipe0
MOV A,R_TEMP1
ADDM A,PCL
JMP L_StallPipe0
JMP L_InterfaceReciver
JMP L_StallPipe0
JMP L_StallPipe0
L_InterfaceReciver:
SZ T_IndexH
JMP L_StallPipe0
MOV A,T_IndexL
SUB A,C_InterfaceNO
SZ C
JMP L_StallPipe0
MOV A,T_RequestNUM
SUB A,0CH
SZ C
JMP L_StallPipe0
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_SetIdle ;;A
JMP L_SetProtocol ;;B
;;********************************************************************
L_GetReport:
SNZ T_RequestType.7
JMP L_StallPipe0
MOV A,T_ValueH
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
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_InReportSize
SNZ Z
JMP L_StallPipe0
SNZ F_DataReady
JMP L_StallPipe0
JMP L_COMToUSB
;;-------------------------------------------------------------------
L_COMZero:
CLR F_DataUpdate
CLR R_FIFOBAK0
JMP L_SendFIFO
;;--------------------------------------------------------------------
L_COMToUSB: ;this routine never used
CLR F_DataUpdate
MOV A,08H
MOV R_InputReportDataSize,A
MOV A,OFFSET R_ReceiveBuffer
MOV MP0,A
MOV A,MP1
MOV R_Tmp1,A ;save mp1
MOV A,OFFSET R_FIFOBAK0
MOV MP1,A
L_LoopLoadDataToFifoBuffer2:
MOV A,R0
MOV R1,A
INC MP0
INC MP1
SDZ R_InputReportDataSize
JMP L_LoopLoadDataToFifoBuffer2
L_SendFIFO:
MOV A,R_Tmp1
MOV MP1,A ;restore MP1
MOV A,C_InReportSize
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,R_IdleTime
SZ T_IndexL ;;0-KB, 1-Mouse
JMP L_StallPipe0
MOV R_FIFOBAK1,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 R_FIFOBAK0,A
MOV A,01H
JMP L_WriteDataToFIFO_0_Packet
;;********************************************************************
L_SetReport:
SZ 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
L_SetFeatureReport:
JMP L_StallPipe0
L_SetOutputReport:
SZ T_IndexL
JMP L_StallPipe0
SZ T_LengthH
jmp L_StallPipe0
mov a,T_LengthL
XOR A,C_OutReportSize ;jerry
SNZ Z
JMP L_StallPipe0
MOV A,C_SetReport
MOV R_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
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 + -