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

📄 demo.s90

📁 Flashfile system for avr, ICC, IAR compiled with examples. very cool
💻 S90
📖 第 1 页 / 共 5 页
字号:
	RJMP	??scan_directory_16
	CLR	R14
	CLR	R15
	RJMP	??scan_directory_17
??scan_directory_18:
	MOVW	R31 : R30,R11 : R10
	LD	R16,Z
	CPI	R16,229
	BREQ	$+2+2
	RJMP	??scan_directory_19
	MOVW	R31 : R30,R7 : R6
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	MOVW	R1 : R0,R9 : R8
	CLR	R2
	ADD	R0,R16
	ADC	R1,R17
	ADC	R2,R18
	MOV	R3,R2
	MOV	R2,R1
	MOV	R1,R0
	CLR	R0
	LSL	R1
	ROL	R2
	ROL	R3
	MOVW	R17 : R16,R15 : R14
	MOVW	R19 : R18,R17 : R16
	LDI	R20,5
	MOVW	R17 : R16,R19 : R18
	CALL	?S_SHL_L02
	MOVW	R25 : R24,R17 : R16
	LDI	R26,0
	LDI	R27,0
	ADD	R24,R0
	ADC	R25,R1
	ADC	R26,R2
	ADC	R27,R3
	LD	R16,Y
	ORI	R16,0x10
	ST	Y,R16
??scan_directory_20:
	LDD	R16,Y+1
	LDD	R17,Y+2
	SUBI	R16,255
	SBCI	R17,255
	STD	Y+1,R16
	STD	Y+2,R17
	LDI	R16,1
	ADD	R14,R16
	LDI	R16,0
	ADC	R15,R16
??scan_directory_17:
	LDI	R16,16
	CP	R14,R16
	LDI	R16,0
	CPC	R15,R16
	BRCS	$+2+2
	RJMP	??scan_directory_21
	LDI	R18,LOW(_FF_buff)
	LDI	R19,(_FF_buff) >> 8
	MOVW	R17 : R16,R15 : R14
	MOVW	R23 : R22,R17 : R16
	LDI	R20,5
	MOVW	R17 : R16,R23 : R22
	CALL	?S_SHL_L02
	MOVW	R11 : R10,R19 : R18
	ADD	R10,R16
	ADC	R11,R17
	MOVW	R5 : R4,R29 : R28
	LDI	R16,5
	ADD	R4,R16
	LDI	R16,0
	ADC	R5,R16
	MOVW	R31 : R30,R11 : R10
	LD	R16,Z
	TST	R16
	BREQ	$+2+2
	RJMP	??scan_directory_18
	LD	R16,Y
	SBRC	R16,4
	RJMP	??scan_directory_22
	MOVW	R31 : R30,R7 : R6
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	CLR	R10
	ADD	R8,R16
	ADC	R9,R17
	ADC	R10,R18
	MOV	R11,R10
	MOV	R10,R9
	MOV	R9,R8
	CLR	R8
	LSL	R9
	ROL	R10
	ROL	R11
	MOVW	R17 : R16,R15 : R14
	LDI	R20,5
	CALL	?S_SHL_L02
	MOVW	R25 : R24,R17 : R16
	LDI	R26,0
	LDI	R27,0
	ADD	R24,R8
	ADC	R25,R9
	ADC	R26,R10
	ADC	R27,R11
??scan_directory_22:
	MOVW	R31 : R30,R7 : R6
	ST	Z,R24
	STD	Z+1,R25
	STD	Z+2,R26
	STD	Z+3,R27
	LDI	R16,0
	LDI	R17,0
	RJMP	??scan_directory_10
??scan_directory_19:
	LD	R16,Y
	SBRS	R16,0
	RJMP	??scan_directory_23
	LDI	R20,11
	LDI	R21,0
	MOVW	R19 : R18,R11 : R10
	MOVW	R17 : R16,R5 : R4
	RCALL	_FF_strncmp
	OR	R16,R17
	BREQ	$+2+2
	RJMP	??scan_directory_20
	MOVW	R31 : R30,R7 : R6
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	CLR	R10
	ADD	R8,R16
	ADC	R9,R17
	ADC	R10,R18
	MOV	R11,R10
	MOV	R10,R9
	MOV	R9,R8
	CLR	R8
	LSL	R9
	ROL	R10
	ROL	R11
	MOVW	R17 : R16,R15 : R14
	LDI	R20,5
	CALL	?S_SHL_L02
	MOVW	R25 : R24,R17 : R16
	LDI	R26,0
	LDI	R27,0
	ADD	R24,R8
	ADC	R25,R9
	ADC	R26,R10
	ADC	R27,R11
	MOVW	R31 : R30,R7 : R6
	ST	Z,R24
	STD	Z+1,R25
	STD	Z+2,R26
	STD	Z+3,R27
	LDI	R16,255
	LDI	R17,255
	RJMP	??scan_directory_10
