📄 demo.s90
字号:
ADIW R25 : R24,1
??_FF_read_disp_2:
CPI R24,0
LDI R16,2
CPC R25,R16
BRCS ??_FF_read_disp_3
??_FF_read_disp_1:
LD R24,Y+
LD R25,Y+
RET
RSEG CODE:CODE:NOROOT(1)
// __nearfunc void cf_pulse_wr()
cf_pulse_wr:
??cf_pulse_wr_0:
SBIS 0x13,0x03
RJMP ??cf_pulse_wr_0
LDS R16,101
ANDI R16,0xFE
STS 101,R16
LDS R16,101
ORI R16,0x01
STS 101,R16
RET
RSEG CODE:CODE:NOROOT(1)
// __nearfunc void cf_cmd(unsigned char, unsigned char)
cf_cmd:
OUT 0x1B,R16
OUT 0x18,R17
RCALL cf_pulse_wr
RET
RSEG CODE:CODE:NOROOT(1)
// __nearfunc void cf_addr_setup(unsigned long)
cf_addr_setup:
SBIW R29 : R28,4
ST Y,R16
STD Y+1,R17
STD Y+2,R18
STD Y+3,R19
LDD R16,Y+3
ANDI R16,0x0F
STD Y+3,R16
LDD R16,Y+3
ORI R16,0xE0
STD Y+3,R16
LDI R17,6
LDD R16,Y+3
RCALL cf_cmd
LDI R17,5
LDD R16,Y+2
RCALL cf_cmd
LDI R17,4
LDD R16,Y+1
RCALL cf_cmd
LDI R17,3
LD R16,Y
RCALL cf_cmd
LDI R17,2
LDI R16,1
RCALL cf_cmd
ADIW R29 : R28,4
RET
RSEG CODE:CODE:NOROOT(1)
// __nearfunc unsigned char cf_pulse_oe()
cf_pulse_oe:
??cf_pulse_oe_0:
SBIS 0x13,0x03
RJMP ??cf_pulse_oe_0
LDI R16,0
OUT 0x1A,R16
CBI 0x15,0x06
SBI 0x15,0x06
IN R16,0x19
LDI R17,255
OUT 0x1A,R17
RET
RSEG CODE:CODE:NOROOT(1)
// __nearfunc unsigned char _FF_read(unsigned long, unsigned char *)
_FF_read:
CALL ?PROLOGUE8_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
MOVW R25 : R24,R17 : R16
MOVW R27 : R26,R19 : R18
MOVW R5 : R4,R21 : R20
SBIS 0x13,0x04
RJMP ??_FF_read_0
LDI R16,4
STS _FF_error,R16
LDI R16,0
RJMP ??_FF_read_1
??_FF_read_0:
MOVW R17 : R16,R25 : R24
MOVW R19 : R18,R27 : R26
RCALL cf_addr_setup
LDI R17,7
LDI R16,32
RCALL cf_cmd
LDI R16,0
OUT 0x18,R16
CLR R6
CLR R7
RJMP ??_FF_read_2
??_FF_read_3:
RCALL cf_pulse_oe
MOVW R31 : R30,R5 : R4
ADD R30,R6
ADC R31,R7
ST Z,R16
LDI R16,1
ADD R6,R16
LDI R16,0
ADC R7,R16
??_FF_read_2:
LDI R16,0
CP R6,R16
LDI R16,2
CPC R7,R16
BRCS ??_FF_read_3
LDI R16,LOW(_FF_buff)
LDI R17,(_FF_buff) >> 8
CP R4,R16
CPC R5,R17
BRNE ??_FF_read_4
LDI R30,LOW(_FF_buff_addr)
LDI R31,(_FF_buff_addr) >> 8
ST Z,R24
STD Z+1,R25
STD Z+2,R26
STD Z+3,R27
??_FF_read_4:
LDI R16,1
??_FF_read_1:
LDI R30,8
JMP ?EPILOGUE_B8_L09
RSEG CODE:CODE:NOROOT(1)
// __nearfunc unsigned char _FF_write(unsigned long, unsigned char *)
_FF_write:
CALL ?PROLOGUE4_L09
MOVW R25 : R24,R21 : R20
LDI R30,LOW(_FF_PART_ADDR)
LDI R31,(_FF_PART_ADDR) >> 8
LD R20,Z
LDD R21,Z+1
LDI R22,0
LDI R23,0
CP R20,R16
CPC R21,R17
CPC R22,R18
CPC R23,R19
BRCC ??_FF_write_0
SBIS 0x13,0x04
RJMP ??_FF_write_1
??_FF_write_0:
LDI R16,3
STS _FF_error,R16
LDI R16,0
RJMP ??_FF_write_2
??_FF_write_1:
RCALL cf_addr_setup
LDI R17,7
LDI R16,48
RCALL cf_cmd
LDI R16,0
OUT 0x18,R16
LDI R26,0
LDI R27,0
RJMP ??_FF_write_3
??_FF_write_4:
MOVW R31 : R30,R25 : R24
ADD R30,R26
ADC R31,R27
LD R16,Z
OUT 0x1B,R16
RCALL cf_pulse_wr
ADIW R27 : R26,1
??_FF_write_3:
CPI R26,0
LDI R16,2
CPC R27,R16
BRCS ??_FF_write_4
LDI R16,1
??_FF_write_2:
LDI R30,4
JMP ?EPILOGUE_B4_L09
RSEG CODE:CODE:NOROOT(1)
// __nearfunc char checkcard()
checkcard:
SBIS 0x13,0x04
RJMP ??checkcard_0
LDI R16,0
RET
??checkcard_0:
SBI 0x15,0x07
CBI 0x15,0x07
SBI 0x15,0x07
LDI R17,7
LDI R16,236
RCALL cf_cmd
LDI R16,0
OUT 0x1B,R16
LDI R16,32
OUT 0x18,R16
LDI R16,1
RET
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near rtc_hour
rtc_hour:
DS 1
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near rtc_min
rtc_min:
DS 1
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near rtc_sec
rtc_sec:
DS 1
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near rtc_date
rtc_date:
DS 1
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near rtc_month
rtc_month:
DS 1
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned int __near rtc_year
rtc_year:
DS 2
RSEG NEAR_Z:DATA:NOROOT(0)
REQUIRE `?<Segment init: NEAR_Z>`
// unsigned char __near FILENAME[14]
FILENAME:
DS 14
RSEG CODE:CODE:NOROOT(1)
// __nearfunc int _FF_strncmp(unsigned char *, unsigned char *, int)
_FF_strncmp:
RJMP ??_FF_strncmp_0
??_FF_strncmp_1:
SUBI R20,1
SBCI R21,0
??_FF_strncmp_0:
MOV R22,R20
OR R22,R21
BREQ ??_FF_strncmp_2
MOVW R31 : R30,R17 : R16
LD R22,Z
SUBI R16,255
SBCI R17,255
MOVW R31 : R30,R19 : R18
LD R23,Z
SUBI R18,255
SBCI R19,255
CP R22,R23
BREQ ??_FF_strncmp_3
CP R22,R23
BRCC ??_FF_strncmp_4
LDI R16,255
LDI R17,255
RET
??_FF_strncmp_4:
LDI R16,1
LDI R17,0
RET
??_FF_strncmp_3:
TST R22
BRNE ??_FF_strncmp_1
LDI R16,0
LDI R17,0
RET
??_FF_strncmp_2:
MOVW R17 : R16,R21 : R20
RET
RSEG CODE:CODE:NOROOT(1)
// __nearfunc unsigned char *_FF_strrchr(unsigned char *, int)
_FF_strrchr:
MOV R20,R18
LDI R18,0
LDI R19,0
RJMP ??_FF_strrchr_0
??_FF_strrchr_1:
SUBI R16,255
SBCI R17,255
??_FF_strrchr_0:
MOVW R31 : R30,R17 : R16
LD R21,Z
CP R21,R20
BRNE ??_FF_strrchr_2
MOVW R19 : R18,R17 : R16
??_FF_strrchr_2:
MOVW R31 : R30,R17 : R16
LD R21,Z
TST R21
BRNE ??_FF_strrchr_1
MOVW R17 : R16,R19 : R18
RET
RSEG CODE:CODE:NOROOT(1)
// __nearfunc size_t _FF_strlen(unsigned char *)
_FF_strlen:
MOVW R31 : R30,R17 : R16
RJMP ??_FF_strlen_0
??_FF_strlen_1:
ADIW R31 : R30,1
??_FF_strlen_0:
LD R18,Z
TST R18
BRNE ??_FF_strlen_1
SUB R30,R16
SBC R31,R17
MOVW R17 : R16,R31 : R30
RET
RSEG CODE:CODE:NOROOT(1)
// __nearfunc unsigned char ascii_to_char(unsigned char)
ascii_to_char:
CPI R16,48
BRCC ??ascii_to_char_0
LDI R16,255
RET
??ascii_to_char_0:
CPI R16,58
BRCC ??ascii_to_char_1
SUBI R16,48
RET
??ascii_to_char_1:
CPI R16,65
BRCC ??ascii_to_char_2
LDI R16,255
RET
??ascii_to_char_2:
CPI R16,71
BRCC ??ascii_to_char_3
SUBI R16,55
RET
??ascii_to_char_3:
CPI R16,97
BRCC ??ascii_to_char_4
LDI R16,255
RET
??ascii_to_char_4:
CPI R16,103
BRCC ??ascii_to_char_5
SUBI R16,87
RET
??ascii_to_char_5:
LDI R16,255
RET
RSEG CODE:CODE:NOROOT(1)
// __nearfunc int valid_file_char(unsigned char)
valid_file_char:
CPI R16,32
BRCC ??valid_file_char_0
LDI R16,255
LDI R17,255
RET
??valid_file_char_0:
CPI R16,34
BREQ ??valid_file_char_1
CPI R16,42
BREQ ??valid_file_char_1
CPI R16,43
BREQ ??valid_file_char_1
CPI R16,44
BREQ ??valid_file_char_1
CPI R16,46
BREQ ??valid_file_char_1
CPI R16,47
BREQ ??valid_file_char_1
CPI R16,58
BRCS ??valid_file_char_2
CPI R16,64
BRCS ??valid_file_char_1
??valid_file_char_2:
CPI R16,91
BRCS ??valid_file_char_3
CPI R16,94
BRCS ??valid_file_char_1
??valid_file_char_3:
CPI R16,124
BREQ ??valid_file_char_1
CPI R16,229
BRNE ??valid_file_char_4
??valid_file_char_1:
LDI R16,255
LDI R17,255
RET
??valid_file_char_4:
LDI R16,0
LDI R17,0
RET
RSEG CODE:CODE:NOROOT(1)
// __nearfunc int scan_directory(unsigned long *, unsigned char *)
scan_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_R13_is_cg_reg
REQUIRE ?Register_R14_is_cg_reg
REQUIRE ?Register_R15_is_cg_reg
SBIW R29 : R28,19
MOVW R7 : R6,R17 : R16
LDI R16,0
ST Y,R16
LDI R16,0
LDI R17,0
STD Y+1,R16
STD Y+2,R17
MOVW R5 : R4,R19 : R18
CLR R8
CLR R9
RJMP ??scan_directory_0
??scan_directory_1:
LDI R16,LOW(_Small_Ctype)
LDI R17,(_Small_Ctype) >> 8
MOVW R31 : R30,R5 : R4
LD R18,Z
LDI R19,0
ADD R16,R18
ADC R17,R19
MOVW R31 : R30,R17 : R16
ADIW R31 : R30,1
LPM R16,Z
ANDI R16,0x02
TST R16
BREQ ??scan_directory_2
MOVW R31 : R30,R5 : R4
LD R16,Z
ANDI R16,0x5F
RJMP ??scan_directory_3
??scan_directory_2:
MOVW R31 : R30,R5 : R4
LD R16,Z
??scan_directory_3:
MOVW R31 : R30,R29 : R28
ADIW R31 : R30,5
ADD R30,R8
ADC R31,R9
ST Z,R16
LDI R16,1
ADD R4,R16
LDI R16,0
ADC R5,R16
??scan_directory_4:
LDI R16,1
ADD R8,R16
LDI R16,0
ADC R9,R16
??scan_directory_0:
LDI R16,11
CP R8,R16
LDI R16,0
CPC R9,R16
BRCS $+2+2
RJMP ??scan_directory_5
MOVW R31 : R30,R5 : R4
LD R16,Z
RCALL valid_file_char
OR R16,R17
BREQ ??scan_directory_1
MOVW R31 : R30,R5 : R4
LD R16,Z
CPI R16,46
BREQ ??scan_directory_6
MOVW R31 : R30,R5 : R4
LD R16,Z
TST R16
BRNE ??scan_directory_7
??scan_directory_8:
LDI R16,11
CP R8,R16
LDI R16,0
CPC R9,R16
BRCC ??scan_directory_4
LDI R16,32
MOVW R31 : R30,R29 : R28
ADIW R31 : R30,5
ADD R30,R8
ADC R31,R9
ST Z,R16
LDI R16,1
ADD R8,R16
LDI R16,0
ADC R9,R16
RJMP ??scan_directory_8
??scan_directory_9:
LDI R16,32
MOVW R31 : R30,R29 : R28
ADIW R31 : R30,5
ADD R30,R8
ADC R31,R9
ST Z,R16
LDI R16,1
ADD R8,R16
LDI R16,0
ADC R9,R16
??scan_directory_6:
LDI R16,8
CP R8,R16
LDI R16,0
CPC R9,R16
BRCS ??scan_directory_9
LDI R16,255
ADD R8,R16
LDI R16,255
ADC R9,R16
LDI R16,1
ADD R4,R16
LDI R16,0
ADC R5,R16
LD R16,Y
ORI R16,0x01
ST Y,R16
RJMP ??scan_directory_4
??scan_directory_7:
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
RJMP ??scan_directory_10
??scan_directory_5:
LDI R16,0
STD Y+16,R16
MOVW R31 : R30,R7 : R6
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
BRNE ??scan_directory_11
LDI R30,LOW(BPB_RootEntCnt)
LDI R31,(BPB_RootEntCnt) >> 8
LD R12,Z
LDD R13,Z+1
RJMP ??scan_directory_12
??scan_directory_11:
MOVW R31 : R30,R7 : R6
LD R16,Z
LDD R17,Z+1
LDD R18,Z+2
LDD R19,Z+3
RCALL addr_to_clust
STD Y+3,R16
STD Y+4,R17
LDD R16,Y+3
LDD R17,Y+4
OR R16,R17
BREQ ??scan_directory_13
LD R16,Y
ORI R16,0x80
ST Y,R16
??scan_directory_13:
LDS R16,BPB_SecPerClus
LDI R17,0
LDI R20,4
CALL ?S_SHL_L02
MOVW R13 : R12,R17 : R16
??scan_directory_12:
CLR R8
CLR R9
RJMP ??scan_directory_14
??scan_directory_15:
MOVW R17 : R16,R9 : R8
RCALL clust_to_addr
MOVW R31 : R30,R7 : R6
ST Z,R16
STD Z+1,R17
STD Z+2,R18
STD Z+3,R19
STD Y+3,R8
STD Y+4,R9
LDI R16,0
LDI R17,0
STD Y+1,R16
STD Y+2,R17
CLR R8
CLR R9
??scan_directory_14:
LDD R16,Y+1
LDD R17,Y+2
CP R16,R12
CPC R17,R13
BRCS $+2+2
RJMP ??scan_directory_16
LDI R20,LOW(_FF_buff)
LDI R21,(_FF_buff) >> 8
MOVW R1 : R0,R21 : R20
MOVW R31 : R30,R7 : R6
LD R20,Z
LDD R21,Z+1
LDD R22,Z+2
LDD R23,Z+3
MOVW R17 : R16,R9 : R8
LDI R18,0
LDI R19,0
ADD R16,R20
ADC R17,R21
ADC R18,R22
ADC R19,R23
MOVW R21 : R20,R1 : R0
RCALL _FF_read
TST R16
BRNE $+2+2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -