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

📄 ps2d_mouse_cmd.lis

📁 Cypress cy7c63318 鼠标开发板的源代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 002C           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 002C           ;
 002C           ;  THEORY of OPERATION or PROCEDURE:
 002C           ;
 002C           ;-----------------------------------------------------------------------------
 002C           .SECTION
 002C            PS2D_GetResolution:
 002C           _PS2D_GetResolution:
 002C 5103          mov    a,[PS2D_bMouseResolution]              ; Get the resolution
 002E 7F            ret
 002F           .ENDSECTION
 002F           ;-----------------------------------------------------------------------------
 002F           ;  FUNCTION NAME: PS2D_GetDeviceID
 002F           ;
 002F           ;  DESCRIPTION:
 002F           ;
 002F           ;-----------------------------------------------------------------------------
 002F           ;
 002F           ;  ARGUMENTS:
 002F           ;
 002F           ;  RETURNS:
 002F           ;
 002F           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 002F           ;
 002F           ;  THEORY of OPERATION or PROCEDURE:
 002F           ;
 002F           .SECTION
 002F            PS2D_GetDeviceID:
 002F           _PS2D_GetDeviceID:
 002F 5100          mov a, [PS2D_bDeviceID]            ; Simply return the ID
 0031 7F            ret
 0032           .ENDSECTION
 0032           ;-----------------------------------------------------------------------------
 0032           ; Mouse specific Dispatch routines
 0032           ;-----------------------------------------------------------------------------
 0032           ;  FUNCTION NAME: PS2D_CmdSetSampleRate
 0032           ;  DESCRIPTION:
 0032           ;
 0032           ;-----------------------------------------------------------------------------
 0032           ;
 0032           ;  ARGUMENTS:
 0032           ;
 0032           ;  RETURNS:
 0032           ;
 0032           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 0032           ;
 0032           ;  THEORY of OPERATION or PROCEDURE:
 0032           ;
 0032           ;-----------------------------------------------------------------------------
 0032           .LITERAL
 0032 0A14283C5064C8 PS2D_cValidSampleRates:    DB  10, 20, 40, 60, 80, 100, 200
 0039 643219110D0A05 PS2D_cValidSampleInterval: DB 100, 50, 25, 17, 13,  10,   5
 0007           PS2D_cSizeOfValidSampleRates: equ   PS2D_cValidSampleInterval - PS2D_cValidSampleRates
 0040           .ENDLITERAL
 0040           
 0040            PS2D_CmdSetSampleRate:
 0040           .get_byte:
 0040 9000          call   PS2D_GetHostByte                       ; Get the host byte if one is available
 0042 4B            swap   a,x                                    ; Swap bytes to make the check
 0043 3900          cmp    a, 0x00                                ; Zero signals we have a byte
 0045 BFFA          jnz    .get_byte                              ; Keep trying to get the rate byte
 0047           
 0047           ; Validate the sample rate
 0047           ; Build a little stack frame
 0047 4B            swap   a,x          ; Get it back
 0048 08            push   a            ; x-2 sample rate
 0049 5000          mov    a,0          ; 
 004B 08            push   a            ; x-1 index, initialized to 0
 004C 4F            mov    x,sp         ; Here we use x as a frame pointer
 004D           
 004D           .check_next:
 004D 52FF          mov    a,[x-1]
 004F FFE1          index  PS2D_cValidSampleRates
 0051 3BFE          cmp    a,[x-2]
 0053 A00C          jz     .found
 0055           
 0055           ; Flow here to increment the index and check for termination case
 0055 77FF          inc    [x-1]
 0057 3DFF07        cmp    [x-1],PS2D_cSizeOfValidSampleRates
 005A BFF2          jnz    .check_next
 005C           
 005C           ;   Flow here if the sample rate was not found in the table
 005C 9000          call   PS2D_SendResponseError                 ;
 005E 8009          jmp    .clean_up
 0060                   
 0060           ; Jump here when we valiate the sample rate
 0060           .found:
 0060 52FF          mov    a,[x-1]                                ; Get the index
 0062 5301          mov    [PS2D_bSampleRateIndex], a             ; And save it
 0064 9072          call   PS2D_CheckWheelUnlock
 0066           
 0066 9000          call   PS2D_SendResponseACK                   ;
 0068           
 0068           .clean_up:
 0068 38FE          add    sp,-2                                  ; Clean up the stack
 006A 7F            ret
 006B           ;-----------------------------------------------------------------------------
 006B           ;  FUNCTION NAME: PS2D_CmdResetWrapMode
 006B           ;  DESCRIPTION:
 006B           ;
 006B           ;-----------------------------------------------------------------------------
 006B           ;
 006B           ;  ARGUMENTS:
 006B           ;
 006B           ;  RETURNS:
 006B           ;
 006B           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 006B           ;
 006B           ;  THEORY of OPERATION or PROCEDURE:
 006B           ;
 006B           ;-----------------------------------------------------------------------------
 006B           PS2D_CmdResetWrapMode:
 006B 5F0000        mov     [PS2D_bMode],[PS2D_bLastMode]  ; Restore the previous mode
 006E 7F            ret
 006F           ;-----------------------------------------------------------------------------
 006F           ;  FUNCTION NAME: PS2D_CmdSetWrapMode
 006F           ;  DESCRIPTION:
 006F           ;
 006F           ;-----------------------------------------------------------------------------
 006F           ;
 006F           ;  ARGUMENTS:
 006F           ;
 006F           ;  RETURNS:
 006F           ;
 006F           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 006F           ;
 006F           ;  THEORY of OPERATION or PROCEDURE:
 006F           ;
 006F           ;-----------------------------------------------------------------------------
 006F           PS2D_CmdSetWrapMode:
 006F 3C0002        cmp     [PS2D_bLastMode], PS2D_CMD_MODE_WRAP_AROUND   ; Are we already in Wrap Mode/
 0072 A007          jz      .exit                      ; Jump if we are already there
 0074           
 0074           ; Flow here to enter Wrap Mode
 0074 5F0000        mov     [PS2D_bLastMode],[PS2D_bMode]  ; Save the current mode
 0077 550002        mov     [PS2D_bMode], PS2D_CMD_MODE_WRAP_AROUND  ; Set Wrap Mode
 007A           
 007A           ; Jump or flow here to exit
 007A           .exit:
 007A 7F            ret
 007B           ;-----------------------------------------------------------------------------
 007B           ;  FUNCTION NAME: PS2D_CmdSetScaling_1_1
 007B           ;  DESCRIPTION:
 007B           ;
 007B           ;-----------------------------------------------------------------------------
 007B           ;
 007B           ;  ARGUMENTS:
 007B           ;
 007B           ;  RETURNS:
 007B           ;
 007B           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 007B           ;
 007B           ;  THEORY of OPERATION or PROCEDURE:
 007B           ;
 007B           ;-----------------------------------------------------------------------------
 007B            PS2D_CmdSetScaling_1_1:
 007B 550200        mov    [PS2D_bMouseScaling], 0x00             ; Set the scaling to 1:1
 007E 7F            ret
 007F           ;-----------------------------------------------------------------------------
 007F           ;  FUNCTION NAME: PS2D_CmdSetScaling_2_1
 007F           ;  DESCRIPTION:
 007F           ;
 007F           ;-----------------------------------------------------------------------------
 007F           ;
 007F           ;  ARGUMENTS:
 007F           ;
 007F           ;  RETURNS:
 007F           ;
 007F           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 007F           ;
 007F           ;  THEORY of OPERATION or PROCEDURE:
 007F           ;
 007F           ;-----------------------------------------------------------------------------
 007F            PS2D_CmdSetScaling_2_1:
 007F 550201        mov    [PS2D_bMouseScaling], 0x01             ; Set the scaling to 2:1
 0082 7F            ret
 0083           ;-----------------------------------------------------------------------------
 0083           ;  FUNCTION NAME: PS2D_CmdSetResolution
 0083           ;  DESCRIPTION:
 0083           ;
 0083           ;-----------------------------------------------------------------------------
 0083           ;
 0083           ;  ARGUMENTS:
 0083           ;
 0083           ;  RETURNS:
 0083           ;
 0083           ;  SIDE EFFECTS: REGISTERS ARE VOLATILE: THE A AND X REGISTERS MAY BE MODIFIED!
 0083           ;
 0083           ;  THEORY of OPERATION or PROCEDURE:
 0083           ;
 0083           ;  This lets _SendResponseXXXX do the return to the call (saves stack and code)
 0083           ;-----------------------------------------------------------------------------
 0083           .LITERAL
 0083 01020408  PS2D_cValidResolutions:    DB 1, 2, 4, 8
 0087           PS2D_cEndOfValidResolutions:
 0004           PS2D_cSizeOfValidResolutions: equ   PS2D_cEndOfValidResolutions - PS2D_cValidResolutions
 0087           .ENDLITERAL
 0087           
 0087            PS2D_CmdSetResolution:
 0087           .get_byte:
 0087 9000          call   PS2D_GetHostByte                       ; Get the host byte if one is available
 0089 4B            swap   a,x                                    ; Swap bytes to make the check
 008A 3900          cmp    a, 0x00                                ; Zero signals we have a byte
 008C BFFA          jnz    .get_byte                  

⌨️ 快捷键说明

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