??scan_directory_23:
	LDI	R20,11
	LDI	R21,0
	MOVW	R19 : R18,R11 : R10
	MOVW	R17 : R16,R5 : R4
	RCALL	_FF_strncmp
	OR	R16,R17
	BREQ	$+2+2
	RJMP	??scan_directory_20
	MOVW	R31 : R30,R11 : R10
	LDD	R16,Z+11
	SBRS	R16,4
	RJMP	??scan_directory_20
	MOVW	R31 : R30,R7 : R6
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	CLR	R10
	ADD	R8,R16
	ADC	R9,R17
	ADC	R10,R18
	MOV	R11,R10
	MOV	R10,R9
	MOV	R9,R8
	CLR	R8
	LSL	R9
	ROL	R10
	ROL	R11
	MOVW	R17 : R16,R15 : R14
	LDI	R20,5
	CALL	?S_SHL_L02
	MOVW	R25 : R24,R17 : R16
	LDI	R26,0
	LDI	R27,0
	ADD	R24,R8
	ADC	R25,R9
	ADC	R26,R10
	ADC	R27,R11
	MOVW	R31 : R30,R7 : R6
	ST	Z,R24
	STD	Z+1,R25
	STD	Z+2,R26
	STD	Z+3,R27
	LDI	R16,255
	LDI	R17,255
	RJMP	??scan_directory_10
??scan_directory_21:
	LDI	R16,1
	ADD	R8,R16
	LDI	R16,0
	ADC	R9,R16
	LDD	R16,Y+1
	LDD	R17,Y+2
	CP	R16,R12
	CPC	R17,R13
	BREQ	$+2+2
	RJMP	??scan_directory_14
	LD	R16,Y
	SBRS	R16,7
	RJMP	??scan_directory_14
	LDI	R18,2
	LDD	R16,Y+3
	LDD	R17,Y+4
	RCALL	next_cluster
	MOVW	R9 : R8,R17 : R16
	LDI	R16,255
	CP	R8,R16
	LDI	R16,255
	CPC	R9,R16
	BREQ	$+2+2
	RJMP	??scan_directory_15
	LD	R16,Y
	SBRC	R16,4
	RJMP	??scan_directory_16
	LDI	R30,LOW(_FF_ROOT_ADDR)
	LDI	R31,(_FF_ROOT_ADDR) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	MOVW	R31 : R30,R7 : R6
	LD	R20,Z
	LDD	R21,Z+1
	LDD	R22,Z+2
	LDD	R23,Z+3
	CP	R16,R20
	CPC	R17,R21
	CPC	R18,R22
	CPC	R19,R23
	BRCS	$+2+2
	RJMP	??scan_directory_14
	LDI	R16,0
	LDI	R17,0
	LDI	R18,0
	LDI	R19,0
	MOVW	R31 : R30,R7 : R6
	ST	Z,R16
	STD	Z+1,R17
	STD	Z+2,R18
	STD	Z+3,R19
	LDD	R16,Y+3
	LDD	R17,Y+4
	RJMP	??scan_directory_10
??scan_directory_16:
	LD	R16,Y
	SBRS	R16,4
	RJMP	??scan_directory_24
	MOVW	R31 : R30,R7 : R6
	ST	Z,R24
	STD	Z+1,R25
	STD	Z+2,R26
	STD	Z+3,R27
	LDI	R16,0
	LDI	R17,0
	RJMP	??scan_directory_10
??scan_directory_24:
	LDI	R16,0
	LDI	R17,0
	LDI	R18,0
	LDI	R19,0
	MOVW	R31 : R30,R7 : R6
	ST	Z,R16
	STD	Z+1,R17
	STD	Z+2,R18
	STD	Z+3,R19
	LDI	R16,255
	LDI	R17,255
??scan_directory_10:
	ADIW	R29 : R28,19
	LDI	R30,16
	JMP	?EPILOGUE_B16_L09

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash __CR
__CR:
        DB 13

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash __LF
__LF:
        DB 10

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash __Tab
__Tab:
        DB 9

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash __OpenBracket
__OpenBracket:
        DB 91

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash __Period
__Period:
        DB 46

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash FileList_str[27]
FileList_str:
        DB "\015\012File Listing for:  ROOT\\"

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash SC_str[7]
SC_str:
        DB "]	(%X)"

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash Entry_str[19]
Entry_str:
        DB "	[%ld] bytes	(%X)	"

        RSEG CODE:CODE:NOROOT(1)
