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

📄 demo.s90

📁 Flashfile system for avr, ICC, IAR compiled with examples. very cool
💻 S90
📖 第 1 页 / 共 5 页
字号:
	TST	R16
	BREQ	??initialize_media_12
	LDS	R16,(_FF_buff + 503)
	STD	Y+1,R16
	LDS	R16,(_FF_buff + 502)
	ST	Y,R16
	RJMP	??initialize_media_8
??initialize_media_12:
	LDS	R16,(_FF_buff + 455)
	STD	Y+1,R16
	LDS	R16,(_FF_buff + 454)
	ST	Y,R16
??initialize_media_8:
	LD	R16,Y
	LDD	R17,Y+1
	LDI	R30,LOW(_FF_PART_ADDR)
	LDI	R31,(_FF_PART_ADDR) >> 8
	ST	Z,R16
	STD	Z+1,R17
	LD	R16,Y
	LDD	R17,Y+1
	OR	R16,R17
	BREQ	??initialize_media_13
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	LDI	R30,LOW(_FF_PART_ADDR)
	LDI	R31,(_FF_PART_ADDR) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDI	R18,0
	LDI	R19,0
	RCALL	_FF_read
	TST	R16
	BRNE	??initialize_media_14
	LDI	R16,LOW(_FF_RErr_str)
	LDI	R17,HIGH(_FF_RErr_str)
	LDI	R18,(_FF_RErr_str) >> 16
	CALL	printf_P
	LDI	R16,1
	STS	_FF_error,R16
	LDI	R16,0
	RJMP	??initialize_media_1
??initialize_media_14:
	LDS	R16,(_FF_buff + 510)
	CPI	R16,85
	BRNE	??initialize_media_15
	LDS	R16,(_FF_buff + 511)
	CPI	R16,170
	BRNE	??initialize_media_15
	LDS	R16,_FF_buff
	CPI	R16,235
	BRNE	??initialize_media_16
	LDS	R16,(_FF_buff + 2)
	CPI	R16,144
	BREQ	??initialize_media_13
??initialize_media_16:
	LDS	R16,_FF_buff
	CPI	R16,233
	BREQ	??initialize_media_13
??initialize_media_15:
	LDI	R16,LOW(_FF_InvParTbl_str)
	LDI	R17,HIGH(_FF_InvParTbl_str)
	LDI	R18,(_FF_InvParTbl_str) >> 16
	CALL	printf_P
	LDI	R16,18
	STS	_FF_error,R16
	LDI	R16,0
	RJMP	??initialize_media_1
