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)