// __nearfunc void read_directory()
read_directory:
	CALL	?PROLOGUE16_L09
	REQUIRE	?Register_R4_is_cg_reg
	REQUIRE	?Register_R5_is_cg_reg
	REQUIRE	?Register_R6_is_cg_reg
	REQUIRE	?Register_R7_is_cg_reg
	REQUIRE	?Register_R8_is_cg_reg
	REQUIRE	?Register_R9_is_cg_reg
	REQUIRE	?Register_R10_is_cg_reg
	REQUIRE	?Register_R11_is_cg_reg
	REQUIRE	?Register_R12_is_cg_reg
	REQUIRE	?Register_R14_is_cg_reg
	REQUIRE	?Register_R15_is_cg_reg
	SBIW	R29 : R28,6
	LDI	R30,LOW(_FF_DIR_ADDR)
	LDI	R31,(_FF_DIR_ADDR) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	LDI	R30,LOW(_FF_ROOT_ADDR)
	LDI	R31,(_FF_ROOT_ADDR) >> 8
	LD	R20,Z
	LDD	R21,Z+1
	LDD	R22,Z+2
	LDD	R23,Z+3
	CP	R16,R20
	CPC	R17,R21
	CPC	R18,R22
	CPC	R19,R23
	BREQ	??read_directory_0
	LDI	R30,LOW(_FF_DIR_ADDR)
	LDI	R31,(_FF_DIR_ADDR) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	RCALL	addr_to_clust
	MOVW	R15 : R14,R17 : R16
	MOV	R16,R14
	OR	R16,R15
	BRNE	$+2+2
	RJMP	??read_directory_1
??read_directory_0:
	LDI	R16,LOW(FileList_str)
	LDI	R17,HIGH(FileList_str)
	LDI	R18,(FileList_str) >> 16
	CALL	printf_P
	LDI	R26,0
	LDI	R27,0
	RJMP	??read_directory_2
??read_directory_3:
	MOVW	R31 : R30,R27 : R26
	SUBI	R30,LOW((-(_FF_FULL_PATH) & 0xFFFF))
	SBCI	R31,(-(_FF_FULL_PATH) & 0xFFFF) >> 8
	LD	R16,Z
	LDI	R17,0
	RCALL	putchar
	ADIW	R27 : R26,1
??read_directory_2:
	CPI	R26,50
	LDI	R16,0
	CPC	R27,R16
	BRCC	??read_directory_4
	MOVW	R31 : R30,R27 : R26
	SUBI	R30,LOW((-(_FF_FULL_PATH) & 0xFFFF))
	SBCI	R31,(-(_FF_FULL_PATH) & 0xFFFF) >> 8
	LD	R16,Z
	TST	R16
	BRNE	??read_directory_3
??read_directory_4:
	LDI	R30,LOW(_FF_DIR_ADDR)
	LDI	R31,(_FF_DIR_ADDR) >> 8
	LD	R4,Z
	LDD	R5,Z+1
	LDD	R6,Z+2
	LDD	R7,Z+3
	LDI	R26,0
	LDI	R27,0
	CLR	R8
	CLR	R9
	RJMP	??read_directory_5
??read_directory_6:
	MOVW	R17 : R16,R9 : R8
	RCALL	clust_to_addr
	MOVW	R5 : R4,R17 : R16
	MOVW	R7 : R6,R19 : R18
	MOVW	R15 : R14,R9 : R8
	LDI	R26,0
	LDI	R27,0
	CLR	R8
	CLR	R9
??read_directory_5:
	LDI	R30,LOW(BPB_RootEntCnt)
	LDI	R31,(BPB_RootEntCnt) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	CP	R26,R16
	CPC	R27,R17
	BRCS	$+2+2
	RJMP	??read_directory_7
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	MOVW	R17 : R16,R9 : R8
	LDI	R18,0
	LDI	R19,0
	ADD	R16,R4
	ADC	R17,R5
	ADC	R18,R6
	ADC	R19,R7
	RCALL	_FF_read
	TST	R16
	BRNE	$+2+2
	RJMP	??read_directory_7
	CLR	R10
	CLR	R11
	RJMP	??read_directory_8
??read_directory_9:
	LD	R16,Y
	LDD	R17,Y+1
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	LDI	R17,0
	RCALL	putchar
	ADIW	R25 : R24,1