??initialize_media_13:
	LDS	R16,(_FF_buff + 511)
	LDI	R17,0
	ST	-Y,R17
	ST	-Y,R16
	LDS	R16,(_FF_buff + 510)
	LDI	R17,0
	ST	-Y,R17
	ST	-Y,R16
	LDS	R16,(_FF_buff + 2)
	LDI	R17,0
	ST	-Y,R17
	ST	-Y,R16
	LDS	R16,(_FF_buff + 1)
	LDI	R17,0
	ST	-Y,R17
	ST	-Y,R16
	LDS	R16,_FF_buff
	LDI	R17,0
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_BSec_str)
	LDI	R17,HIGH(_FF_BSec_str)
	LDI	R18,(_FF_BSec_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,10
	LDS	R16,(_FF_buff + 12)
	CPI	R16,2
	BRNE	??initialize_media_17
	LDS	R16,(_FF_buff + 11)
	TST	R16
	BREQ	??initialize_media_18
??initialize_media_17:
	LDI	R16,0
	RJMP	??initialize_media_1
??initialize_media_18:
	LDS	R16,(_FF_buff + 13)
	STS	BPB_SecPerClus,R16
	LDS	R16,(_FF_buff + 14)
	STS	BPB_RsvdSecCnt,R16
	LDS	R16,(_FF_buff + 15)
	STS	(BPB_RsvdSecCnt + 1),R16
	LDS	R4,(_FF_buff + 16)
	LDS	R16,(_FF_buff + 17)
	STS	BPB_RootEntCnt,R16
	LDS	R16,(_FF_buff + 18)
	STS	(BPB_RootEntCnt + 1),R16
	LDS	R16,(_FF_buff + 22)
	STS	BPB_FATSz16,R16
	LDS	R16,(_FF_buff + 23)
	STS	(BPB_FATSz16 + 1),R16
	LDI	R16,0
	LDI	R17,0
	STD	Y+4,R16
	STD	Y+5,R17
	LDS	R16,(_FF_buff + 19)
	STD	Y+2,R16
	LDS	R16,(_FF_buff + 20)
	STD	Y+3,R16
	LDD	R16,Y+2
	LDD	R17,Y+3
	LDD	R18,Y+4
	LDD	R19,Y+5
	OR	R16,R17
	OR	R16,R18
	OR	R16,R19
	BRNE	??initialize_media_19
	LDS	R16,(_FF_buff + 32)
	STD	Y+2,R16
	LDS	R16,(_FF_buff + 33)
	STD	Y+3,R16
	LDS	R16,(_FF_buff + 34)
	STD	Y+4,R16
	LDS	R16,(_FF_buff + 35)
	STD	Y+5,R16
??initialize_media_19:
	LDS	R16,(_FF_buff + 39)
	STS	BS_VolSerial,R16
	LDS	R16,(_FF_buff + 40)
	STS	(BS_VolSerial + 1),R16
	LDS	R16,(_FF_buff + 41)
	STS	(BS_VolSerial + 2),R16
	LDS	R16,(_FF_buff + 42)
	STS	(BS_VolSerial + 3),R16
	LDI	R16,0
	RJMP	??initialize_media_20
??initialize_media_21:
	MOV	R24,R16
	LDI	R25,0
	ADIW	R25 : R24,43
	MOVW	R31 : R30,R25 : R24
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R18,Z
	LDI	R17,0
	MOVW	R31 : R30,R17 : R16
	SUBI	R30,LOW((-(BS_VolLab) & 0xFFFF))
	SBCI	R31,(-(BS_VolLab) & 0xFFFF) >> 8
	ST	Z,R18
	INC	R16
??initialize_media_20:
	CPI	R16,11
	BRCS	??initialize_media_21
	LDI	R16,0
	STS	(BS_VolLab + 11),R16
	LDI	R30,LOW(_FF_PART_ADDR)
	LDI	R31,(_FF_PART_ADDR) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDI	R30,LOW(BPB_RsvdSecCnt)
	LDI	R31,(BPB_RsvdSecCnt) >> 8
	LD	R18,Z
	LDD	R19,Z+1
	ADD	R18,R16
	ADC	R19,R17
	LDI	R30,LOW(_FF_FAT1_ADDR)
	LDI	R31,(_FF_FAT1_ADDR) >> 8
	ST	Z,R18
	STD	Z+1,R19
	LDI	R30,LOW(_FF_FAT1_ADDR)
	LDI	R31,(_FF_FAT1_ADDR) >> 8
	LD	R18,Z
	LDD	R19,Z+1
	LDI	R30,LOW(BPB_FATSz16)
	LDI	R31,(BPB_FATSz16) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	ADD	R16,R18
	ADC	R17,R19
	LDI	R18,0
	LDI	R19,0
	LDI	R30,LOW(_FF_FAT2_ADDR)
	LDI	R31,(_FF_FAT2_ADDR) >> 8
	ST	Z,R16
	STD	Z+1,R17
	STD	Z+2,R18
	STD	Z+3,R19
	CLR	R5
	LDI	R30,LOW(BPB_FATSz16)
	LDI	R31,(BPB_FATSz16) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDI	R18,0
	MUL	R5,R17
	MOVW	R23 : R22,R1 : R0
	MUL	R4,R16
	MOVW	R21 : R20,R1 : R0
	MUL	R5,R16
	ADD	R21,R0
	ADC	R22,R1
	ADC	R23,R18
	MUL	R17,R4
	ADD	R21,R0
	ADC	R22,R1
	ADC	R23,R18
	LDI	R30,LOW(BPB_RsvdSecCnt)
	LDI	R31,(BPB_RsvdSecCnt) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDI	R18,0
	LDI	R19,0
	ADD	R16,R20
	ADC	R17,R21
	ADC	R18,R22
	ADC	R19,R23
	LDI	R30,LOW(_FF_ROOT_ADDR)
	LDI	R31,(_FF_ROOT_ADDR) >> 8
	ST	Z,R16
	STD	Z+1,R17
	STD	Z+2,R18
	STD	Z+3,R19
	LDI	R30,LOW(_FF_PART_ADDR)
	LDI	R31,(_FF_PART_ADDR) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDI	R18,0
	LDI	R19,0
	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
	ADD	R20,R16
	ADC	R21,R17
	ADC	R22,R18
	ADC	R23,R19
	ST	Z,R20
	STD	Z+1,R21
	STD	Z+2,R22
	STD	Z+3,R23
	LDI	R30,LOW(BPB_RootEntCnt)
	LDI	R31,(BPB_RootEntCnt) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDI	R18,0
	LDI	R19,0
	LDI	R20,5
	CALL	?L_SHL_L03
	MOVW	R25 : R24,R17 : R16
	MOVW	R27 : R26,R19 : R18
	SUBI	R24,1
	SBCI	R25,254
	SBCI	R26,255
	SBCI	R27,255
	MOV	R24,R25
	MOV	R25,R26
	MOV	R26,R27
	LDI	R27,0
	LSR	R26
	ROR	R25
	ROR	R24
	MOV	R20,R4
	LDI	R21,0
	LDI	R30,LOW(BPB_FATSz16)
	LDI	R31,(BPB_FATSz16) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	CALL	?S_EC_MUL_L02
	LDI	R30,LOW(BPB_RsvdSecCnt)
	LDI	R31,(BPB_RsvdSecCnt) >> 8
	LD	R18,Z
	LDD	R19,Z+1
	ADD	R18,R16
	ADC	R19,R17
	MOVW	R17 : R16,R25 : R24
	ADD	R16,R18
	ADC	R17,R19
	LDI	R30,LOW(FirstDataSector)
	LDI	R31,(FirstDataSector) >> 8
	ST	Z,R16
	STD	Z+1,R17
	LDD	R16,Y+2
	LDD	R17,Y+3
	LDD	R18,Y+4
	LDD	R19,Y+5
	LDI	R30,LOW(FirstDataSector)
	LDI	R31,(FirstDataSector) >> 8
	LD	R20,Z
	LDD	R21,Z+1
	LDI	R22,0
	LDI	R23,0
	SUB	R16,R20
	SBC	R17,R21
	SBC	R18,R22
	SBC	R19,R23
	LDS	R20,BPB_SecPerClus
	LDI	R21,0
	LDI	R22,0
	LDI	R23,0
	CALL	?UL_DIVMOD_L03
	LDI	R30,LOW(DataClusTot)
	LDI	R31,(DataClusTot) >> 8
	ST	Z,R16
	STD	Z+1,R17
	STD	Z+2,R18
	STD	Z+3,R19
	LDI	R16,0
	LDI	R17,0
	LDI	R30,LOW(clus_0_addr)
	LDI	R31,(clus_0_addr) >> 8
	ST	Z,R16
	STD	Z+1,R17
	LDI	R16,1
	LDI	R17,0
	LDI	R30,LOW(c_counter)
	LDI	R31,(c_counter) >> 8
	ST	Z,R16
	STD	Z+1,R17
	LDI	R16,0
	LDI	R17,0
	LDI	R18,0
	LDI	R19,0
	LDI	R30,LOW(_FF_buff_addr)
	LDI	R31,(_FF_buff_addr) >> 8
	ST	Z,R16
	STD	Z+1,R17
	STD	Z+2,R18
	STD	Z+3,R19
	LDI	R30,LOW(DataClusTot)
	LDI	R31,(DataClusTot) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	CPI	R16,245
	LDI	R20,15
	CPC	R17,R20
	LDI	R20,0
	CPC	R18,R20
	LDI	R20,0
	CPC	R19,R20
	BRCS	$+2+2
	RJMP	??initialize_media_22
	LDI	R16,50
	STS	BPB_FATType,R16
??initialize_media_23:
	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
	LDI	R30,LOW(_FF_DIR_ADDR)
	LDI	R31,(_FF_DIR_ADDR) >> 8
	ST	Z,R16
	STD	Z+1,R17
	STD	Z+2,R18
	STD	Z+3,R19
	LDI	R16,92
	STS	_FF_FULL_PATH,R16
	LDI	R16,0
	STS	(_FF_FULL_PATH + 1),R16
	LDI	R30,LOW(_FF_PART_ADDR)
	LDI	R31,(_FF_PART_ADDR) >> 8
	LD	R16,Z
	MOV	R17,R16
	LDI	R16,0
	LSL	R17
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_BS_PA_str)
	LDI	R17,HIGH(_FF_BS_PA_str)
	LDI	R18,(_FF_BS_PA_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	LDI	R16,0
	LDI	R17,2
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_BPB_BPS_str)
	LDI	R17,HIGH(_FF_BPB_BPS_str)
	LDI	R18,(_FF_BPB_BPS_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	LDS	R16,BPB_SecPerClus
	LDI	R17,0
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_BPB_SPC_str)
	LDI	R17,HIGH(_FF_BPB_SPC_str)
	LDI	R18,(_FF_BPB_SPC_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	LDI	R30,LOW(BPB_RsvdSecCnt)
	LDI	R31,(BPB_RsvdSecCnt) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_BPB_RSC_str)
	LDI	R17,HIGH(_FF_BPB_RSC_str)
	LDI	R18,(_FF_BPB_RSC_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	CLR	R5
	ST	-Y,R5
	ST	-Y,R4
	LDI	R16,LOW(_FF_BPB_NFAT_str)
	LDI	R17,HIGH(_FF_BPB_NFAT_str)
	LDI	R18,(_FF_BPB_NFAT_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	LDI	R30,LOW(BPB_RootEntCnt)
	LDI	R31,(BPB_RootEntCnt) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_BPB_REC_str)
	LDI	R17,HIGH(_FF_BPB_REC_str)
	LDI	R18,(_FF_BPB_REC_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	LDI	R30,LOW(BPB_FATSz16)
	LDI	R31,(BPB_FATSz16) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_BPB_Fz16_str)
	LDI	R17,HIGH(_FF_BPB_Fz16_str)
	LDI	R18,(_FF_BPB_Fz16_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	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(_FF_BPB_TS16_str)
	LDI	R17,HIGH(_FF_BPB_TS16_str)
	LDI	R18,(_FF_BPB_TS16_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,4
	LDI	R16,LOW(_FF_BPB_FT_str)
	LDI	R17,HIGH(_FF_BPB_FT_str)
	LDI	R18,(_FF_BPB_FT_str) >> 16
	CALL	printf_P
	LDS	R16,BPB_FATType
	CPI	R16,50
	BREQ	??initialize_media_24
	LDS	R16,BPB_FATType
	CPI	R16,54
	BREQ	??initialize_media_24
	LDI	R16,LOW(_FF_ERR_str)
	LDI	R17,HIGH(_FF_ERR_str)
	LDI	R18,(_FF_ERR_str) >> 16
	CALL	printf_P
	LDI	R16,0
	RJMP	??initialize_media_1
??initialize_media_22:
	LDI	R30,LOW(DataClusTot)
	LDI	R31,(DataClusTot) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	CPI	R16,245
	LDI	R20,255
	CPC	R17,R20
	LDI	R20,0
	CPC	R18,R20
	LDI	R20,0
	CPC	R19,R20
	BRCC	??initialize_media_25
	LDI	R16,54
	STS	BPB_FATType,R16
	RJMP	??initialize_media_23
??initialize_media_25:
	LDI	R16,0
	STS	BPB_FATType,R16
	LDI	R16,12
	STS	_FF_error,R16
	LDI	R16,0
	RJMP	??initialize_media_1
??initialize_media_24:
	LDS	R16,BPB_FATType
	LDI	R17,0
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_1C_str)
	LDI	R17,HIGH(_FF_1C_str)
	LDI	R18,(_FF_1C_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	LDI	R30,LOW(DataClusTot)
	LDI	R31,(DataClusTot) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	LDD	R19,Z+3
	ST	-Y,R19
	ST	-Y,R18
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_CCnt_str)
	LDI	R17,HIGH(_FF_CCnt_str)
	LDI	R18,(_FF_CCnt_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,4
	LDI	R30,LOW(_FF_ROOT_ADDR)
	LDI	R31,(_FF_ROOT_ADDR) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	MOV	R19,R18
	MOV	R18,R17
	MOV	R17,R16
	LDI	R16,0
	LSL	R17
	ROL	R18
	ROL	R19
	ST	-Y,R19
	ST	-Y,R18
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_RAddr_str)
	LDI	R17,HIGH(_FF_RAddr_str)
	LDI	R18,(_FF_RAddr_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,4
	LDI	R30,LOW(_FF_FAT2_ADDR)
	LDI	R31,(_FF_FAT2_ADDR) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	LDD	R18,Z+2
	MOV	R19,R18
	MOV	R18,R17
	MOV	R17,R16
	LDI	R16,0
	LSL	R17
	ROL	R18
	ROL	R19
	ST	-Y,R19
	ST	-Y,R18
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_F2Addr_str)
	LDI	R17,HIGH(_FF_F2Addr_str)
	LDI	R18,(_FF_F2Addr_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,4
	ST	-Y,R27
	ST	-Y,R26
	ST	-Y,R25
	ST	-Y,R24
	LDI	R16,LOW(_FF_RDSec_str)
	LDI	R17,HIGH(_FF_RDSec_str)
	LDI	R18,(_FF_RDSec_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,4
	LDI	R30,LOW(FirstDataSector)
	LDI	R31,(FirstDataSector) >> 8
	LD	R16,Z
	LDD	R17,Z+1
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(_FF_FDSec_str)
	LDI	R17,HIGH(_FF_FDSec_str)
	LDI	R18,(_FF_FDSec_str) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2
	LDI	R16,1
??initialize_media_1:
	ADIW	R29 : R28,6
	LDI	R30,6
	JMP	?EPILOGUE_B6_L09

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash __CRLF[3]
__CRLF:
        DB "\015\012"

        RSEG FAR_F:CODE:NOROOT(0)
// char __farflash __Xstr[6]
__Xstr:
        DB "%02X "

        RSEG CODE:CODE:NOROOT(1)
// __nearfunc void _FF_read_disp(unsigned long)
_FF_read_disp:
	ST	-Y,R25
	ST	-Y,R24
	LDI	R20,LOW(_FF_buff)
	LDI	R21,(_FF_buff) >> 8
	RCALL	_FF_read
	TST	R16
	BRNE	??_FF_read_disp_0
	LDI	R16,LOW(_FF_RErr_str)
	LDI	R17,HIGH(_FF_RErr_str)
	LDI	R18,(_FF_RErr_str) >> 16
	CALL	printf_P
	RJMP	??_FF_read_disp_1
??_FF_read_disp_0:
	LDI	R24,0
	LDI	R25,0
	RJMP	??_FF_read_disp_2
??_FF_read_disp_3:
	MOV	R16,R24
	ANDI	R16,0x0F
	TST	R16
	BRNE	??_FF_read_disp_4
	LDI	R16,LOW(__CRLF)
	LDI	R17,HIGH(__CRLF)
	LDI	R18,(__CRLF) >> 16
	CALL	printf_P
??_FF_read_disp_4:
	MOVW	R31 : R30,R25 : R24
	SUBI	R30,LOW((-(_FF_buff) & 0xFFFF))
	SBCI	R31,(-(_FF_buff) & 0xFFFF) >> 8
	LD	R16,Z
	LDI	R17,0
	ST	-Y,R17
	ST	-Y,R16
	LDI	R16,LOW(__Xstr)
	LDI	R17,HIGH(__Xstr)
	LDI	R18,(__Xstr) >> 16
	CALL	printf_P
	ADIW	R29 : R28,2

⌨️ 快捷键说明

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