abse/smart-ring-flex
A tscircuit package created by abse.
- Version
- 0.0.24
- License
- unset
- Stars
- 0
firmware/onboard-programmer/ring-service-candidate/dap.asm
;--------------------------------------------------------
; File Created by SDCC : free open source ANSI-C Compiler
; Version 4.2.0 #13081 (Linux)
;--------------------------------------------------------
.module dap
.optsdcc -mmcs51 --model-small
;--------------------------------------------------------
; Public variables in this module
;--------------------------------------------------------
.globl _SWD_Transfer
.globl _SWD_Sequence
.globl _SWJ_Sequence
.globl _ring_probe_reset
.globl _ring_probe_enable
.globl _DLY_us
.globl _strcpy
.globl _PP37
.globl _PP36
.globl _PP35
.globl _PP34
.globl _PP33
.globl _PP32
.globl _PP31
.globl _PP30
.globl _PP17
.globl _PP16
.globl _PP15
.globl _PP14
.globl _PP13
.globl _PP12
.globl _PP11
.globl _PP10
.globl _UIF_BUS_RST
.globl _UIF_DETECT
.globl _UIF_TRANSFER
.globl _UIF_SUSPEND
.globl _UIF_HST_SOF
.globl _UIF_FIFO_OV
.globl _U_SIE_FREE
.globl _U_TOG_OK
.globl _U_IS_NAK
.globl _ADC_CHAN0
.globl _ADC_CHAN1
.globl _CMP_CHAN
.globl _ADC_START
.globl _ADC_IF
.globl _CMP_IF
.globl _CMPO
.globl _U1RI
.globl _U1TI
.globl _U1RB8
.globl _U1TB8
.globl _U1REN
.globl _U1SMOD
.globl _U1SM0
.globl _S0_R_FIFO
.globl _S0_T_FIFO
.globl _S0_FREE
.globl _S0_IF_BYTE
.globl _S0_IF_FIRST
.globl _S0_IF_OV
.globl _S0_FST_ACT
.globl _CP_RL2
.globl _C_T2
.globl _TR2
.globl _EXEN2
.globl _TCLK
.globl _RCLK
.globl _EXF2
.globl _CAP1F
.globl _TF2
.globl _RI
.globl _TI
.globl _RB8
.globl _TB8
.globl _REN
.globl _SM2
.globl _SM1
.globl _SM0
.globl _IT0
.globl _IE0
.globl _IT1
.globl _IE1
.globl _TR0
.globl _TF0
.globl _TR1
.globl _TF1
.globl _RXD
.globl _PWM1_
.globl _TXD
.globl _PWM2_
.globl _AIN3
.globl _VBUS1
.globl _INT0
.globl _TXD1_
.globl _INT1
.globl _T0
.globl _RXD1_
.globl _PWM2
.globl _T1
.globl _UDP
.globl _UDM
.globl _TIN0
.globl _CAP1
.globl _T2
.globl _AIN0
.globl _VBUS2
.globl _TIN1
.globl _CAP2
.globl _T2EX
.globl _RXD_
.globl _TXD_
.globl _AIN1
.globl _UCC1
.globl _TIN2
.globl _SCS
.globl _CAP1_
.globl _T2_
.globl _AIN2
.globl _UCC2
.globl _TIN3
.globl _PWM1
.globl _MOSI
.globl _TIN4
.globl _RXD1
.globl _MISO
.globl _TIN5
.globl _TXD1
.globl _SCK
.globl _IE_SPI0
.globl _IE_TKEY
.globl _IE_USB
.globl _IE_ADC
.globl _IE_UART1
.globl _IE_PWMX
.globl _IE_GPIO
.globl _IE_WDOG
.globl _PX0
.globl _PT0
.globl _PX1
.globl _PT1
.globl _PS
.globl _PT2
.globl _PL_FLAG
.globl _PH_FLAG
.globl _EX0
.globl _ET0
.globl _EX1
.globl _ET1
.globl _ES
.globl _ET2
.globl _E_DIS
.globl _EA
.globl _P
.globl _F1
.globl _OV
.globl _RS0
.globl _RS1
.globl _F0
.globl _AC
.globl _CY
.globl _UEP1_DMA_H
.globl _UEP1_DMA_L
.globl _UEP1_DMA
.globl _UEP0_DMA_H
.globl _UEP0_DMA_L
.globl _UEP0_DMA
.globl _UEP2_3_MOD
.globl _UEP4_1_MOD
.globl _UEP3_DMA_H
.globl _UEP3_DMA_L
.globl _UEP3_DMA
.globl _UEP2_DMA_H
.globl _UEP2_DMA_L
.globl _UEP2_DMA
.globl _USB_DEV_AD
.globl _USB_CTRL
.globl _USB_INT_EN
.globl _UEP4_T_LEN
.globl _UEP4_CTRL
.globl _UEP0_T_LEN
.globl _UEP0_CTRL
.globl _USB_RX_LEN
.globl _USB_MIS_ST
.globl _USB_INT_ST
.globl _USB_INT_FG
.globl _UEP3_T_LEN
.globl _UEP3_CTRL
.globl _UEP2_T_LEN
.globl _UEP2_CTRL
.globl _UEP1_T_LEN
.globl _UEP1_CTRL
.globl _UDEV_CTRL
.globl _USB_C_CTRL
.globl _TKEY_DATH
.globl _TKEY_DATL
.globl _TKEY_DAT
.globl _TKEY_CTRL
.globl _ADC_DATA
.globl _ADC_CFG
.globl _ADC_CTRL
.globl _SBAUD1
.globl _SBUF1
.globl _SCON1
.globl _SPI0_SETUP
.globl _SPI0_CK_SE
.globl _SPI0_CTRL
.globl _SPI0_DATA
.globl _SPI0_STAT
.globl _PWM_CK_SE
.globl _PWM_CTRL
.globl _PWM_DATA1
.globl _PWM_DATA2
.globl _T2CAP1H
.globl _T2CAP1L
.globl _T2CAP1
.globl _TH2
.globl _TL2
.globl _T2COUNT
.globl _RCAP2H
.globl _RCAP2L
.globl _RCAP2
.globl _T2MOD
.globl _T2CON
.globl _SBUF
.globl _SCON
.globl _TH1
.globl _TH0
.globl _TL1
.globl _TL0
.globl _TMOD
.globl _TCON
.globl _XBUS_AUX
.globl _PIN_FUNC
.globl _P3_DIR_PU
.globl _P3_MOD_OC
.globl _P3
.globl _P2
.globl _P1_DIR_PU
.globl _P1_MOD_OC
.globl _P1
.globl _ROM_CTRL
.globl _ROM_DATA_H
.globl _ROM_DATA_L
.globl _ROM_DATA
.globl _ROM_ADDR_H
.globl _ROM_ADDR_L
.globl _ROM_ADDR
.globl _GPIO_IE
.globl _IP_EX
.globl _IE_EX
.globl _IP
.globl _IE
.globl _WDOG_COUNT
.globl _RESET_KEEP
.globl _WAKE_CTRL
.globl _CLOCK_CFG
.globl _PCON
.globl _GLOBAL_CFG
.globl _SAFE_MOD
.globl _DPH
.globl _DPL
.globl _SP
.globl _B
.globl _ACC
.globl _PSW
.globl _data
.globl _retry
.globl _response_value
.globl _response_count
.globl _request_value
.globl _request_count
.globl _DAP_TransferAbort
.globl _match_value
.globl _match_mask
.globl _match_retry
.globl _retry_count
.globl _debug_port
.globl _idle_cycles
.globl _SWD_Transfer_PARM_2
.globl _SWD_Sequence_PARM_3
.globl _SWD_Sequence_PARM_2
.globl _SWJ_Sequence_PARM_2
.globl _ring_swd_half_period_us
.globl _DAP_Thread
;--------------------------------------------------------
; special function registers
;--------------------------------------------------------
.area RSEG (ABS,DATA)
.org 0x0000
_PSW = 0x00d0
_ACC = 0x00e0
_B = 0x00f0
_SP = 0x0081
_DPL = 0x0082
_DPH = 0x0083
_SAFE_MOD = 0x00a1
_GLOBAL_CFG = 0x00b1
_PCON = 0x0087
_CLOCK_CFG = 0x00b9
_WAKE_CTRL = 0x00a9
_RESET_KEEP = 0x00fe
_WDOG_COUNT = 0x00ff
_IE = 0x00a8
_IP = 0x00b8
_IE_EX = 0x00e8
_IP_EX = 0x00e9
_GPIO_IE = 0x00c7
_ROM_ADDR = 0x8584
_ROM_ADDR_L = 0x0084
_ROM_ADDR_H = 0x0085
_ROM_DATA = 0x8f8e
_ROM_DATA_L = 0x008e
_ROM_DATA_H = 0x008f
_ROM_CTRL = 0x0086
_P1 = 0x0090
_P1_MOD_OC = 0x0092
_P1_DIR_PU = 0x0093
_P2 = 0x00a0
_P3 = 0x00b0
_P3_MOD_OC = 0x0096
_P3_DIR_PU = 0x0097
_PIN_FUNC = 0x00c6
_XBUS_AUX = 0x00a2
_TCON = 0x0088
_TMOD = 0x0089
_TL0 = 0x008a
_TL1 = 0x008b
_TH0 = 0x008c
_TH1 = 0x008d
_SCON = 0x0098
_SBUF = 0x0099
_T2CON = 0x00c8
_T2MOD = 0x00c9
_RCAP2 = 0xcbca
_RCAP2L = 0x00ca
_RCAP2H = 0x00cb
_T2COUNT = 0xcdcc
_TL2 = 0x00cc
_TH2 = 0x00cd
_T2CAP1 = 0xcfce
_T2CAP1L = 0x00ce
_T2CAP1H = 0x00cf
_PWM_DATA2 = 0x009b
_PWM_DATA1 = 0x009c
_PWM_CTRL = 0x009d
_PWM_CK_SE = 0x009e
_SPI0_STAT = 0x00f8
_SPI0_DATA = 0x00f9
_SPI0_CTRL = 0x00fa
_SPI0_CK_SE = 0x00fb
_SPI0_SETUP = 0x00fc
_SCON1 = 0x00c0
_SBUF1 = 0x00c1
_SBAUD1 = 0x00c2
_ADC_CTRL = 0x0080
_ADC_CFG = 0x009a
_ADC_DATA = 0x009f
_TKEY_CTRL = 0x00c3
_TKEY_DAT = 0xc5c4
_TKEY_DATL = 0x00c4
_TKEY_DATH = 0x00c5
_USB_C_CTRL = 0x0091
_UDEV_CTRL = 0x00d1
_UEP1_CTRL = 0x00d2
_UEP1_T_LEN = 0x00d3
_UEP2_CTRL = 0x00d4
_UEP2_T_LEN = 0x00d5
_UEP3_CTRL = 0x00d6
_UEP3_T_LEN = 0x00d7
_USB_INT_FG = 0x00d8
_USB_INT_ST = 0x00d9
_USB_MIS_ST = 0x00da
_USB_RX_LEN = 0x00db
_UEP0_CTRL = 0x00dc
_UEP0_T_LEN = 0x00dd
_UEP4_CTRL = 0x00de
_UEP4_T_LEN = 0x00df
_USB_INT_EN = 0x00e1
_USB_CTRL = 0x00e2
_USB_DEV_AD = 0x00e3
_UEP2_DMA = 0xe5e4
_UEP2_DMA_L = 0x00e4
_UEP2_DMA_H = 0x00e5
_UEP3_DMA = 0xe7e6
_UEP3_DMA_L = 0x00e6
_UEP3_DMA_H = 0x00e7
_UEP4_1_MOD = 0x00ea
_UEP2_3_MOD = 0x00eb
_UEP0_DMA = 0xedec
_UEP0_DMA_L = 0x00ec
_UEP0_DMA_H = 0x00ed
_UEP1_DMA = 0xefee
_UEP1_DMA_L = 0x00ee
_UEP1_DMA_H = 0x00ef
;--------------------------------------------------------
; special function bits
;--------------------------------------------------------
.area RSEG (ABS,DATA)
.org 0x0000
_CY = 0x00d7
_AC = 0x00d6
_F0 = 0x00d5
_RS1 = 0x00d4
_RS0 = 0x00d3
_OV = 0x00d2
_F1 = 0x00d1
_P = 0x00d0
_EA = 0x00af
_E_DIS = 0x00ae
_ET2 = 0x00ad
_ES = 0x00ac
_ET1 = 0x00ab
_EX1 = 0x00aa
_ET0 = 0x00a9
_EX0 = 0x00a8
_PH_FLAG = 0x00bf
_PL_FLAG = 0x00be
_PT2 = 0x00bd
_PS = 0x00bc
_PT1 = 0x00bb
_PX1 = 0x00ba
_PT0 = 0x00b9
_PX0 = 0x00b8
_IE_WDOG = 0x00ef
_IE_GPIO = 0x00ee
_IE_PWMX = 0x00ed
_IE_UART1 = 0x00ec
_IE_ADC = 0x00eb
_IE_USB = 0x00ea
_IE_TKEY = 0x00e9
_IE_SPI0 = 0x00e8
_SCK = 0x0097
_TXD1 = 0x0097
_TIN5 = 0x0097
_MISO = 0x0096
_RXD1 = 0x0096
_TIN4 = 0x0096
_MOSI = 0x0095
_PWM1 = 0x0095
_TIN3 = 0x0095
_UCC2 = 0x0095
_AIN2 = 0x0095
_T2_ = 0x0094
_CAP1_ = 0x0094
_SCS = 0x0094
_TIN2 = 0x0094
_UCC1 = 0x0094
_AIN1 = 0x0094
_TXD_ = 0x0093
_RXD_ = 0x0092
_T2EX = 0x0091
_CAP2 = 0x0091
_TIN1 = 0x0091
_VBUS2 = 0x0091
_AIN0 = 0x0091
_T2 = 0x0090
_CAP1 = 0x0090
_TIN0 = 0x0090
_UDM = 0x00b7
_UDP = 0x00b6
_T1 = 0x00b5
_PWM2 = 0x00b4
_RXD1_ = 0x00b4
_T0 = 0x00b4
_INT1 = 0x00b3
_TXD1_ = 0x00b2
_INT0 = 0x00b2
_VBUS1 = 0x00b2
_AIN3 = 0x00b2
_PWM2_ = 0x00b1
_TXD = 0x00b1
_PWM1_ = 0x00b0
_RXD = 0x00b0
_TF1 = 0x008f
_TR1 = 0x008e
_TF0 = 0x008d
_TR0 = 0x008c
_IE1 = 0x008b
_IT1 = 0x008a
_IE0 = 0x0089
_IT0 = 0x0088
_SM0 = 0x009f
_SM1 = 0x009e
_SM2 = 0x009d
_REN = 0x009c
_TB8 = 0x009b
_RB8 = 0x009a
_TI = 0x0099
_RI = 0x0098
_TF2 = 0x00cf
_CAP1F = 0x00cf
_EXF2 = 0x00ce
_RCLK = 0x00cd
_TCLK = 0x00cc
_EXEN2 = 0x00cb
_TR2 = 0x00ca
_C_T2 = 0x00c9
_CP_RL2 = 0x00c8
_S0_FST_ACT = 0x00ff
_S0_IF_OV = 0x00fe
_S0_IF_FIRST = 0x00fd
_S0_IF_BYTE = 0x00fc
_S0_FREE = 0x00fb
_S0_T_FIFO = 0x00fa
_S0_R_FIFO = 0x00f8
_U1SM0 = 0x00c7
_U1SMOD = 0x00c5
_U1REN = 0x00c4
_U1TB8 = 0x00c3
_U1RB8 = 0x00c2
_U1TI = 0x00c1
_U1RI = 0x00c0
_CMPO = 0x0087
_CMP_IF = 0x0086
_ADC_IF = 0x0085
_ADC_START = 0x0084
_CMP_CHAN = 0x0083
_ADC_CHAN1 = 0x0081
_ADC_CHAN0 = 0x0080
_U_IS_NAK = 0x00df
_U_TOG_OK = 0x00de
_U_SIE_FREE = 0x00dd
_UIF_FIFO_OV = 0x00dc
_UIF_HST_SOF = 0x00db
_UIF_SUSPEND = 0x00da
_UIF_TRANSFER = 0x00d9
_UIF_DETECT = 0x00d8
_UIF_BUS_RST = 0x00d8
_PP10 = 0x0090
_PP11 = 0x0091
_PP12 = 0x0092
_PP13 = 0x0093
_PP14 = 0x0094
_PP15 = 0x0095
_PP16 = 0x0096
_PP17 = 0x0097
_PP30 = 0x00b0
_PP31 = 0x00b1
_PP32 = 0x00b2
_PP33 = 0x00b3
_PP34 = 0x00b4
_PP35 = 0x00b5
_PP36 = 0x00b6
_PP37 = 0x00b7
;--------------------------------------------------------
; overlayable register banks
;--------------------------------------------------------
.area REG_BANK_0 (REL,OVR,DATA)
.ds 8
;--------------------------------------------------------
; internal ram data
;--------------------------------------------------------
.area DSEG (DATA)
_ring_swd_half_period_us::
.ds 2
_SWJ_Sequence_PARM_2:
.ds 2
_SWD_Sequence_PARM_2:
.ds 2
_SWD_Sequence_PARM_3:
.ds 2
_SWD_Transfer_PARM_2:
.ds 2
_DAP_Info_PARM_2:
.ds 2
_DAP_Connect_PARM_2:
.ds 2
_DAP_SWJ_Pins_PARM_2:
.ds 2
_DAP_SWJ_Pins_sloc0_1_0:
.ds 1
_DAP_SWJ_Pins_sloc1_1_0:
.ds 1
_DAP_SWJ_Pins_sloc2_1_0:
.ds 2
_DAP_SWJ_Pins_sloc4_1_0:
.ds 1
_DAP_SWJ_Sequence_PARM_2:
.ds 2
_DAP_SWD_Sequence_PARM_2:
.ds 2
_DAP_SWD_Transfer_PARM_2:
.ds 2
_DAP_SWD_Transfer_response_head_65536_140:
.ds 2
_DAP_SWD_Transfer_post_read_65536_140:
.ds 1
_DAP_SWD_Transfer_check_write_65536_140:
.ds 1
_DAP_SWD_Transfer_sloc0_1_0:
.ds 1
_DAP_SWD_TransferBlock_PARM_2:
.ds 2
_DAP_SWD_TransferBlock_response_head_65536_175:
.ds 2
_DAP_TransferBlock_PARM_2:
.ds 2
_DAP_Thread_requested_hz_196608_191:
.ds 4
_DAP_Thread_sloc0_1_0:
.ds 4
;--------------------------------------------------------
; overlayable items in internal ram
;--------------------------------------------------------
.area OSEG (OVR,DATA)
_DAP_HostStatus_PARM_2:
.ds 2
.area OSEG (OVR,DATA)
_DAP_TransferConfigure_PARM_2:
.ds 2
;--------------------------------------------------------
; indirectly addressable internal ram data
;--------------------------------------------------------
.area ISEG (DATA)
_idle_cycles::
.ds 1
_debug_port::
.ds 1
_retry_count::
.ds 2
_match_retry::
.ds 2
_match_mask::
.ds 4
_match_value::
.ds 4
_DAP_TransferAbort::
.ds 1
_request_count::
.ds 1
_request_value::
.ds 1
_response_count::
.ds 1
_response_value::
.ds 1
_retry::
.ds 2
;--------------------------------------------------------
; absolute internal ram data
;--------------------------------------------------------
.area IABS (ABS,DATA)
.area IABS (ABS,DATA)
;--------------------------------------------------------
; bit data
;--------------------------------------------------------
.area BSEG (BIT)
_DAP_SWJ_Pins_sloc3_1_0:
.ds 1
;--------------------------------------------------------
; paged external ram data
;--------------------------------------------------------
.area PSEG (PAG,XDATA)
;--------------------------------------------------------
; external ram data
;--------------------------------------------------------
.area XSEG (XDATA)
_data::
.ds 4
;--------------------------------------------------------
; absolute external ram data
;--------------------------------------------------------
.area XABS (ABS,XDATA)
;--------------------------------------------------------
; external initialized ram data
;--------------------------------------------------------
.area HOME (CODE)
.area GSINIT0 (CODE)
.area GSINIT1 (CODE)
.area GSINIT2 (CODE)
.area GSINIT3 (CODE)
.area GSINIT4 (CODE)
.area GSINIT5 (CODE)
.area GSINIT (CODE)
.area GSFINAL (CODE)
.area CSEG (CODE)
;--------------------------------------------------------
; global & static initialisations
;--------------------------------------------------------
.area HOME (CODE)
.area GSINIT (CODE)
.area GSFINAL (CODE)
.area GSINIT (CODE)
; src/dap.c:37: uint16_t ring_swd_half_period_us = 5;
mov _ring_swd_half_period_us,#0x05
mov (_ring_swd_half_period_us + 1),#0x00
; src/dap.c:438: __idata uint8_t DAP_TransferAbort = 0U;
mov r0,#_DAP_TransferAbort
mov @r0,#0x00
;--------------------------------------------------------
; Home
;--------------------------------------------------------
.area HOME (CODE)
.area HOME (CODE)
;--------------------------------------------------------
; code
;--------------------------------------------------------
.area CSEG (CODE)
;------------------------------------------------------------
;Allocation info for local variables in function 'SWJ_Sequence'
;------------------------------------------------------------
;data Allocated with name '_SWJ_Sequence_PARM_2'
;count Allocated to registers
;val Allocated to registers r6
;n Allocated to registers r5
;------------------------------------------------------------
; src/dap.c:45: void SWJ_Sequence(uint8_t count, const __xdata uint8_t *data) {
; -----------------------------------------
; function SWJ_Sequence
; -----------------------------------------
_SWJ_Sequence:
ar7 = 0x07
ar6 = 0x06
ar5 = 0x05
ar4 = 0x04
ar3 = 0x03
ar2 = 0x02
ar1 = 0x01
ar0 = 0x00
mov r7,dpl
; src/dap.c:49: val = 0U;
mov r6,#0x00
; src/dap.c:50: n = 0U;
mov r5,#0x00
; src/dap.c:51: while(count--) {
mov r3,_SWJ_Sequence_PARM_2
mov r4,(_SWJ_Sequence_PARM_2 + 1)
00103$:
mov ar2,r7
dec r7
mov a,r2
jz 00106$
; src/dap.c:52: if(n == 0U) {
mov a,r5
jnz 00102$
; src/dap.c:53: val = *data++;
mov dpl,r3
mov dph,r4
movx a,@dptr
mov r6,a
inc dptr
mov r3,dpl
mov r4,dph
; src/dap.c:54: n = 8U;
mov r5,#0x08
00102$:
; src/dap.c:57: SWD_WRITE_BIT(val);
mov a,r6
anl a,#0x01
; assignBit
add a,#0xff
mov _PP15,c
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
push ar6
push ar5
push ar4
push ar3
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar3
pop ar4
pop ar5
pop ar6
pop ar7
; assignBit
clr _PP16
; src/dap.c:58: val >>= 1;
mov a,r6
clr c
rrc a
mov r6,a
; src/dap.c:59: n--;
dec r5
sjmp 00103$
00106$:
; src/dap.c:61: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'SWD_Sequence'
;------------------------------------------------------------
;swdo Allocated with name '_SWD_Sequence_PARM_2'
;swdi Allocated with name '_SWD_Sequence_PARM_3'
;info Allocated to registers r7
;val Allocated to registers r3
;bits Allocated to registers r1
;n Allocated to registers r6
;k Allocated to registers r3
;------------------------------------------------------------
; src/dap.c:70: void SWD_Sequence(uint8_t info, const __xdata uint8_t *swdo, __xdata uint8_t *swdi) {
; -----------------------------------------
; function SWD_Sequence
; -----------------------------------------
_SWD_Sequence:
mov r7,dpl
; src/dap.c:75: n = info & SWD_SEQUENCE_CLK;
mov a,#0x3f
anl a,r7
; src/dap.c:76: if(n == 0U) n = 64U;
mov r6,a
jnz 00102$
mov r6,#0x40
00102$:
; src/dap.c:78: if(info & SWD_SEQUENCE_DIN) {
mov a,r7
jnb acc.7,00131$
; src/dap.c:79: while(n) {
mov r5,_SWD_Sequence_PARM_3
mov r7,(_SWD_Sequence_PARM_3 + 1)
00104$:
mov a,r6
jnz 00188$
ret
00188$:
; src/dap.c:80: val = 0U;
mov r4,#0x00
; src/dap.c:81: for (k = 8U; k && n; k--, n--) {
mov r3,#0x08
mov ar2,r6
00116$:
mov a,r3
jz 00135$
mov a,r2
jz 00135$
; src/dap.c:82: SWD_READ_BIT(bits);
mov c,_PP15
clr a
rlc a
mov r1,a
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
push ar5
push ar4
push ar3
push ar2
push ar1
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar1
pop ar2
pop ar3
pop ar4
pop ar5
pop ar7
; assignBit
clr _PP16
; src/dap.c:83: val >>= 1;
mov a,r4
clr c
rrc a
mov r0,a
; src/dap.c:84: val |= bits << 7;
mov a,r1
rr a
anl a,#0x80
mov r1,a
orl a,r0
mov r4,a
; src/dap.c:81: for (k = 8U; k && n; k--, n--) {
dec r3
dec r2
sjmp 00116$
00135$:
mov ar6,r2
; src/dap.c:86: val >>= k;
mov b,r3
inc b
mov a,r4
sjmp 00192$
00191$:
clr c
rrc a
00192$:
djnz b,00191$
; src/dap.c:87: *swdi++ = (uint8_t)val;
mov r3,a
mov dpl,r5
mov dph,r7
movx @dptr,a
inc dptr
mov r5,dpl
mov r7,dph
; src/dap.c:91: while(n) {
sjmp 00104$
00131$:
mov r5,_SWD_Sequence_PARM_2
mov r7,(_SWD_Sequence_PARM_2 + 1)
00108$:
mov a,r6
jz 00122$
; src/dap.c:92: val = *swdo++;
mov dpl,r5
mov dph,r7
movx a,@dptr
mov r4,a
inc dptr
mov r5,dpl
mov r7,dph
; src/dap.c:93: for(k = 8U; k && n; k--, n--) {
mov r3,#0x08
mov ar2,r6
00120$:
mov a,r3
jz 00108$
mov a,r2
jz 00108$
; src/dap.c:94: SWD_WRITE_BIT(val);
mov a,r4
anl a,#0x01
; assignBit
add a,#0xff
mov _PP15,c
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
push ar5
push ar4
push ar3
push ar2
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar2
pop ar3
pop ar4
pop ar5
pop ar7
; assignBit
clr _PP16
; src/dap.c:95: val >>= 1;
mov a,r4
clr c
rrc a
mov r4,a
; src/dap.c:93: for(k = 8U; k && n; k--, n--) {
dec r3
dec r2
mov ar6,r2
sjmp 00120$
00122$:
; src/dap.c:99: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'SWD_Transfer'
;------------------------------------------------------------
;data Allocated with name '_SWD_Transfer_PARM_2'
;req Allocated to registers r7
;ack Allocated to registers r5
;bits Allocated to registers r5
;val Allocated to registers r4
;parity Allocated to registers r6
;m Allocated to registers r4
;n Allocated to registers r7
;------------------------------------------------------------
; src/dap.c:108: uint8_t SWD_Transfer(uint8_t req, __xdata uint8_t *data) {
; -----------------------------------------
; function SWD_Transfer
; -----------------------------------------
_SWD_Transfer:
mov r7,dpl
; src/dap.c:117: SWD_WRITE_BIT(1U); // start bit
; assignBit
setb _PP15
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar7
; assignBit
clr _PP16
; src/dap.c:118: SWD_WRITE_BIT(bits); // APnDP bit
mov a,r7
anl a,#0x01
; assignBit
add a,#0xff
mov _PP15,c
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar7
; assignBit
clr _PP16
; src/dap.c:120: bits >>= 1;
mov a,r7
clr c
rrc a
; src/dap.c:121: SWD_WRITE_BIT(bits); // RnW bit
mov r6,a
anl a,#0x01
; assignBit
add a,#0xff
mov _PP15,c
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
push ar6
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar6
pop ar7
; assignBit
clr _PP16
; src/dap.c:122: parity += bits;
mov a,r6
add a,r7
mov r5,a
; src/dap.c:123: bits >>= 1;
mov a,r6
clr c
rrc a
; src/dap.c:124: SWD_WRITE_BIT(bits); // A2 bit
mov r6,a
anl a,#0x01
; assignBit
add a,#0xff
mov _PP15,c
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
push ar6
push ar5
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar5
pop ar6
; assignBit
clr _PP16
; src/dap.c:125: parity += bits;
mov a,r6
add a,r5
mov r5,a
; src/dap.c:126: bits >>= 1;
mov a,r6
clr c
rrc a
; src/dap.c:127: SWD_WRITE_BIT(bits); // A3 bit
mov r6,a
anl a,#0x01
; assignBit
add a,#0xff
mov _PP15,c
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar6
push ar5
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar5
pop ar6
; assignBit
clr _PP16
; src/dap.c:128: parity += bits;
mov a,r6
add a,r5
; src/dap.c:129: SWD_WRITE_BIT(parity); // parity bit
anl a,#0x01
; assignBit
add a,#0xff
mov _PP15,c
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
; assignBit
clr _PP16
; src/dap.c:130: SWD_WRITE_BIT(0U); // stop bit
; assignBit
clr _PP15
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
; assignBit
clr _PP16
; src/dap.c:131: SWD_WRITE_BIT(1U); // park bit
; assignBit
setb _PP15
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
; assignBit
clr _PP16
; src/dap.c:134: SWD_OUT_DISABLE();
anl _P1_DIR_PU,#0xdf
anl _P1_MOD_OC,#0xdf
; src/dap.c:135: SWD_CLOCK_CYCLE();
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
; assignBit
clr _PP16
; src/dap.c:138: SWD_READ_BIT(bits);
mov c,_PP15
clr a
rlc a
mov r6,a
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar6
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
; assignBit
clr _PP16
; src/dap.c:139: ack = bits << 0;
; src/dap.c:140: SWD_READ_BIT(bits);
mov c,_PP15
clr a
rlc a
mov r5,a
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar5
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar5
pop ar6
; assignBit
clr _PP16
; src/dap.c:141: ack |= bits << 1;
mov a,r5
add a,r5
mov r5,a
mov a,r6
orl ar5,a
; src/dap.c:142: SWD_READ_BIT(bits);
mov c,_PP15
clr a
rlc a
mov r6,a
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar6
push ar5
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar5
pop ar6
pop ar7
; assignBit
clr _PP16
; src/dap.c:143: ack |= bits << 2;
mov a,r6
add a,r6
add a,acc
mov r6,a
mov a,r5
orl ar6,a
; src/dap.c:145: if(ack == DAP_TRANSFER_OK) {
cjne r6,#0x01,00245$
sjmp 00246$
00245$:
ljmp 00120$
00246$:
; src/dap.c:148: if(req & DAP_TRANSFER_RnW) { // read data
mov a,r7
jb acc.1,00247$
ljmp 00114$
00247$:
; src/dap.c:149: val = 0U;
mov r7,#0x00
; src/dap.c:150: parity = 0U;
mov r5,#0x00
; src/dap.c:151: for(m = 0; m < 4; m++) {
mov r4,#0x00
; src/dap.c:152: for(n = 8U; n; n--) {
00143$:
mov r3,#0x08
00127$:
; src/dap.c:153: SWD_READ_BIT(bits); // read RDATA[0:31]
mov c,_PP15
clr a
rlc a
mov r2,a
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
push ar6
push ar5
push ar4
push ar3
push ar2
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar2
pop ar3
pop ar4
pop ar5
pop ar6
pop ar7
; assignBit
clr _PP16
; src/dap.c:154: parity += bits;
mov a,r2
add a,r5
mov r5,a
; src/dap.c:155: val >>= 1;
mov a,r7
clr c
rrc a
mov r7,a
; src/dap.c:156: if(bits) val |= 0x80;
mov a,r2
jz 00128$
orl ar7,#0x80
00128$:
; src/dap.c:152: for(n = 8U; n; n--) {
djnz r3,00127$
; src/dap.c:158: if(data) data[m] = val;
mov a,_SWD_Transfer_PARM_2
orl a,(_SWD_Transfer_PARM_2 + 1)
jz 00130$
mov a,r4
add a,_SWD_Transfer_PARM_2
mov dpl,a
clr a
addc a,(_SWD_Transfer_PARM_2 + 1)
mov dph,a
mov a,r7
movx @dptr,a
00130$:
; src/dap.c:151: for(m = 0; m < 4; m++) {
inc r4
cjne r4,#0x04,00251$
00251$:
jc 00143$
; src/dap.c:160: SWD_READ_BIT(bits); // read parity
mov c,_PP15
clr a
rlc a
mov r7,a
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
push ar6
push ar5
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar5
pop ar6
pop ar7
; assignBit
clr _PP16
; src/dap.c:161: if((parity ^ bits) & 1U)
mov a,r7
xrl a,r5
jnb acc.0,00108$
; src/dap.c:162: ack = DAP_TRANSFER_ERROR;
mov r6,#0x08
00108$:
; src/dap.c:165: SWD_CLOCK_CYCLE();
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar6
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar6
; assignBit
clr _PP16
; src/dap.c:166: SWD_OUT_ENABLE();
orl _P1_MOD_OC,#0x20
anl _P1_DIR_PU,#0xdf
ljmp 00115$
00114$:
; src/dap.c:170: SWD_CLOCK_CYCLE();
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar6
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar6
; assignBit
clr _PP16
; src/dap.c:171: SWD_OUT_ENABLE();
orl _P1_MOD_OC,#0x20
anl _P1_DIR_PU,#0xdf
; src/dap.c:175: for(m = 0; m < 4; m++) {
mov r7,#0x00
mov r5,#0x00
00133$:
; src/dap.c:176: val = data[m];
mov a,r5
add a,_SWD_Transfer_PARM_2
mov dpl,a
clr a
addc a,(_SWD_Transfer_PARM_2 + 1)
mov dph,a
movx a,@dptr
mov r4,a
; src/dap.c:177: ACC = val;
mov _ACC,r4
; src/dap.c:178: if(P) parity++;
jnb _P,00150$
inc r7
; src/dap.c:179: for(n = 8U; n; n--) {
00150$:
mov r3,#0x08
00131$:
; src/dap.c:180: SWD_WRITE_BIT(val);
mov a,r4
anl a,#0x01
; assignBit
add a,#0xff
mov _PP15,c
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
push ar6
push ar5
push ar4
push ar3
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar3
pop ar4
pop ar5
pop ar6
pop ar7
; assignBit
clr _PP16
; src/dap.c:181: val >>= 1;
mov a,r4
clr c
rrc a
mov r4,a
; src/dap.c:179: for(n = 8U; n; n--) {
djnz r3,00131$
; src/dap.c:175: for(m = 0; m < 4; m++) {
inc r5
cjne r5,#0x04,00256$
00256$:
jc 00133$
; src/dap.c:184: SWD_WRITE_BIT(parity); // write parity bit
mov a,r7
anl a,#0x01
; assignBit
add a,#0xff
mov _PP15,c
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar6
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar6
; assignBit
clr _PP16
00115$:
; src/dap.c:187: SWD_SET(0);
; assignBit
clr _PP15
; src/dap.c:188: n = idle_cycles;
mov r0,#_idle_cycles
; src/dap.c:189: if(n) {
mov a,@r0
mov r7,a
jz 00118$
; src/dap.c:190: for(; n; n--) SWD_CLOCK_CYCLE();
00136$:
mov a,r7
jz 00118$
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
push ar6
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar6
pop ar7
; assignBit
clr _PP16
dec r7
sjmp 00136$
00118$:
; src/dap.c:192: SWD_SET(1);
; assignBit
setb _PP15
; src/dap.c:193: return(ack);
mov dpl,r6
ret
00120$:
; src/dap.c:196: if((ack == DAP_TRANSFER_WAIT) || (ack == DAP_TRANSFER_FAULT)) {
cjne r6,#0x02,00260$
sjmp 00121$
00260$:
cjne r6,#0x04,00157$
00121$:
; src/dap.c:198: SWD_CLOCK_CYCLE();
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar6
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar6
; assignBit
clr _PP16
; src/dap.c:199: SWD_OUT_ENABLE();
orl _P1_MOD_OC,#0x20
anl _P1_DIR_PU,#0xdf
; src/dap.c:200: SWD_SET(1);
; assignBit
setb _PP15
; src/dap.c:201: return(ack);
mov dpl,r6
; src/dap.c:206: do {
ret
00157$:
mov r7,#0x22
00124$:
; src/dap.c:207: SWD_CLOCK_CYCLE(); // back off data phase
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
push ar7
push ar6
lcall _DLY_us
; assignBit
setb _PP16
mov dpl,_ring_swd_half_period_us
mov dph,(_ring_swd_half_period_us + 1)
lcall _DLY_us
pop ar6
pop ar7
; assignBit
clr _PP16
; src/dap.c:208: } while(--n);
djnz r7,00124$
; src/dap.c:210: SWD_OUT_ENABLE();
orl _P1_MOD_OC,#0x20
anl _P1_DIR_PU,#0xdf
; src/dap.c:211: SWD_SET(1);
; assignBit
setb _PP15
; src/dap.c:212: return(ack);
mov dpl,r6
; src/dap.c:213: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_Info'
;------------------------------------------------------------
;info Allocated with name '_DAP_Info_PARM_2'
;id Allocated to registers r7
;length Allocated to registers r6
;------------------------------------------------------------
; src/dap.c:221: static uint8_t DAP_Info(uint8_t id, __xdata uint8_t *info) {
; -----------------------------------------
; function DAP_Info
; -----------------------------------------
_DAP_Info:
mov r7,dpl
; src/dap.c:222: uint8_t length = 0U;
mov r6,#0x00
; src/dap.c:223: switch(id) {
cjne r7,#0x04,00125$
sjmp 00101$
00125$:
cjne r7,#0xf0,00126$
sjmp 00102$
00126$:
cjne r7,#0xfe,00127$
sjmp 00104$
00127$:
; src/dap.c:224: case DAP_ID_FW_VER:
cjne r7,#0xff,00106$
sjmp 00103$
00101$:
; src/dap.c:225: length = (uint8_t)sizeof(DAP_FW_VER);
mov r6,#0x06
; src/dap.c:226: strcpy(info, DAP_FW_VER );
mov r4,_DAP_Info_PARM_2
mov r5,(_DAP_Info_PARM_2 + 1)
mov r7,#0x00
mov _strcpy_PARM_2,#__str_0
mov (_strcpy_PARM_2 + 1),#(__str_0 >> 8)
mov (_strcpy_PARM_2 + 2),#0x80
mov dpl,r4
mov dph,r5
mov b,r7
push ar6
lcall _strcpy
pop ar6
; src/dap.c:227: break;
; src/dap.c:228: case DAP_ID_CAPABILITIES:
sjmp 00106$
00102$:
; src/dap.c:229: info[0] = DAP_PORT_SWD;
mov dpl,_DAP_Info_PARM_2
mov dph,(_DAP_Info_PARM_2 + 1)
mov a,#0x01
movx @dptr,a
; src/dap.c:230: length = 1U;
mov r6,#0x01
; src/dap.c:231: break;
; src/dap.c:232: case DAP_ID_PACKET_SIZE:
sjmp 00106$
00103$:
; src/dap.c:233: info[0] = DAP_PACKET_SIZE;
mov r5,_DAP_Info_PARM_2
mov r7,(_DAP_Info_PARM_2 + 1)
mov dpl,r5
mov dph,r7
mov a,#0x40
movx @dptr,a
; src/dap.c:234: info[1] = 0;
mov dpl,r5
mov dph,r7
inc dptr
clr a
movx @dptr,a
; src/dap.c:235: length = 2U;
mov r6,#0x02
; src/dap.c:236: break;
; src/dap.c:237: case DAP_ID_PACKET_COUNT:
sjmp 00106$
00104$:
; src/dap.c:238: info[0] = DAP_PACKET_COUNT;
mov dpl,_DAP_Info_PARM_2
mov dph,(_DAP_Info_PARM_2 + 1)
mov a,#0x01
movx @dptr,a
; src/dap.c:239: length = 1U;
mov r6,#0x01
; src/dap.c:243: }
00106$:
; src/dap.c:244: return length;
mov dpl,r6
; src/dap.c:245: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_HostStatus'
;------------------------------------------------------------
;res Allocated with name '_DAP_HostStatus_PARM_2'
;req Allocated to registers r6 r7
;------------------------------------------------------------
; src/dap.c:253: static uint8_t DAP_HostStatus(const __xdata uint8_t *req, __xdata uint8_t *res) {
; -----------------------------------------
; function DAP_HostStatus
; -----------------------------------------
_DAP_HostStatus:
mov r6,dpl
mov r7,dph
; src/dap.c:254: *res = DAP_OK;
mov r4,_DAP_HostStatus_PARM_2
mov r5,(_DAP_HostStatus_PARM_2 + 1)
mov dpl,r4
mov dph,r5
clr a
movx @dptr,a
; src/dap.c:255: switch(*req) {
mov dpl,r6
mov dph,r7
movx a,@dptr
mov r7,a
jz 00104$
cjne r7,#0x01,00116$
sjmp 00104$
00116$:
; src/dap.c:263: *res = DAP_ERROR;
mov dpl,r4
mov dph,r5
mov a,#0xff
movx @dptr,a
; src/dap.c:264: }
00104$:
; src/dap.c:265: return 1;
mov dpl,#0x01
; src/dap.c:266: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_Connect'
;------------------------------------------------------------
;res Allocated with name '_DAP_Connect_PARM_2'
;req Allocated to registers r6 r7
;port Allocated to registers r6
;------------------------------------------------------------
; src/dap.c:275: static uint8_t DAP_Connect(const __xdata uint8_t *req, __xdata uint8_t *res) {
; -----------------------------------------
; function DAP_Connect
; -----------------------------------------
_DAP_Connect:
; src/dap.c:277: if(*req == DAP_PORT_AUTODETECT) port = DAP_DEFAULT_PORT;
movx a,@dptr
mov r7,a
jnz 00102$
mov r6,#0x01
sjmp 00103$
00102$:
; src/dap.c:278: else port = *req;
mov ar6,r7
00103$:
; src/dap.c:280: switch(port) {
cjne r6,#0x01,00108$
; src/dap.c:282: debug_port = DAP_PORT_SWD;
mov r0,#_debug_port
mov @r0,#0x01
; src/dap.c:283: PORT_SWD_CONNECT();
; assignBit
clr _PP14
mov dpl,#0x01
push ar6
lcall _ring_probe_reset
; assignBit
setb _PP15
orl _P1_MOD_OC,#0x20
anl _P1_DIR_PU,#0xdf
; assignBit
clr _PP16
anl _P1_MOD_OC,#0xbf
orl _P1_DIR_PU,#0x40
lcall _ring_probe_enable
pop ar6
; src/dap.c:284: break;
; src/dap.c:285: default:
sjmp 00109$
00108$:
; src/dap.c:286: port = DAP_PORT_DISABLED;
mov r6,#0x00
; src/dap.c:288: }
00109$:
; src/dap.c:290: *res = port;
mov dpl,_DAP_Connect_PARM_2
mov dph,(_DAP_Connect_PARM_2 + 1)
mov a,r6
movx @dptr,a
; src/dap.c:291: return 1;
mov dpl,#0x01
; src/dap.c:292: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_Disconnect'
;------------------------------------------------------------
;res Allocated to registers r6 r7
;------------------------------------------------------------
; src/dap.c:299: static uint8_t DAP_Disconnect(__xdata uint8_t *res) {
; -----------------------------------------
; function DAP_Disconnect
; -----------------------------------------
_DAP_Disconnect:
; src/dap.c:300: *res = DAP_OK;
clr a
movx @dptr,a
; src/dap.c:301: debug_port = DAP_PORT_DISABLED;
mov r0,#_debug_port
mov @r0,#0x00
; src/dap.c:302: PORT_SWD_DISCONNECT();
; assignBit
clr _PP14
mov dpl,#0x01
lcall _ring_probe_reset
anl _P1_DIR_PU,#0xdf
anl _P1_MOD_OC,#0xdf
anl _P1_DIR_PU,#0xbf
anl _P1_MOD_OC,#0xbf
; src/dap.c:303: return 1;
mov dpl,#0x01
; src/dap.c:304: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_SWJ_Pins'
;------------------------------------------------------------
;res Allocated with name '_DAP_SWJ_Pins_PARM_2'
;req Allocated to registers r6 r7
;value Allocated to registers r7
;select Allocated to registers r4
;wait Allocated to registers r3 r2
;sloc0 Allocated with name '_DAP_SWJ_Pins_sloc0_1_0'
;sloc1 Allocated with name '_DAP_SWJ_Pins_sloc1_1_0'
;sloc2 Allocated with name '_DAP_SWJ_Pins_sloc2_1_0'
;sloc4 Allocated with name '_DAP_SWJ_Pins_sloc4_1_0'
;------------------------------------------------------------
; src/dap.c:312: static uint8_t DAP_SWJ_Pins(const __xdata uint8_t *req, __xdata uint8_t *res) {
; -----------------------------------------
; function DAP_SWJ_Pins
; -----------------------------------------
_DAP_SWJ_Pins:
; src/dap.c:317: value = * (req + 0);
mov r6,dpl
mov r7,dph
movx a,@dptr
mov r5,a
; src/dap.c:318: select = (uint8_t) * (req + 1);
mov dpl,r6
mov dph,r7
inc dptr
movx a,@dptr
mov r4,a
; src/dap.c:319: wait = (uint16_t)(*(req + 2) << 0) | (uint16_t)(*(req + 3) << 8);
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
movx a,@dptr
mov r3,a
mov r2,#0x00
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
inc dptr
movx a,@dptr
mov r1,a
clr a
orl ar3,a
mov a,r1
orl ar2,a
; src/dap.c:320: if((uint8_t)(*(req + 4)) || (uint8_t)(*(req + 5))) wait |= 0x8000;
mov a,#0x04
add a,r6
mov r0,a
clr a
addc a,r7
mov r1,a
mov dpl,r0
mov dph,r1
movx a,@dptr
jnz 00101$
mov a,#0x05
add a,r6
mov r6,a
clr a
addc a,r7
mov r7,a
mov dpl,r6
mov dph,r7
movx a,@dptr
jz 00102$
00101$:
mov ar6,r3
mov ar7,r2
orl ar7,#0x80
mov ar3,r6
mov ar2,r7
00102$:
; src/dap.c:322: if((select & DAP_SWJ_SWCLK_TCK_BIT) != 0U) {
mov a,r4
jnb acc.0,00105$
; src/dap.c:323: ((value & DAP_SWJ_SWCLK_TCK_BIT) != 0U) ? (SWK_SET(1)) : (SWK_SET(0));
mov ar6,r5
mov r7,#0x00
mov a,r6
jnb acc.0,00129$
; assignBit
setb _PP16
mov c,_PP16
sjmp 00105$
00129$:
; assignBit
clr _PP16
mov c,_PP16
00105$:
; src/dap.c:325: if((select & DAP_SWJ_SWDIO_TMS_BIT) != 0U) {
mov a,r4
jnb acc.1,00107$
; src/dap.c:326: ((value & DAP_SWJ_SWDIO_TMS_BIT) != 0U) ? (SWD_SET(1)) : (SWD_SET(0));
mov ar6,r5
mov r7,#0x00
mov a,r6
jnb acc.1,00131$
; assignBit
setb _PP15
mov c,_PP15
sjmp 00107$
00131$:
; assignBit
clr _PP15
mov c,_PP15
00107$:
; src/dap.c:328: if((select & DAP_SWJ_nRESET_BIT) != 0U) {
mov a,r4
jnb acc.7,00109$
; src/dap.c:329: RST_SET(value >> DAP_SWJ_nRESET);
mov a,r5
rl a
anl a,#0x01
mov dpl,a
push ar5
push ar4
push ar3
push ar2
lcall _ring_probe_reset
pop ar2
pop ar3
pop ar4
pop ar5
00109$:
; src/dap.c:332: if(wait != 0U) {
mov a,r3
orl a,r2
jz 00126$
; src/dap.c:333: do {
mov a,#0x02
anl a,r4
mov r6,a
mov r7,#0x00
mov a,#0x80
anl a,r4
mov r0,a
mov r1,#0x00
mov a,r5
rl a
anl a,#0x01
mov _DAP_SWJ_Pins_sloc0_1_0,a
mov a,r5
clr c
rrc a
mov _DAP_SWJ_Pins_sloc1_1_0,a
mov _DAP_SWJ_Pins_sloc4_1_0,r5
mov a,#0x01
anl a,r4
mov _DAP_SWJ_Pins_sloc2_1_0,a
; 1-genFromRTrack replaced mov (_DAP_SWJ_Pins_sloc2_1_0 + 1),#0x00
mov (_DAP_SWJ_Pins_sloc2_1_0 + 1),r7
mov ar4,r2
00122$:
; src/dap.c:334: if((select & DAP_SWJ_SWCLK_TCK_BIT) != 0U) {
mov a,_DAP_SWJ_Pins_sloc2_1_0
orl a,(_DAP_SWJ_Pins_sloc2_1_0 + 1)
jz 00113$
; src/dap.c:335: if((value >> DAP_SWJ_SWCLK_TCK) ^ (SWK_GET())) continue;
mov c,_PP16
clr a
rlc a
mov r2,a
xrl a,_DAP_SWJ_Pins_sloc4_1_0
jnz 00123$
00113$:
; src/dap.c:337: if((select & DAP_SWJ_SWDIO_TMS_BIT) != 0U) {
mov a,r6
orl a,r7
jz 00117$
; src/dap.c:338: if((value >> DAP_SWJ_SWDIO_TMS) ^ (SWD_GET())) continue;
mov c,_PP15
clr a
rlc a
mov r2,a
xrl a,_DAP_SWJ_Pins_sloc1_1_0
jnz 00123$
00117$:
; src/dap.c:340: if((select & DAP_SWJ_nRESET_BIT) != 0U) {
mov a,r0
orl a,r1
jz 00126$
; src/dap.c:341: if((value >> DAP_SWJ_nRESET) ^ (RST_GET())) continue;
mov c,_PP17
cpl c
mov _DAP_SWJ_Pins_sloc3_1_0,c
clr a
rlc a
mov r2,a
xrl a,_DAP_SWJ_Pins_sloc0_1_0
jz 00126$
; src/dap.c:343: break;
00123$:
; src/dap.c:344: } while(wait--);
mov ar2,r3
mov ar5,r4
dec r3
cjne r3,#0xff,00202$
dec r4
00202$:
mov a,r2
orl a,r5
jnz 00122$
00126$:
; src/dap.c:347: value = ((uint8_t)SWK_GET() << DAP_SWJ_SWCLK_TCK)
mov c,_PP16
clr a
rlc a
mov r7,a
; src/dap.c:348: | ((uint8_t)SWD_GET() << DAP_SWJ_SWDIO_TMS)
mov c,_PP15
clr a
rlc a
add a,acc
orl ar7,a
; src/dap.c:352: | ((uint8_t)RST_GET() << DAP_SWJ_nRESET);
mov c,_PP17
cpl c
mov _DAP_SWJ_Pins_sloc3_1_0,c
clr a
rlc a
rr a
anl a,#0x80
orl ar7,a
; src/dap.c:353: *res = value;
mov dpl,_DAP_SWJ_Pins_PARM_2
mov dph,(_DAP_SWJ_Pins_PARM_2 + 1)
mov a,r7
movx @dptr,a
; src/dap.c:354: return 1;
mov dpl,#0x01
; src/dap.c:355: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_SWJ_Sequence'
;------------------------------------------------------------
;res Allocated with name '_DAP_SWJ_Sequence_PARM_2'
;req Allocated to registers r6 r7
;count Allocated to registers r4
;------------------------------------------------------------
; src/dap.c:363: static uint8_t DAP_SWJ_Sequence(const __xdata uint8_t *req, __xdata uint8_t *res) {
; -----------------------------------------
; function DAP_SWJ_Sequence
; -----------------------------------------
_DAP_SWJ_Sequence:
; src/dap.c:365: count = *req++;
mov r6,dpl
mov r7,dph
movx a,@dptr
mov r5,a
inc r6
cjne r6,#0x00,00110$
inc r7
00110$:
; src/dap.c:366: if(count == 0U) count = 255U;
mov a,r5
mov r4,a
jnz 00102$
mov r4,#0xff
00102$:
; src/dap.c:367: SWJ_Sequence(count, req);
mov _SWJ_Sequence_PARM_2,r6
mov (_SWJ_Sequence_PARM_2 + 1),r7
mov dpl,r4
lcall _SWJ_Sequence
; src/dap.c:368: *res = DAP_OK;
mov dpl,_DAP_SWJ_Sequence_PARM_2
mov dph,(_DAP_SWJ_Sequence_PARM_2 + 1)
clr a
movx @dptr,a
; src/dap.c:369: return 1;
mov dpl,#0x01
; src/dap.c:370: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_SWD_Sequence'
;------------------------------------------------------------
;res Allocated with name '_DAP_SWD_Sequence_PARM_2'
;req Allocated to registers r6 r7
;sequence_info Allocated to registers r2
;sequence_count Allocated to registers
;request_count Allocated to registers r5
;response_count Allocated to registers r4
;count Allocated to registers r0
;------------------------------------------------------------
; src/dap.c:378: static uint8_t DAP_SWD_Sequence(const __xdata uint8_t *req, __xdata uint8_t *res) {
; -----------------------------------------
; function DAP_SWD_Sequence
; -----------------------------------------
_DAP_SWD_Sequence:
mov r6,dpl
mov r7,dph
; src/dap.c:385: *res++ = DAP_OK;
mov r4,_DAP_SWD_Sequence_PARM_2
mov r5,(_DAP_SWD_Sequence_PARM_2 + 1)
mov dpl,r4
mov dph,r5
clr a
movx @dptr,a
inc a
add a,r4
mov _DAP_SWD_Sequence_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Sequence_PARM_2 + 1),a
; src/dap.c:386: request_count = 1U;
mov r5,#0x01
; src/dap.c:387: response_count = 1U;
mov r4,#0x01
; src/dap.c:388: sequence_count = *req++;
mov dpl,r6
mov dph,r7
movx a,@dptr
mov r3,a
inc r6
cjne r6,#0x00,00139$
inc r7
00139$:
; src/dap.c:390: while(sequence_count--) {
00108$:
mov ar2,r3
dec r3
mov a,r2
jnz 00140$
ljmp 00110$
00140$:
; src/dap.c:391: sequence_info = *req++;
mov dpl,r6
mov dph,r7
movx a,@dptr
mov r2,a
inc dptr
mov r6,dpl
mov r7,dph
; src/dap.c:392: count = sequence_info & SWD_SEQUENCE_CLK;
mov a,#0x3f
anl a,r2
; src/dap.c:393: if(count == 0U) count = 64U;
mov r1,a
jnz 00102$
mov r1,#0x40
00102$:
; src/dap.c:394: count = (count + 7U) / 8U;
mov ar0,r1
mov r1,#0x00
mov a,#0x07
add a,r0
mov r0,a
clr a
addc a,r1
swap a
rl a
xch a,r0
swap a
rl a
anl a,#0x1f
xrl a,r0
xch a,r0
anl a,#0x1f
xch a,r0
xrl a,r0
xch a,r0
; src/dap.c:395: ((sequence_info & SWD_SEQUENCE_DIN) != 0U) ? (SWD_SET(1)) : (SWD_SET(1));
; assignBit
setb _PP15
; src/dap.c:396: SWD_Sequence(sequence_info, req, res);
mov _SWD_Sequence_PARM_2,r6
mov (_SWD_Sequence_PARM_2 + 1),r7
mov _SWD_Sequence_PARM_3,_DAP_SWD_Sequence_PARM_2
mov (_SWD_Sequence_PARM_3 + 1),(_DAP_SWD_Sequence_PARM_2 + 1)
mov dpl,r2
push ar7
push ar6
push ar5
push ar4
push ar3
push ar2
push ar0
lcall _SWD_Sequence
pop ar0
pop ar2
pop ar3
pop ar4
pop ar5
pop ar6
pop ar7
; src/dap.c:397: if(sequence_count == 0U) SWD_SET(1);
mov a,r3
jnz 00104$
; assignBit
setb _PP15
00104$:
; src/dap.c:398: if((sequence_info & SWD_SEQUENCE_DIN) != 0U) {
mov a,r2
jnb acc.7,00106$
; src/dap.c:399: request_count++;
inc r5
; src/dap.c:400: res += count;
mov a,r0
add a,_DAP_SWD_Sequence_PARM_2
mov _DAP_SWD_Sequence_PARM_2,a
clr a
addc a,(_DAP_SWD_Sequence_PARM_2 + 1)
mov (_DAP_SWD_Sequence_PARM_2 + 1),a
; src/dap.c:401: response_count += count;
mov a,r0
add a,r4
mov r4,a
sjmp 00108$
00106$:
; src/dap.c:404: req += count;
mov a,r0
add a,r6
mov r6,a
clr a
addc a,r7
mov r7,a
; src/dap.c:405: request_count += count + 1U;
mov a,r0
inc a
add a,r5
mov r5,a
ljmp 00108$
00110$:
; src/dap.c:408: return response_count;
mov dpl,r4
; src/dap.c:409: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_TransferConfigure'
;------------------------------------------------------------
;res Allocated with name '_DAP_TransferConfigure_PARM_2'
;req Allocated to registers r6 r7
;------------------------------------------------------------
; src/dap.c:419: static uint8_t DAP_TransferConfigure(const __xdata uint8_t *req, __xdata uint8_t *res) {
; -----------------------------------------
; function DAP_TransferConfigure
; -----------------------------------------
_DAP_TransferConfigure:
; src/dap.c:420: idle_cycles = *(req + 0);
mov r6,dpl
mov r7,dph
mov r0,#_idle_cycles
movx a,@dptr
mov @r0,a
; src/dap.c:421: retry_count = (uint16_t) * (req + 1)
mov dpl,r6
mov dph,r7
inc dptr
movx a,@dptr
mov r5,a
mov r4,#0x00
; src/dap.c:422: | (uint16_t)(*(req + 2) << 8);
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
movx a,@dptr
mov r2,a
clr a
orl ar5,a
mov a,r2
orl ar4,a
mov r0,#_retry_count
mov @r0,ar5
inc r0
mov @r0,ar4
; src/dap.c:423: match_retry = (uint16_t) * (req + 3)
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
inc dptr
movx a,@dptr
mov r5,a
mov r4,#0x00
; src/dap.c:424: | (uint16_t)(*(req + 4) << 8);
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
inc dptr
inc dptr
movx a,@dptr
mov r6,a
clr a
orl ar5,a
mov a,r6
orl ar4,a
mov r0,#_match_retry
mov @r0,ar5
inc r0
mov @r0,ar4
; src/dap.c:425: *res = DAP_OK;
mov dpl,_DAP_TransferConfigure_PARM_2
mov dph,(_DAP_TransferConfigure_PARM_2 + 1)
clr a
movx @dptr,a
; src/dap.c:426: return 1;
mov dpl,#0x01
; src/dap.c:427: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_SWD_Transfer'
;------------------------------------------------------------
;res Allocated with name '_DAP_SWD_Transfer_PARM_2'
;req Allocated to registers r6 r7
;request_head Allocated to registers
;response_head Allocated with name '_DAP_SWD_Transfer_response_head_65536_140'
;post_read Allocated with name '_DAP_SWD_Transfer_post_read_65536_140'
;check_write Allocated with name '_DAP_SWD_Transfer_check_write_65536_140'
;sloc0 Allocated with name '_DAP_SWD_Transfer_sloc0_1_0'
;------------------------------------------------------------
; src/dap.c:444: static uint8_t DAP_SWD_Transfer(const __xdata uint8_t *req, __xdata uint8_t *res) {
; -----------------------------------------
; function DAP_SWD_Transfer
; -----------------------------------------
_DAP_SWD_Transfer:
mov r6,dpl
mov r7,dph
; src/dap.c:451: response_count = 0U;
mov r0,#_response_count
mov @r0,#0x00
; src/dap.c:452: response_value = 0U;
mov r0,#_response_value
mov @r0,#0x00
; src/dap.c:453: response_head = res;
mov _DAP_SWD_Transfer_response_head_65536_140,_DAP_SWD_Transfer_PARM_2
mov (_DAP_SWD_Transfer_response_head_65536_140 + 1),(_DAP_SWD_Transfer_PARM_2 + 1)
; src/dap.c:454: res += 2;
mov a,#0x02
add a,_DAP_SWD_Transfer_response_head_65536_140
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,(_DAP_SWD_Transfer_response_head_65536_140 + 1)
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:455: DAP_TransferAbort = 0U;
mov r0,#_DAP_TransferAbort
mov @r0,#0x00
; src/dap.c:456: post_read = 0U;
mov _DAP_SWD_Transfer_post_read_65536_140,#0x00
; src/dap.c:457: check_write = 0U;
mov _DAP_SWD_Transfer_check_write_65536_140,#0x00
; src/dap.c:459: req++; // ignore DAP index
inc r6
cjne r6,#0x00,00550$
inc r7
00550$:
; src/dap.c:460: request_count = *req++;
mov dpl,r6
mov dph,r7
mov r0,#_request_count
movx a,@dptr
mov @r0,a
inc r6
cjne r6,#0x00,00551$
inc r7
00551$:
00223$:
; src/dap.c:461: for(; request_count != 0U; request_count--) {
mov r0,#_request_count
mov a,@r0
jnz 00552$
ljmp 00226$
00552$:
; src/dap.c:462: request_value = *req++;
mov dpl,r6
mov dph,r7
movx a,@dptr
mov _DAP_SWD_Transfer_sloc0_1_0,a
inc dptr
mov r6,dpl
mov r7,dph
mov r0,#_request_value
; src/dap.c:465: if(request_value & DAP_TRANSFER_RnW) {
mov a,_DAP_SWD_Transfer_sloc0_1_0
mov @r0,a
jb acc.1,00553$
ljmp 00191$
00553$:
; src/dap.c:467: if(post_read) {
mov a,_DAP_SWD_Transfer_post_read_65536_140
jnz 00554$
ljmp 00117$
00554$:
; src/dap.c:469: retry = retry_count;
mov r0,#_retry_count
mov ar2,@r0
inc r0
mov ar5,@r0
mov r0,#_retry
mov @r0,ar2
inc r0
mov @r0,ar5
; src/dap.c:470: if((request_value & (DAP_TRANSFER_APnDP | DAP_TRANSFER_MATCH_VALUE)) == DAP_TRANSFER_APnDP) {
mov r4,_DAP_SWD_Transfer_sloc0_1_0
anl ar4,#0x11
mov r5,#0x00
cjne r4,#0x01,00108$
cjne r5,#0x00,00108$
; src/dap.c:472: do {
00103$:
; src/dap.c:473: response_value = SWD_Transfer(request_value, data);
mov _SWD_Transfer_PARM_2,#_data
mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
mov r0,#_request_value
mov dpl,@r0
push ar7
push ar6
lcall _SWD_Transfer
mov r5,dpl
pop ar6
pop ar7
mov r0,#_response_value
mov @r0,ar5
; src/dap.c:474: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r5,#0x02,00113$
mov r0,#_retry
mov ar4,@r0
inc r0
mov ar5,@r0
mov r0,#_retry
mov a,r4
add a,#0xff
mov @r0,a
mov a,r5
addc a,#0xff
inc r0
mov @r0,a
mov a,r4
orl a,r5
jz 00113$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00103$
; src/dap.c:478: do {
sjmp 00113$
00108$:
; src/dap.c:479: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, data);
mov _SWD_Transfer_PARM_2,#_data
mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
mov dpl,#0x0e
push ar7
push ar6
lcall _SWD_Transfer
mov r5,dpl
pop ar6
pop ar7
mov r0,#_response_value
mov @r0,ar5
; src/dap.c:480: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r5,#0x02,00110$
mov r0,#_retry
mov ar4,@r0
inc r0
mov ar5,@r0
mov r0,#_retry
mov a,r4
add a,#0xff
mov @r0,a
mov a,r5
addc a,#0xff
inc r0
mov @r0,a
mov a,r4
orl a,r5
jz 00110$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00108$
00110$:
; src/dap.c:481: post_read = 0U;
mov _DAP_SWD_Transfer_post_read_65536_140,#0x00
00113$:
; src/dap.c:483: if(response_value != DAP_TRANSFER_OK) break;
mov r0,#_response_value
cjne @r0,#0x01,00565$
sjmp 00566$
00565$:
ljmp 00226$
00566$:
; src/dap.c:486: *res++ = (uint8_t)data[0];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#_data
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:487: *res++ = (uint8_t)data[1];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0001)
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:488: *res++ = (uint8_t)data[2];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0002)
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:489: *res++ = (uint8_t)data[3];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0003)
movx a,@dptr
mov r2,a
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
00117$:
; src/dap.c:491: if((request_value & DAP_TRANSFER_MATCH_VALUE) != 0U) {
mov r0,#_request_value
mov a,@r0
mov r5,a
jb acc.4,00567$
ljmp 00169$
00567$:
; src/dap.c:493: match_value[0] = (uint8_t)(*(req + 0));
mov dpl,r6
mov dph,r7
movx a,@dptr
mov r4,a
mov r0,#_match_value
mov @r0,ar4
; src/dap.c:494: match_value[1] = (uint8_t)(*(req + 1));
mov dpl,r6
mov dph,r7
inc dptr
movx a,@dptr
mov r4,a
mov r0,#(_match_value + 0x0001)
mov @r0,ar4
; src/dap.c:495: match_value[2] = (uint8_t)(*(req + 2));
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
movx a,@dptr
mov r4,a
mov r0,#(_match_value + 0x0002)
mov @r0,ar4
; src/dap.c:496: match_value[3] = (uint8_t)(*(req + 3));
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
inc dptr
movx a,@dptr
mov r4,a
mov r0,#(_match_value + 0x0003)
mov @r0,ar4
; src/dap.c:497: req += 4;
mov a,#0x04
add a,r6
mov r6,a
clr a
addc a,r7
mov r7,a
; src/dap.c:498: match_retry = match_retry;
; src/dap.c:499: if((request_value & DAP_TRANSFER_APnDP) != 0U) {
mov r0,#_request_value
mov a,@r0
jnb acc.0,00139$
; src/dap.c:501: retry = retry_count;
mov r0,#_retry_count
mov ar2,@r0
inc r0
mov ar4,@r0
mov r0,#_retry
mov @r0,ar2
inc r0
mov @r0,ar4
; src/dap.c:502: do {
00120$:
; src/dap.c:503: response_value = SWD_Transfer(request_value, NULL);
clr a
mov _SWD_Transfer_PARM_2,a
mov (_SWD_Transfer_PARM_2 + 1),a
mov r0,#_request_value
mov dpl,@r0
push ar7
push ar6
lcall _SWD_Transfer
mov r4,dpl
pop ar6
pop ar7
mov r0,#_response_value
mov @r0,ar4
; src/dap.c:504: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r4,#0x02,00122$
mov r0,#_retry
mov ar2,@r0
inc r0
mov ar3,@r0
mov r0,#_retry
mov a,r2
add a,#0xff
mov @r0,a
mov a,r3
addc a,#0xff
inc r0
mov @r0,a
mov a,r2
orl a,r3
jz 00122$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00120$
00122$:
; src/dap.c:505: if(response_value != DAP_TRANSFER_OK) break;
cjne r4,#0x01,00573$
sjmp 00574$
00573$:
ljmp 00226$
00574$:
; src/dap.c:507: do {
00139$:
; src/dap.c:509: retry = retry_count;
mov r0,#_retry_count
mov ar3,@r0
inc r0
mov ar4,@r0
mov r0,#_retry
mov @r0,ar3
inc r0
mov @r0,ar4
; src/dap.c:510: do {
00129$:
; src/dap.c:511: response_value = SWD_Transfer(request_value, data);
mov _SWD_Transfer_PARM_2,#_data
mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
mov r0,#_request_value
mov dpl,@r0
push ar7
push ar6
lcall _SWD_Transfer
mov r4,dpl
pop ar6
pop ar7
mov r0,#_response_value
mov @r0,ar4
; src/dap.c:512: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r4,#0x02,00131$
mov r0,#_retry
mov ar3,@r0
inc r0
mov ar4,@r0
mov r0,#_retry
mov a,r3
add a,#0xff
mov @r0,a
mov a,r4
addc a,#0xff
inc r0
mov @r0,a
mov a,r3
orl a,r4
jz 00131$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00129$
00131$:
; src/dap.c:513: if(response_value != DAP_TRANSFER_OK) break;
mov r0,#_response_value
cjne @r0,#0x01,00579$
sjmp 00580$
00579$:
ljmp 00141$
00580$:
; src/dap.c:515: while(((data[0] & match_mask[0]) != match_value[0] ||
mov dptr,#_data
movx a,@dptr
mov r4,a
mov r0,#_match_mask
mov a,@r0
anl ar4,a
mov r0,#_match_value
mov ar3,@r0
mov a,r4
cjne a,ar3,00137$
; src/dap.c:516: (data[1] & match_mask[1]) != match_value[1] ||
mov dptr,#(_data + 0x0001)
movx a,@dptr
mov r4,a
mov r0,#(_match_mask + 0x0001)
mov a,@r0
anl ar4,a
mov r0,#(_match_value + 0x0001)
mov ar3,@r0
mov a,r4
cjne a,ar3,00137$
; src/dap.c:517: (data[2] & match_mask[2]) != match_value[2] ||
mov dptr,#(_data + 0x0002)
movx a,@dptr
mov r4,a
mov r0,#(_match_mask + 0x0002)
mov a,@r0
anl ar4,a
mov r0,#(_match_value + 0x0002)
mov ar3,@r0
mov a,r4
cjne a,ar3,00137$
; src/dap.c:518: (data[3] & match_mask[3]) != match_value[3]) &&
mov dptr,#(_data + 0x0003)
movx a,@dptr
mov r4,a
mov r0,#(_match_mask + 0x0003)
mov a,@r0
anl ar4,a
mov r0,#(_match_value + 0x0003)
mov ar3,@r0
mov a,r4
cjne a,ar3,00587$
sjmp 00141$
00587$:
00137$:
; src/dap.c:519: match_retry-- && !DAP_TransferAbort);
mov r0,#_match_retry
mov ar3,@r0
inc r0
mov ar4,@r0
mov r0,#_match_retry
mov a,r3
add a,#0xff
mov @r0,a
mov a,r4
addc a,#0xff
inc r0
mov @r0,a
mov a,r3
orl a,r4
jz 00141$
mov r0,#_DAP_TransferAbort
mov a,@r0
jnz 00589$
ljmp 00139$
00589$:
00141$:
; src/dap.c:520: if((data[0] & match_mask[0]) != match_value[0] ||
mov dptr,#_data
movx a,@dptr
mov r4,a
mov r0,#_match_mask
mov a,@r0
anl ar4,a
mov r0,#_match_value
mov ar3,@r0
mov a,r4
cjne a,ar3,00142$
; src/dap.c:521: (data[1] & match_mask[1]) != match_value[1] ||
mov dptr,#(_data + 0x0001)
movx a,@dptr
mov r4,a
mov r0,#(_match_mask + 0x0001)
mov a,@r0
anl ar4,a
mov r0,#(_match_value + 0x0001)
mov ar3,@r0
mov a,r4
cjne a,ar3,00142$
; src/dap.c:522: (data[2] & match_mask[2]) != match_value[2] ||
mov dptr,#(_data + 0x0002)
movx a,@dptr
mov r4,a
mov r0,#(_match_mask + 0x0002)
mov a,@r0
anl ar4,a
mov r0,#(_match_value + 0x0002)
mov ar3,@r0
mov a,r4
cjne a,ar3,00142$
; src/dap.c:523: (data[3] & match_mask[3]) != match_value[3])
mov dptr,#(_data + 0x0003)
movx a,@dptr
mov r4,a
mov r0,#(_match_mask + 0x0003)
mov a,@r0
anl ar4,a
mov r0,#(_match_value + 0x0003)
mov ar3,@r0
mov a,r4
cjne a,ar3,00596$
sjmp 00143$
00596$:
00142$:
; src/dap.c:524: response_value |= DAP_TRANSFER_MISMATCH;
mov r0,#_response_value
mov a,@r0
orl a,#0x10
mov @r0,a
00143$:
; src/dap.c:525: if(response_value != DAP_TRANSFER_OK) break;
mov r0,#_response_value
cjne @r0,#0x01,00597$
ljmp 00170$
00597$:
ljmp 00226$
00169$:
; src/dap.c:529: retry = retry_count;
mov r0,#_retry_count
mov ar3,@r0
inc r0
mov ar4,@r0
mov r0,#_retry
mov @r0,ar3
inc r0
mov @r0,ar4
; src/dap.c:530: if((request_value & DAP_TRANSFER_APnDP) != 0U) {
mov a,r5
jnb acc.0,00160$
; src/dap.c:532: if(post_read == 0U) {
mov a,_DAP_SWD_Transfer_post_read_65536_140
jz 00599$
ljmp 00170$
00599$:
; src/dap.c:534: do {
00151$:
; src/dap.c:535: response_value = SWD_Transfer(request_value, NULL);
clr a
mov _SWD_Transfer_PARM_2,a
mov (_SWD_Transfer_PARM_2 + 1),a
mov r0,#_request_value
mov dpl,@r0
push ar7
push ar6
lcall _SWD_Transfer
mov r5,dpl
pop ar6
pop ar7
mov r0,#_response_value
mov @r0,ar5
; src/dap.c:536: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r5,#0x02,00153$
mov r0,#_retry
mov ar3,@r0
inc r0
mov ar4,@r0
mov r0,#_retry
mov a,r3
add a,#0xff
mov @r0,a
mov a,r4
addc a,#0xff
inc r0
mov @r0,a
mov a,r3
orl a,r4
jz 00153$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00151$
00153$:
; src/dap.c:537: if(response_value != DAP_TRANSFER_OK) break;
cjne r5,#0x01,00604$
sjmp 00605$
00604$:
ljmp 00226$
00605$:
; src/dap.c:538: post_read = 1U;
mov _DAP_SWD_Transfer_post_read_65536_140,#0x01
ljmp 00170$
; src/dap.c:543: do {
00160$:
; src/dap.c:544: response_value = SWD_Transfer(request_value, data);
mov _SWD_Transfer_PARM_2,#_data
mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
mov r0,#_request_value
mov dpl,@r0
push ar7
push ar6
lcall _SWD_Transfer
mov r5,dpl
pop ar6
pop ar7
mov r0,#_response_value
mov @r0,ar5
; src/dap.c:545: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r5,#0x02,00162$
mov r0,#_retry
mov ar3,@r0
inc r0
mov ar4,@r0
mov r0,#_retry
mov a,r3
add a,#0xff
mov @r0,a
mov a,r4
addc a,#0xff
inc r0
mov @r0,a
mov a,r3
orl a,r4
jz 00162$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00160$
00162$:
; src/dap.c:546: if(response_value != DAP_TRANSFER_OK) break;
cjne r5,#0x01,00610$
sjmp 00611$
00610$:
ljmp 00226$
00611$:
; src/dap.c:549: *res++ = data[0];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#_data
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:550: *res++ = data[1];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0001)
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:551: *res++ = data[2];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0002)
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:552: *res++ = data[3];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0003)
movx a,@dptr
mov r3,a
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
00170$:
; src/dap.c:555: check_write = 0U;
mov _DAP_SWD_Transfer_check_write_65536_140,#0x00
ljmp 00192$
00191$:
; src/dap.c:559: if(post_read) {
mov a,_DAP_SWD_Transfer_post_read_65536_140
jnz 00612$
ljmp 00179$
00612$:
; src/dap.c:561: retry = retry_count;
mov r0,#_retry_count
mov ar4,@r0
inc r0
mov ar5,@r0
mov r0,#_retry
mov @r0,ar4
inc r0
mov @r0,ar5
; src/dap.c:562: do {
00173$:
; src/dap.c:563: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, data);
mov _SWD_Transfer_PARM_2,#_data
mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
mov dpl,#0x0e
push ar7
push ar6
lcall _SWD_Transfer
mov r5,dpl
pop ar6
pop ar7
mov r0,#_response_value
mov @r0,ar5
; src/dap.c:564: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r5,#0x02,00175$
mov r0,#_retry
mov ar3,@r0
inc r0
mov ar4,@r0
mov r0,#_retry
mov a,r3
add a,#0xff
mov @r0,a
mov a,r4
addc a,#0xff
inc r0
mov @r0,a
mov a,r3
orl a,r4
jz 00175$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00173$
00175$:
; src/dap.c:565: if(response_value != DAP_TRANSFER_OK) break;
cjne r5,#0x01,00617$
sjmp 00618$
00617$:
ljmp 00226$
00618$:
; src/dap.c:568: *res++ = data[0];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#_data
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:569: *res++ = data[1];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0001)
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:570: *res++ = data[2];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0002)
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:571: *res++ = data[3];
mov r4,_DAP_SWD_Transfer_PARM_2
mov r5,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0003)
movx a,@dptr
mov r3,a
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:572: post_read = 0U;
mov _DAP_SWD_Transfer_post_read_65536_140,#0x00
00179$:
; src/dap.c:575: data[0] = (uint8_t)(*(req + 0));
mov dpl,r6
mov dph,r7
movx a,@dptr
mov dptr,#_data
movx @dptr,a
; src/dap.c:576: data[1] = (uint8_t)(*(req + 1));
mov dpl,r6
mov dph,r7
inc dptr
movx a,@dptr
mov dptr,#(_data + 0x0001)
movx @dptr,a
; src/dap.c:577: data[2] = (uint8_t)(*(req + 2));
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
movx a,@dptr
mov dptr,#(_data + 0x0002)
movx @dptr,a
; src/dap.c:578: data[3] = (uint8_t)(*(req + 3));
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
inc dptr
movx a,@dptr
mov dptr,#(_data + 0x0003)
movx @dptr,a
; src/dap.c:579: req += 4;
mov a,#0x04
add a,r6
mov r6,a
clr a
addc a,r7
mov r7,a
; src/dap.c:580: if((request_value & DAP_TRANSFER_MATCH_MASK) != 0U) {
mov r0,#_request_value
mov a,@r0
jnb acc.5,00188$
; src/dap.c:582: match_mask[0] = data[0];
mov dptr,#_data
movx a,@dptr
mov r5,a
mov r0,#_match_mask
mov @r0,ar5
; src/dap.c:583: match_mask[1] = data[1];
mov dptr,#(_data + 0x0001)
movx a,@dptr
mov r5,a
mov r0,#(_match_mask + 0x0001)
mov @r0,ar5
; src/dap.c:584: match_mask[2] = data[2];
mov dptr,#(_data + 0x0002)
movx a,@dptr
mov r5,a
mov r0,#(_match_mask + 0x0002)
mov @r0,ar5
; src/dap.c:585: match_mask[3] = data[3];
mov dptr,#(_data + 0x0003)
movx a,@dptr
mov r5,a
mov r0,#(_match_mask + 0x0003)
mov @r0,ar5
; src/dap.c:586: response_value = DAP_TRANSFER_OK;
mov r0,#_response_value
mov @r0,#0x01
sjmp 00192$
00188$:
; src/dap.c:590: retry = retry_count;
mov r0,#_retry_count
mov ar4,@r0
inc r0
mov ar5,@r0
mov r0,#_retry
mov @r0,ar4
inc r0
mov @r0,ar5
; src/dap.c:591: do {
00182$:
; src/dap.c:592: response_value = SWD_Transfer(request_value, data);
mov _SWD_Transfer_PARM_2,#_data
mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
mov r0,#_request_value
mov dpl,@r0
push ar7
push ar6
lcall _SWD_Transfer
mov r5,dpl
pop ar6
pop ar7
mov r0,#_response_value
mov @r0,ar5
; src/dap.c:593: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r5,#0x02,00184$
mov r0,#_retry
mov ar3,@r0
inc r0
mov ar4,@r0
mov r0,#_retry
mov a,r3
add a,#0xff
mov @r0,a
mov a,r4
addc a,#0xff
inc r0
mov @r0,a
mov a,r3
orl a,r4
jz 00184$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00182$
00184$:
; src/dap.c:594: if(response_value != DAP_TRANSFER_OK) break;
cjne r5,#0x01,00226$
; src/dap.c:595: check_write = 1U;
mov _DAP_SWD_Transfer_check_write_65536_140,#0x01
00192$:
; src/dap.c:598: response_count++;
mov r0,#_response_count
inc @r0
; src/dap.c:599: if(DAP_TransferAbort) break;
mov r0,#_DAP_TransferAbort
mov a,@r0
jnz 00226$
; src/dap.c:461: for(; request_count != 0U; request_count--) {
mov r0,#_request_count
dec @r0
ljmp 00223$
00226$:
; src/dap.c:602: for(; request_count != 0U; request_count--) {
mov r0,#_request_count
mov a,@r0
jz 00201$
; src/dap.c:604: request_value = *req++;
mov dpl,r6
mov dph,r7
movx a,@dptr
mov r5,a
inc dptr
mov r6,dpl
mov r7,dph
mov r0,#_request_value
mov @r0,ar5
; src/dap.c:605: if((request_value & DAP_TRANSFER_RnW) != 0U) { // Read register
mov a,r5
jnb acc.1,00199$
; src/dap.c:606: if((request_value & DAP_TRANSFER_MATCH_VALUE) != 0U) req += 4;
mov a,r5
jnb acc.4,00227$
mov a,#0x04
add a,r6
mov r6,a
clr a
addc a,r7
mov r7,a
sjmp 00227$
00199$:
; src/dap.c:608: else req += 4; // Write register
mov a,#0x04
add a,r6
mov r6,a
clr a
addc a,r7
mov r7,a
00227$:
; src/dap.c:602: for(; request_count != 0U; request_count--) {
mov r0,#_request_count
dec @r0
sjmp 00226$
00201$:
; src/dap.c:611: if(response_value == DAP_TRANSFER_OK) {
mov r0,#_response_value
cjne @r0,#0x01,00630$
sjmp 00631$
00630$:
ljmp 00221$
00631$:
; src/dap.c:612: if(post_read) {
mov a,_DAP_SWD_Transfer_post_read_65536_140
jnz 00632$
ljmp 00217$
00632$:
; src/dap.c:614: retry = retry_count;
mov r0,#_retry_count
mov ar6,@r0
inc r0
mov ar7,@r0
mov r0,#_retry
mov @r0,ar6
inc r0
mov @r0,ar7
; src/dap.c:615: do {
00204$:
; src/dap.c:616: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, data);
mov _SWD_Transfer_PARM_2,#_data
mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
mov dpl,#0x0e
lcall _SWD_Transfer
mov r7,dpl
mov r0,#_response_value
mov @r0,ar7
; src/dap.c:617: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r7,#0x02,00206$
mov r0,#_retry
mov ar5,@r0
inc r0
mov ar6,@r0
mov r0,#_retry
mov a,r5
add a,#0xff
mov @r0,a
mov a,r6
addc a,#0xff
inc r0
mov @r0,a
mov a,r5
orl a,r6
jz 00206$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00204$
00206$:
; src/dap.c:618: if(response_value != DAP_TRANSFER_OK) goto end;
cjne r7,#0x01,00637$
sjmp 00638$
00637$:
ljmp 00221$
00638$:
; src/dap.c:621: *res++ = (uint8_t)data[0];
mov r6,_DAP_SWD_Transfer_PARM_2
mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#_data
movx a,@dptr
mov dpl,r6
mov dph,r7
movx @dptr,a
mov a,#0x01
add a,r6
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r7
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:622: *res++ = (uint8_t)data[1];
mov r6,_DAP_SWD_Transfer_PARM_2
mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0001)
movx a,@dptr
mov dpl,r6
mov dph,r7
movx @dptr,a
mov a,#0x01
add a,r6
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r7
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:623: *res++ = (uint8_t)data[2];
mov r6,_DAP_SWD_Transfer_PARM_2
mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0002)
movx a,@dptr
mov dpl,r6
mov dph,r7
movx @dptr,a
mov a,#0x01
add a,r6
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r7
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
; src/dap.c:624: *res++ = (uint8_t)data[3];
mov r6,_DAP_SWD_Transfer_PARM_2
mov r7,(_DAP_SWD_Transfer_PARM_2 + 1)
mov dptr,#(_data + 0x0003)
movx a,@dptr
mov r5,a
mov dpl,r6
mov dph,r7
movx @dptr,a
mov a,#0x01
add a,r6
mov _DAP_SWD_Transfer_PARM_2,a
clr a
addc a,r7
mov (_DAP_SWD_Transfer_PARM_2 + 1),a
sjmp 00221$
00217$:
; src/dap.c:626: else if(check_write) {
mov a,_DAP_SWD_Transfer_check_write_65536_140
jz 00221$
; src/dap.c:628: retry = retry_count;
mov r0,#_retry_count
mov ar6,@r0
inc r0
mov ar7,@r0
mov r0,#_retry
mov @r0,ar6
inc r0
mov @r0,ar7
; src/dap.c:629: do {
00211$:
; src/dap.c:630: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, NULL);
clr a
mov _SWD_Transfer_PARM_2,a
mov (_SWD_Transfer_PARM_2 + 1),a
mov dpl,#0x0e
lcall _SWD_Transfer
mov r7,dpl
mov r0,#_response_value
mov @r0,ar7
; src/dap.c:631: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r7,#0x02,00221$
mov r0,#_retry
mov ar6,@r0
inc r0
mov ar7,@r0
mov r0,#_retry
mov a,r6
add a,#0xff
mov @r0,a
mov a,r7
addc a,#0xff
inc r0
mov @r0,a
mov a,r6
orl a,r7
jz 00221$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00211$
; src/dap.c:635: end:
00221$:
; src/dap.c:636: *(response_head + 0) = (uint8_t)response_count;
mov dpl,_DAP_SWD_Transfer_response_head_65536_140
mov dph,(_DAP_SWD_Transfer_response_head_65536_140 + 1)
mov r0,#_response_count
mov a,@r0
movx @dptr,a
; src/dap.c:637: *(response_head + 1) = (uint8_t)response_value;
mov dpl,_DAP_SWD_Transfer_response_head_65536_140
mov dph,(_DAP_SWD_Transfer_response_head_65536_140 + 1)
inc dptr
mov r0,#_response_value
mov a,@r0
movx @dptr,a
; src/dap.c:638: return((uint8_t)(res - response_head));
mov r7,_DAP_SWD_Transfer_PARM_2
mov r4,_DAP_SWD_Transfer_response_head_65536_140
mov a,r7
clr c
subb a,r4
mov dpl,a
; src/dap.c:639: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_SWD_TransferBlock'
;------------------------------------------------------------
;res Allocated with name '_DAP_SWD_TransferBlock_PARM_2'
;req Allocated to registers r6 r7
;response_head Allocated with name '_DAP_SWD_TransferBlock_response_head_65536_175'
;------------------------------------------------------------
; src/dap.c:647: static uint8_t DAP_SWD_TransferBlock(const __xdata uint8_t *req, __xdata uint8_t *res) {
; -----------------------------------------
; function DAP_SWD_TransferBlock
; -----------------------------------------
_DAP_SWD_TransferBlock:
mov r6,dpl
mov r7,dph
; src/dap.c:649: response_count = 0U;
mov r0,#_response_count
mov @r0,#0x00
; src/dap.c:650: response_value = 0U;
mov r0,#_response_value
mov @r0,#0x00
; src/dap.c:651: response_head = res;
mov _DAP_SWD_TransferBlock_response_head_65536_175,_DAP_SWD_TransferBlock_PARM_2
mov (_DAP_SWD_TransferBlock_response_head_65536_175 + 1),(_DAP_SWD_TransferBlock_PARM_2 + 1)
; src/dap.c:652: res += 3;
mov a,#0x03
add a,_DAP_SWD_TransferBlock_response_head_65536_175
mov _DAP_SWD_TransferBlock_PARM_2,a
clr a
addc a,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
; src/dap.c:653: DAP_TransferAbort = 0U;
mov r0,#_DAP_TransferAbort
mov @r0,#0x00
; src/dap.c:654: req++; // ignore DAP index
inc r6
cjne r6,#0x00,00261$
inc r7
00261$:
; src/dap.c:655: request_count = (uint16_t)(*(req + 0) << 0)
mov dpl,r6
mov dph,r7
movx a,@dptr
mov r3,a
; src/dap.c:656: | (uint16_t)(*(req + 1) << 8);
mov dpl,r6
mov dph,r7
inc dptr
movx a,@dptr
clr a
mov r2,a
orl a,r3
mov r0,#_request_count
mov @r0,a
; src/dap.c:657: req += 2;
mov a,#0x02
add a,r6
mov r6,a
clr a
addc a,r7
mov r7,a
; src/dap.c:658: if(request_count == 0U) goto end;
mov r0,#_request_count
mov a,@r0
jnz 00262$
ljmp 00143$
00262$:
; src/dap.c:660: request_value = *req++;
mov dpl,r6
mov dph,r7
movx a,@dptr
mov r3,a
inc r6
cjne r6,#0x00,00263$
inc r7
00263$:
mov r0,#_request_value
mov @r0,ar3
; src/dap.c:661: if((request_value & DAP_TRANSFER_RnW) != 0U) {
mov a,r3
jb acc.1,00264$
ljmp 00165$
00264$:
; src/dap.c:663: if((request_value & DAP_TRANSFER_APnDP) != 0U) {
mov a,r3
jnb acc.0,00159$
; src/dap.c:665: retry = retry_count;
mov r0,#_retry_count
mov ar2,@r0
inc r0
mov ar3,@r0
mov r0,#_retry
mov @r0,ar2
inc r0
mov @r0,ar3
; src/dap.c:666: do {
00105$:
; src/dap.c:667: response_value = SWD_Transfer(request_value, NULL);
clr a
mov _SWD_Transfer_PARM_2,a
mov (_SWD_Transfer_PARM_2 + 1),a
mov r0,#_request_value
mov dpl,@r0
lcall _SWD_Transfer
mov r3,dpl
mov r0,#_response_value
mov @r0,ar3
; src/dap.c:668: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r3,#0x02,00107$
mov r0,#_retry
mov ar2,@r0
inc r0
mov ar5,@r0
mov r0,#_retry
mov a,r2
add a,#0xff
mov @r0,a
mov a,r5
addc a,#0xff
inc r0
mov @r0,a
mov a,r2
orl a,r5
jz 00107$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00105$
00107$:
; src/dap.c:669: if(response_value != DAP_TRANSFER_OK) goto end;
cjne r3,#0x01,00270$
sjmp 00271$
00270$:
ljmp 00143$
00271$:
; src/dap.c:671: while(request_count--) {
00159$:
00122$:
mov r0,#_request_count
mov ar5,@r0
mov r0,#_request_count
mov a,r5
dec a
mov @r0,a
mov a,r5
jnz 00272$
ljmp 00143$
00272$:
; src/dap.c:673: if((request_count == 0U) && ((request_value & DAP_TRANSFER_APnDP) != 0U))
mov r0,#_request_count
mov a,@r0
jnz 00113$
mov r0,#_request_value
mov a,@r0
jnb acc.0,00113$
; src/dap.c:674: request_value = DP_RDBUFF | DAP_TRANSFER_RnW; // Last AP read
mov r0,#_request_value
mov @r0,#0x0e
00113$:
; src/dap.c:675: retry = retry_count;
mov r0,#_retry_count
mov ar4,@r0
inc r0
mov ar5,@r0
mov r0,#_retry
mov @r0,ar4
inc r0
mov @r0,ar5
; src/dap.c:676: do {
00117$:
; src/dap.c:677: response_value = SWD_Transfer(request_value, data);
mov _SWD_Transfer_PARM_2,#_data
mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
mov r0,#_request_value
mov dpl,@r0
lcall _SWD_Transfer
mov r5,dpl
mov r0,#_response_value
mov @r0,ar5
; src/dap.c:678: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r5,#0x02,00119$
mov r0,#_retry
mov ar3,@r0
inc r0
mov ar4,@r0
mov r0,#_retry
mov a,r3
add a,#0xff
mov @r0,a
mov a,r4
addc a,#0xff
inc r0
mov @r0,a
mov a,r3
orl a,r4
jz 00119$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00117$
00119$:
; src/dap.c:679: if(response_value != DAP_TRANSFER_OK) goto end;
cjne r5,#0x01,00279$
sjmp 00280$
00279$:
ljmp 00143$
00280$:
; src/dap.c:682: *res++ = (uint8_t)data[0];
mov r4,_DAP_SWD_TransferBlock_PARM_2
mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
mov dptr,#_data
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_TransferBlock_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
; src/dap.c:683: *res++ = (uint8_t)data[1];
mov r4,_DAP_SWD_TransferBlock_PARM_2
mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
mov dptr,#(_data + 0x0001)
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_TransferBlock_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
; src/dap.c:684: *res++ = (uint8_t)data[2];
mov r4,_DAP_SWD_TransferBlock_PARM_2
mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
mov dptr,#(_data + 0x0002)
movx a,@dptr
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_TransferBlock_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
; src/dap.c:685: *res++ = (uint8_t)data[3];
mov r4,_DAP_SWD_TransferBlock_PARM_2
mov r5,(_DAP_SWD_TransferBlock_PARM_2 + 1)
mov dptr,#(_data + 0x0003)
movx a,@dptr
mov r3,a
mov dpl,r4
mov dph,r5
movx @dptr,a
mov a,#0x01
add a,r4
mov _DAP_SWD_TransferBlock_PARM_2,a
clr a
addc a,r5
mov (_DAP_SWD_TransferBlock_PARM_2 + 1),a
; src/dap.c:686: response_count++;
mov r0,#_response_count
inc @r0
ljmp 00122$
; src/dap.c:691: while(request_count--) {
00165$:
00132$:
mov r0,#_request_count
mov ar5,@r0
mov r0,#_request_count
mov a,r5
dec a
mov @r0,a
mov a,r5
jnz 00281$
ljmp 00134$
00281$:
; src/dap.c:693: data[0] = (uint8_t)(*(req + 0));
mov dpl,r6
mov dph,r7
movx a,@dptr
mov dptr,#_data
movx @dptr,a
; src/dap.c:694: data[1] = (uint8_t)(*(req + 1));
mov dpl,r6
mov dph,r7
inc dptr
movx a,@dptr
mov dptr,#(_data + 0x0001)
movx @dptr,a
; src/dap.c:695: data[2] = (uint8_t)(*(req + 2));
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
movx a,@dptr
mov dptr,#(_data + 0x0002)
movx @dptr,a
; src/dap.c:696: data[3] = (uint8_t)(*(req + 3));
mov dpl,r6
mov dph,r7
inc dptr
inc dptr
inc dptr
movx a,@dptr
mov dptr,#(_data + 0x0003)
movx @dptr,a
; src/dap.c:697: req += 4;
mov a,#0x04
add a,r6
mov r6,a
clr a
addc a,r7
mov r7,a
; src/dap.c:700: retry = retry_count;
mov r0,#_retry_count
mov ar4,@r0
inc r0
mov ar5,@r0
mov r0,#_retry
mov @r0,ar4
inc r0
mov @r0,ar5
; src/dap.c:701: do {
00127$:
; src/dap.c:702: response_value = SWD_Transfer(request_value, data);
mov _SWD_Transfer_PARM_2,#_data
mov (_SWD_Transfer_PARM_2 + 1),#(_data >> 8)
mov r0,#_request_value
mov dpl,@r0
push ar7
push ar6
lcall _SWD_Transfer
mov r5,dpl
pop ar6
pop ar7
mov r0,#_response_value
mov @r0,ar5
; src/dap.c:703: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r5,#0x02,00129$
mov r0,#_retry
mov ar3,@r0
inc r0
mov ar4,@r0
mov r0,#_retry
mov a,r3
add a,#0xff
mov @r0,a
mov a,r4
addc a,#0xff
inc r0
mov @r0,a
mov a,r3
orl a,r4
jz 00129$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00127$
00129$:
; src/dap.c:704: if(response_value != DAP_TRANSFER_OK) goto end;
cjne r5,#0x01,00143$
; src/dap.c:705: response_count++;
mov r0,#_response_count
inc @r0
ljmp 00132$
00134$:
; src/dap.c:708: retry = retry_count;
mov r0,#_retry_count
mov ar6,@r0
inc r0
mov ar7,@r0
mov r0,#_retry
mov @r0,ar6
inc r0
mov @r0,ar7
; src/dap.c:709: do {
00137$:
; src/dap.c:710: response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, NULL);
clr a
mov _SWD_Transfer_PARM_2,a
mov (_SWD_Transfer_PARM_2 + 1),a
mov dpl,#0x0e
lcall _SWD_Transfer
mov r7,dpl
mov r0,#_response_value
mov @r0,ar7
; src/dap.c:711: } while((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort);
cjne r7,#0x02,00143$
mov r0,#_retry
mov ar6,@r0
inc r0
mov ar7,@r0
mov r0,#_retry
mov a,r6
add a,#0xff
mov @r0,a
mov a,r7
addc a,#0xff
inc r0
mov @r0,a
mov a,r6
orl a,r7
jz 00143$
mov r0,#_DAP_TransferAbort
mov a,@r0
jz 00137$
; src/dap.c:714: end:
00143$:
; src/dap.c:715: *(response_head + 0) = response_count;
mov dpl,_DAP_SWD_TransferBlock_response_head_65536_175
mov dph,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
mov r0,#_response_count
mov a,@r0
movx @dptr,a
; src/dap.c:716: *(response_head + 1) = 0;
mov dpl,_DAP_SWD_TransferBlock_response_head_65536_175
mov dph,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
inc dptr
clr a
movx @dptr,a
; src/dap.c:717: *(response_head + 2) = response_value;
mov dpl,_DAP_SWD_TransferBlock_response_head_65536_175
mov dph,(_DAP_SWD_TransferBlock_response_head_65536_175 + 1)
inc dptr
inc dptr
mov r0,#_response_value
mov a,@r0
movx @dptr,a
; src/dap.c:718: return((uint8_t)(res - response_head));
mov r7,_DAP_SWD_TransferBlock_PARM_2
mov r4,_DAP_SWD_TransferBlock_response_head_65536_175
mov a,r7
clr c
subb a,r4
mov dpl,a
; src/dap.c:719: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_TransferBlock'
;------------------------------------------------------------
;res Allocated with name '_DAP_TransferBlock_PARM_2'
;req Allocated to registers r6 r7
;num Allocated to registers r7
;------------------------------------------------------------
; src/dap.c:727: static uint8_t DAP_TransferBlock(const __xdata uint8_t *req, __xdata uint8_t *res) {
; -----------------------------------------
; function DAP_TransferBlock
; -----------------------------------------
_DAP_TransferBlock:
mov r6,dpl
mov r7,dph
; src/dap.c:730: switch(debug_port) {
mov r0,#_debug_port
cjne @r0,#0x01,00102$
; src/dap.c:732: num = DAP_SWD_TransferBlock(req, res);
mov _DAP_SWD_TransferBlock_PARM_2,_DAP_TransferBlock_PARM_2
mov (_DAP_SWD_TransferBlock_PARM_2 + 1),(_DAP_TransferBlock_PARM_2 + 1)
mov dpl,r6
mov dph,r7
lcall _DAP_SWD_TransferBlock
mov r7,dpl
; src/dap.c:733: break;
; src/dap.c:734: default:
sjmp 00103$
00102$:
; src/dap.c:735: *(res + 0) = 0U; // res count [7:0]
mov r5,_DAP_TransferBlock_PARM_2
mov r6,(_DAP_TransferBlock_PARM_2 + 1)
mov dpl,r5
mov dph,r6
clr a
movx @dptr,a
; src/dap.c:736: *(res + 1) = 0U; // res count[15:8]
mov dpl,r5
mov dph,r6
inc dptr
movx @dptr,a
; src/dap.c:737: *(res + 2) = 0U; // res value
mov dpl,r5
mov dph,r6
inc dptr
inc dptr
movx @dptr,a
; src/dap.c:738: num = 3U;
mov r7,#0x03
; src/dap.c:740: }
00103$:
; src/dap.c:741: return num;
mov dpl,r7
; src/dap.c:742: }
ret
;------------------------------------------------------------
;Allocation info for local variables in function 'DAP_Thread'
;------------------------------------------------------------
;num Allocated to registers r6
;req Allocated to registers
;res Allocated to registers
;requested_hz Allocated with name '_DAP_Thread_requested_hz_196608_191'
;half Allocated to registers r3 r4 r5 r6
;sloc0 Allocated with name '_DAP_Thread_sloc0_1_0'
;------------------------------------------------------------
; src/dap.c:747: uint8_t DAP_Thread(void) {
; -----------------------------------------
; function DAP_Thread
; -----------------------------------------
_DAP_Thread:
; src/dap.c:749: uint8_t __xdata *req = DAP_READ_BUF_PTR;
; src/dap.c:750: uint8_t __xdata *res = DAP_WRITE_BUF_PTR;
; src/dap.c:752: *res++ = *req;
mov dptr,#_EP1_buffer
movx a,@dptr
mov dptr,#(_EP1_buffer + 0x0040)
movx @dptr,a
; src/dap.c:753: switch(*req++) {
mov dptr,#_EP1_buffer
movx a,@dptr
mov r7,a
jz 00103$
cjne r7,#0x01,00202$
ljmp 00104$
00202$:
cjne r7,#0x02,00203$
ljmp 00105$
00203$:
cjne r7,#0x03,00204$
ljmp 00106$
00204$:
cjne r7,#0x04,00205$
ljmp 00117$
00205$:
cjne r7,#0x05,00206$
sjmp 00101$
00206$:
cjne r7,#0x06,00207$
sjmp 00102$
00207$:
cjne r7,#0x08,00208$
ljmp 00118$
00208$:
cjne r7,#0x10,00209$
ljmp 00107$
00209$:
cjne r7,#0x11,00210$
ljmp 00108$
00210$:
cjne r7,#0x12,00211$
ljmp 00114$
00211$:
cjne r7,#0x13,00212$
ljmp 00115$
00212$:
cjne r7,#0x1d,00213$
ljmp 00116$
00213$:
ljmp 00121$
; src/dap.c:754: case ID_DAP_Transfer:
00101$:
; src/dap.c:755: num = DAP_SWD_Transfer(req, res);
mov _DAP_SWD_Transfer_PARM_2,#(_EP1_buffer + 0x0041)
mov (_DAP_SWD_Transfer_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
mov dptr,#(_EP1_buffer + 0x0001)
lcall _DAP_SWD_Transfer
mov r7,dpl
; src/dap.c:756: break;
ljmp 00122$
; src/dap.c:757: case ID_DAP_TransferBlock:
00102$:
; src/dap.c:758: num = DAP_TransferBlock(req, res);
mov _DAP_TransferBlock_PARM_2,#(_EP1_buffer + 0x0041)
mov (_DAP_TransferBlock_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
mov dptr,#(_EP1_buffer + 0x0001)
lcall _DAP_TransferBlock
mov r7,dpl
; src/dap.c:759: break;
ljmp 00122$
; src/dap.c:760: case ID_DAP_Info:
00103$:
; src/dap.c:761: num = DAP_Info(*req, res + 1);
mov dptr,#(_EP1_buffer + 0x0001)
movx a,@dptr
mov r6,a
mov a,#0x01
add a,#(_EP1_buffer + 0x0041)
mov _DAP_Info_PARM_2,a
clr a
addc a,#((_EP1_buffer + 0x0041) >> 8)
mov (_DAP_Info_PARM_2 + 1),a
mov dpl,r6
lcall _DAP_Info
mov r6,dpl
; src/dap.c:762: *res = (uint8_t)num;
mov dptr,#(_EP1_buffer + 0x0041)
mov a,r6
movx @dptr,a
; src/dap.c:763: num++;
mov a,r6
inc a
mov r7,a
; src/dap.c:764: break;
ljmp 00122$
; src/dap.c:765: case ID_DAP_HostStatus:
00104$:
; src/dap.c:766: num = DAP_HostStatus(req, res);
mov _DAP_HostStatus_PARM_2,#(_EP1_buffer + 0x0041)
mov (_DAP_HostStatus_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
mov dptr,#(_EP1_buffer + 0x0001)
lcall _DAP_HostStatus
mov r7,dpl
; src/dap.c:767: break;
ljmp 00122$
; src/dap.c:768: case ID_DAP_Connect:
00105$:
; src/dap.c:769: num = DAP_Connect(req, res);
mov _DAP_Connect_PARM_2,#(_EP1_buffer + 0x0041)
mov (_DAP_Connect_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
mov dptr,#(_EP1_buffer + 0x0001)
lcall _DAP_Connect
mov r7,dpl
; src/dap.c:770: break;
ljmp 00122$
; src/dap.c:771: case ID_DAP_Disconnect:
00106$:
; src/dap.c:772: num = DAP_Disconnect(res);
mov dptr,#(_EP1_buffer + 0x0041)
lcall _DAP_Disconnect
mov r7,dpl
; src/dap.c:773: break;
ljmp 00122$
; src/dap.c:774: case ID_DAP_SWJ_Pins:
00107$:
; src/dap.c:775: num = DAP_SWJ_Pins(req, res);
mov _DAP_SWJ_Pins_PARM_2,#(_EP1_buffer + 0x0041)
mov (_DAP_SWJ_Pins_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
mov dptr,#(_EP1_buffer + 0x0001)
lcall _DAP_SWJ_Pins
mov r7,dpl
; src/dap.c:776: break;
ljmp 00122$
; src/dap.c:777: case ID_DAP_SWJ_Clock: {
00108$:
; src/dap.c:778: uint32_t requested_hz = (uint32_t)req[0] | ((uint32_t)req[1]<<8)
mov dptr,#(_EP1_buffer + 0x0001)
movx a,@dptr
mov r6,a
mov _DAP_Thread_sloc0_1_0,r6
mov (_DAP_Thread_sloc0_1_0 + 1),#0x00
mov (_DAP_Thread_sloc0_1_0 + 2),#0x00
mov (_DAP_Thread_sloc0_1_0 + 3),#0x00
mov dptr,#(_EP1_buffer + 0x0002)
movx a,@dptr
mov r0,a
mov r1,#0x00
mov r2,#0x00
mov ar6,r2
mov ar2,r1
mov ar1,r0
clr a
orl _DAP_Thread_sloc0_1_0,a
mov a,r1
orl (_DAP_Thread_sloc0_1_0 + 1),a
mov a,r2
orl (_DAP_Thread_sloc0_1_0 + 2),a
mov a,r6
orl (_DAP_Thread_sloc0_1_0 + 3),a
mov dptr,#(_EP1_buffer + 0x0003)
movx a,@dptr
mov r3,a
mov r4,#0x00
mov ar6,r4
mov ar5,r3
clr a
mov r3,a
mov r4,a
orl _DAP_Thread_sloc0_1_0,a
mov a,r4
orl (_DAP_Thread_sloc0_1_0 + 1),a
mov a,r5
orl (_DAP_Thread_sloc0_1_0 + 2),a
mov a,r6
orl (_DAP_Thread_sloc0_1_0 + 3),a
mov dptr,#(_EP1_buffer + 0x0004)
movx a,@dptr
mov r6,a
clr a
mov r0,a
mov r1,a
mov r2,a
mov a,r0
orl a,_DAP_Thread_sloc0_1_0
mov _DAP_Thread_requested_hz_196608_191,a
mov a,r1
orl a,(_DAP_Thread_sloc0_1_0 + 1)
mov (_DAP_Thread_requested_hz_196608_191 + 1),a
mov a,r2
orl a,(_DAP_Thread_sloc0_1_0 + 2)
mov (_DAP_Thread_requested_hz_196608_191 + 2),a
mov a,r6
orl a,(_DAP_Thread_sloc0_1_0 + 3)
mov (_DAP_Thread_requested_hz_196608_191 + 3),a
; src/dap.c:781: if(requested_hz < 8UL) { *res = DAP_ERROR; }
clr c
mov a,_DAP_Thread_requested_hz_196608_191
subb a,#0x08
mov a,(_DAP_Thread_requested_hz_196608_191 + 1)
subb a,#0x00
mov a,(_DAP_Thread_requested_hz_196608_191 + 2)
subb a,#0x00
mov a,(_DAP_Thread_requested_hz_196608_191 + 3)
subb a,#0x00
jnc 00112$
mov dptr,#(_EP1_buffer + 0x0041)
mov a,#0xff
movx @dptr,a
sjmp 00113$
00112$:
; src/dap.c:783: if(requested_hz > 100000UL) requested_hz = 100000UL;
clr c
mov a,#0xa0
subb a,_DAP_Thread_requested_hz_196608_191
mov a,#0x86
subb a,(_DAP_Thread_requested_hz_196608_191 + 1)
mov a,#0x01
subb a,(_DAP_Thread_requested_hz_196608_191 + 2)
clr a
subb a,(_DAP_Thread_requested_hz_196608_191 + 3)
jnc 00110$
mov _DAP_Thread_requested_hz_196608_191,#0xa0
mov (_DAP_Thread_requested_hz_196608_191 + 1),#0x86
mov (_DAP_Thread_requested_hz_196608_191 + 2),#0x01
mov (_DAP_Thread_requested_hz_196608_191 + 3),#0x00
00110$:
; src/dap.c:784: half = (500000UL + requested_hz - 1UL) / requested_hz;
mov a,#0x1f
add a,_DAP_Thread_requested_hz_196608_191
mov r0,a
mov a,#0xa1
addc a,(_DAP_Thread_requested_hz_196608_191 + 1)
mov r1,a
mov a,#0x07
addc a,(_DAP_Thread_requested_hz_196608_191 + 2)
mov r2,a
clr a
addc a,(_DAP_Thread_requested_hz_196608_191 + 3)
mov r6,a
mov __divulong_PARM_2,_DAP_Thread_requested_hz_196608_191
mov (__divulong_PARM_2 + 1),(_DAP_Thread_requested_hz_196608_191 + 1)
mov (__divulong_PARM_2 + 2),(_DAP_Thread_requested_hz_196608_191 + 2)
mov (__divulong_PARM_2 + 3),(_DAP_Thread_requested_hz_196608_191 + 3)
mov dpl,r0
mov dph,r1
mov b,r2
mov a,r6
lcall __divulong
mov r3,dpl
mov r4,dph
mov r5,b
mov r6,a
; src/dap.c:785: ring_swd_half_period_us = (uint16_t)half;
mov _ring_swd_half_period_us,r3
mov (_ring_swd_half_period_us + 1),r4
; src/dap.c:786: *res = DAP_OK;
mov dptr,#(_EP1_buffer + 0x0041)
clr a
movx @dptr,a
00113$:
; src/dap.c:788: num = 1;
mov r7,#0x01
; src/dap.c:789: break;
; src/dap.c:791: case ID_DAP_SWJ_Sequence:
sjmp 00122$
00114$:
; src/dap.c:792: num = DAP_SWJ_Sequence(req, res);
mov _DAP_SWJ_Sequence_PARM_2,#(_EP1_buffer + 0x0041)
mov (_DAP_SWJ_Sequence_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
mov dptr,#(_EP1_buffer + 0x0001)
lcall _DAP_SWJ_Sequence
mov r7,dpl
; src/dap.c:793: break;
; src/dap.c:794: case ID_DAP_SWD_Configure:
sjmp 00122$
00115$:
; src/dap.c:795: *res = DAP_OK;
mov dptr,#(_EP1_buffer + 0x0041)
clr a
movx @dptr,a
; src/dap.c:796: num = 1;
mov r7,#0x01
; src/dap.c:797: break;
; src/dap.c:798: case ID_DAP_SWD_Sequence:
sjmp 00122$
00116$:
; src/dap.c:799: num = DAP_SWD_Sequence(req, res);
mov _DAP_SWD_Sequence_PARM_2,#(_EP1_buffer + 0x0041)
mov (_DAP_SWD_Sequence_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
mov dptr,#(_EP1_buffer + 0x0001)
lcall _DAP_SWD_Sequence
mov r7,dpl
; src/dap.c:800: break;
; src/dap.c:801: case ID_DAP_TransferConfigure:
sjmp 00122$
00117$:
; src/dap.c:802: num = DAP_TransferConfigure(req, res);
mov _DAP_TransferConfigure_PARM_2,#(_EP1_buffer + 0x0041)
mov (_DAP_TransferConfigure_PARM_2 + 1),#((_EP1_buffer + 0x0041) >> 8)
mov dptr,#(_EP1_buffer + 0x0001)
lcall _DAP_TransferConfigure
mov r7,dpl
; src/dap.c:803: break;
; src/dap.c:804: case ID_DAP_WriteABORT:
sjmp 00122$
00118$:
; src/dap.c:805: *res = DAP_OK;
mov dptr,#(_EP1_buffer + 0x0041)
clr a
movx @dptr,a
; src/dap.c:806: num = 1;
mov r7,#0x01
; src/dap.c:807: break;
; src/dap.c:810: default:
sjmp 00122$
00121$:
; src/dap.c:811: *(res - 1) = ID_DAP_Invalid;
mov dptr,#(_EP1_buffer + 0x0040)
mov a,#0xff
movx @dptr,a
; src/dap.c:812: num = 1;
mov r7,#0x01
; src/dap.c:814: }
00122$:
; src/dap.c:815: return(num + 1);
mov a,r7
inc a
mov dpl,a
; src/dap.c:816: }
ret
.area CSEG (CODE)
.area CONST (CODE)
.area CONST (CODE)
__str_0:
.ascii "1.2.1"
.db 0x00
.area CSEG (CODE)
.area CABS (ABS,CODE)