??read_directory_10:
	CPI	R24,11
	LDI	R16,0
	CPC	R25,R16
	BRCC	??read_directory_11
	MOVW	R17 : R16,R11 : R10
	MOVW	R19 : R18,R17 : R16
	LDI	R20,5
	MOVW	R17 : R16,R19 : R18
	CALL	?S_SHL_L02
	ADD	R16,R24
	ADC	R17,R25
	ST	Y,R16
	STD	Y+1,R17
	LD	R16,Y
	LDD	R17,Y+1
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	CPI	R16,32
	BRNE	??read_directory_9
??read_directory_11:
	MOVW	R17 : R16,R11 : R10
	MOVW	R19 : R18,R17 : R16
	LDI	R20,5
	MOVW	R17 : R16,R19 : R18
	CALL	?S_SHL_L02
	MOVW	R25 : R24,R17 : R16
	MOVW	R17 : R16,R25 : R24
	SUBI	R16,225
	SBCI	R17,255
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	STD	Y+3,R16
	MOVW	R17 : R16,R25 : R24
	SUBI	R16,226
	SBCI	R17,255
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	STD	Y+2,R16
	MOVW	R17 : R16,R25 : R24
	SUBI	R16,227
	SBCI	R17,255
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	STD	Y+1,R16
	MOVW	R17 : R16,R25 : R24
	SUBI	R16,228
	SBCI	R17,255
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	ST	Y,R16
	MOVW	R17 : R16,R25 : R24
	SUBI	R16,229
	SBCI	R17,255
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	STD	Y+5,R16
	ADIW	R25 : R24,26
	MOVW	R31 : R30,R25 : R24
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	STD	Y+4,R16
	LDD	R16,Y+4
	LDD	R17,Y+5
	ST	-Y,R17
	ST	-Y,R16
	LDD	R16,Y+2
	LDD	R17,Y+3
	LDD	R18,Y+4
	LDD	R19,Y+5
	ST	-Y,R19
	ST	-Y,R18
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(Entry_str)
	LDI	R17,HIGH(Entry_str)
	LDI	R18,(Entry_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,6
??read_directory_12:
	ADIW	R27 : R26,1
	LDI	R16,1
	ADD	R10,R16
	LDI	R16,0
	ADC	R11,R16
??read_directory_8:
	LDI	R16,16
	CP	R10,R16
	LDI	R16,0
	CPC	R11,R16
	BRCS	$+2+2
	RJMP	??read_directory_13
	CLR	R12
	INC	R12
	LDI	R24,0
	LDI	R25,0
	RJMP	??read_directory_14
??read_directory_15:
	CLR	R12
	INC	R12
	MOVW	R17 : R16,R11 : R10
	MOVW	R19 : R18,R17 : R16
	LDI	R20,5
	MOVW	R17 : R16,R19 : R18
	CALL	?S_SHL_L02
	ADD	R16,R24
	ADC	R17,R25
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	RCALL	valid_file_char
	OR	R16,R17
	BREQ	??read_directory_16
	CLR	R12
??read_directory_16:
	ADIW	R25 : R24,1
??read_directory_14:
	CPI	R24,11
	LDI	R16,0
	CPC	R25,R16
	BRCC	??read_directory_17
	TST	R12
	BREQ	??read_directory_17
	MOVW	R17 : R16,R11 : R10
	MOVW	R19 : R18,R17 : R16
	LDI	R20,5
	MOVW	R17 : R16,R19 : R18
	CALL	?S_SHL_L02
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	TST	R16
	BRNE	??read_directory_15
	LDI	R16,16
	MOV	R10,R16
	CLR	R11
	LDI	R30,LOW(BPB_RootEntCnt)
	LDI	R31,(BPB_RootEntCnt) >> 8
	LD	R26,Z
	LDD	R27,Z+1
	CLR	R12
	RJMP	??read_directory_16
??read_directory_17:
	TST	R12
	BREQ	??read_directory_12
	MOVW	R17 : R16,R11 : R10
	MOVW	R19 : R18,R17 : R16
	LDI	R20,5
	MOVW	R17 : R16,R19 : R18
	CALL	?S_SHL_L02
	SUBI	R16,245
	SBCI	R17,255
	ST	Y,R16
	STD	Y+1,R17
	LD	R16,Y
	LDD	R17,Y+1
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R12,Z
	LDI	R30,LOW(__CR)
	LDI	R31,HIGH(__CR)
	LDI	R19,(__CR) >> 16
	OUT	0x3B,R19
	ELPM	R16,Z
	LDI	R17,0
	RCALL	putchar
	LDI	R30,LOW(__LF)
	LDI	R31,HIGH(__LF)
	LDI	R19,(__LF) >> 16
	OUT	0x3B,R19
	ELPM	R16,Z
	LDI	R17,0
	RCALL	putchar

⌨️ 快捷键说明

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