📄 bad_block.inc
字号:
mov a,#0x55
CALL FlashWriteData
mov a,#0xaa
CALL FlashWriteData
mov a,#0x55
CALL FlashWriteData
bank 2
mov a,tableaddressrow3
CALL FlashWriteData
mov a,tableaddressrow2
CALL FlashWriteData
mov a,tableaddressrow1
and a,#0xc0
CALL FlashWriteData
call FlashPageProgramWriteDataOK
ret
searchnextblockfortable:
bank 2
mov a,#0x40
sub tableaddressrow1,a
jbs stts,c,checknextblockforbbitable
dec tableaddressrow2
jbs stts,c,checknextblockforbbitable
dec tableaddressrow3
jmp checknextblockforbbitable
;=================================================================
create_bbi_table:
mov a,#0x00
mov ROW_ADD_write3,a
mov a,#0x00
mov ROW_ADD_write2,a
mov a,#0x00
mov ROW_ADD_write1,a
clr COL_ADD_write1
clr COL_ADD_write2
bank 2
MOV A,#0X00
JBC bank2_check_flag,is_128_or_256,$+3
mov a,tableaddressrow3
mov fatendaddressrow3,a
mov a,tableaddressrow2
mov fatendaddressrow2,a
mov a,tableaddressrow1
mov fatendaddressrow1,a
mov a,tableaddresscol1
mov fatendaddresscol1,a
mov a,tableaddresscol2
mov fatendaddresscol2,a
clr bbitablestatus
goontablecreating:
bank 0
call LOAD_WADDR
call blocktest55h
jbc stts,z,findablocktoreplacethisbadblock
call LOAD_WADDR
call blocktestAAh
jbc stts,z,findablocktoreplacethisbadblock
call load_bbi_table_address
call FlashPageProgramWriteAddress
mov a,ROW_ADD_write2
call flashwritedata
mov a,row_add_write3
and a,#0x01
mov temp0,a
mov a,row_add_write1
and a,#0xc0
xor a,temp0
call flashwritedata
call FlashPageProgramWriteDataOK
mov a,#2
call bbi_table_address_check
nextblockaddresscheck:
mov a,#64
call PAGE_ADDR_CHK_WRITE
bank 2
jbs bbitablestatus,swapareatabletag,swapareablockaddressendcheck
mov a,row_add_write3
xor a,fatendaddressrow3
jbc stts,z,goontablecreating
mov a,row_add_write2
xor a,fatendaddressrow2
jbc stts,z,goontablecreating
mov a,row_add_write1
xor a,fatendaddressrow1
jbc stts,z,goontablecreating
mov a,#0x01
mov row_add_write3,a
mov a,#0xfc
mov row_add_write2,a
mov a,#0x00
mov row_add_write1,a
clr col_add_write1
clr col_add_write2
mov a,#0xe0
mov tableaddresscol1,a
mov a,#0x07
mov tableaddresscol2,a
bs tableaddressrow1,0
bs bbitablestatus,swapareatabletag
swapareablockaddressendcheck:
mov a,row_add_write3
jbc stts,z,goontablecreating
mov a,row_add_write2
jbc stts,z,goontablecreating
mov a,row_add_write1
and a,#0xc0
jbc stts,z,goontablecreating
bank 2
mov a,#0x40
sub fatendaddressrow1,a
jbs stts,c,exitfatendaddressminuschkforcapacity
dec fatendaddressrow2
jbs stts,c,exitfatendaddressminuschkforcapacity
dec fatendaddressrow3
exitfatendaddressminuschkforcapacity:
call load_bbi_table_address
bank 2
mov a,flashrowadd1
and a,#0xc0
mov tableaddressrow1,a
xor a,#0x02
mov flashrowadd1,a
mov a,#0x07
mov flashcoladd1,a
clr flashcoladd2
call FlashPageProgramWriteAddress
bank 2
mov a,fatendaddressrow3
call flashwritedata
mov a,fatendaddressrow2
call flashwritedata
mov a,fatendaddressrow1
or a,#0x3f
mov fatendaddressrow1,a
call flashwritedata
call FlashPageProgramWriteDataOK
bank 0
ret
;====================================================================
findablocktoreplacethisbadblock:
bank 2
mov a,#0x40
sub fatendaddressrow1,a
jbs stts,c,exitfatendaddressminuschk
dec fatendaddressrow2
jbs stts,c,exitfatendaddressminuschk
dec fatendaddressrow3
exitfatendaddressminuschk:
call load_fat_end_address
call blocktest55h
jbc stts,z,findablocktoreplacethisbadblock
call load_fat_end_address
call blocktestAAh
jbc stts,z,findablocktoreplacethisbadblock
call load_bbi_table_address
call FlashPageProgramWriteAddress
bank 2
mov a,fatendaddressrow2
call flashwritedata
mov a,fatendaddressrow3
and a,#0x01
mov temp0,a
mov a,fatendaddressrow1
and a,#0xc0
xor a,temp0
call flashwritedata
call FlashPageProgramWriteDataOK
mov a,#2
call bbi_table_address_check
jmp nextblockaddresscheck
;======================================================================
INC_SFL_ADDC1:
INC FlashColAdd1
INC_SFL_ADDC1_1:
JBS STTS,C,INC_SFL_ADDC2
RET
INC_SFL_ADDC2:
INC FlashColAdd2
INC_SFL_ADDC2_1:
JBS FlashColAdd2,3,INC_SFL_ADDR1_1//INC_SFL_ADDR1
RET
//INC_SFL_ADDR1:
// CLR FlashColAdd1
// CLR FlashColAdd2
INC_SFL_ADDR1_1:
BC FlashColAdd2,3
INC FlashRowAdd1
INC_SFL_ADDR1_2:
JBS STTS,C,INC_SFL_ADDR2
RET
INC_SFL_ADDR2:
INC FlashRowAdd2
INC_SFL_ADDR2_1:
JBS STTS,C,INC_SFL_ADDR3
RET
INC_SFL_ADDR3:
INC FlashRowAdd3
JBC FlashRowAdd3,1,$+3
CLR FlashRowAdd3
RET
DEC_SFL_ADDC1:
DEC FlashColAdd1
DEC_SFL_ADDC1_1:
JBC STTS,C,DEC_SFL_ADDC2
RET
DEC_SFL_ADDC2:
ZCHK FlashColAdd2
JBS STATUS,Z,DEC_SFL_ADDR1
DEC FlashColAdd2
RET
DEC_SFL_ADDR1:
MOV A,#0X0E
MOV FlashColAdd2,A
DEC_SFL_ADDR1_2:
DEC FlashRowAdd1
DEC_SFL_ADDR1_1:
JBC STTS,C,DEC_SFL_ADDR2
RET
DEC_SFL_ADDR2:
DEC FlashRowAdd2
JBC STTS,C,DEC_SFL_ADDR3
RET
DEC_SFL_ADDR3:
ZCHK FlashRowAdd3
JBS STATUS,Z,$+3
DEC FlashRowAdd3
RET
INC_SOURCE_ADD_1:
INC SOURCE_ADD_1
INC_SOURCE_ADD:
JBS STTS,C,INC_SOURCE_ADD_2
RET
INC_SOURCE_ADD_2:
INC SOURCE_ADD_2
JBS STTS,C,INC_SOURCE_ADD_3
RET
INC_SOURCE_ADD_3:
INC SOURCE_ADD_3
JBC SOURCE_ADD_3,1,$+3
CLR SOURCE_ADD_3
RET
INC_OBJECT_ADD_1:
INC OBJECT_ADD_1
INC_OBJECT_ADD:
JBS STTS,C,INC_OBJECT_ADD_2
RET
INC_OBJECT_ADD_2:
INC OBJECT_ADD_2
JBS STTS,C,INC_OBJECT_ADD_3
RET
INC_OBJECT_ADD_3:
INC OBJECT_ADD_3
JBC OBJECT_ADD_3,1,$+3
CLR OBJECT_ADD_3
RET
DEC_fatendaddressrow1:
bank 2
mov a,fatendaddressrow1
mov temp2,a
mov a,fatendaddressrow2
mov temp3,a
mov a,fatendaddressrow3
mov temp4,a
bank 0
ret
DEC_fatendaddressrow1_1:
JBC STTS,C,DEC_fatendaddressrow2
mov temp2,a
RET
DEC_fatendaddressrow2:
mov temp2,a
DEC temp3//fatendaddressrow2
JBC STTS,C,DEC_fatendaddressrow3
RET
DEC_fatendaddressrow3:
ZCHK temp4//fatendaddressrow3
JBS STATUS,Z,DEC_fatendaddressrow3_1
dec temp4
DEC_fatendaddressrow3_1:
RET
//=============================================
SAVE_page_copy1:
BANK 2
MOV A,FlashRowAdd3
MOV page_copy1_row3,A
MOV A,FlashRowAdd2
MOV page_copy1_row2,A
MOV A,FlashRowAdd1
MOV page_copy1_row1,A
BANK 0
RET
SAVE_page_copy2:
BANK 2
MOV A,FlashRowAdd3
MOV page_copy2_row3,A
MOV A,FlashRowAdd2
MOV page_copy2_row2,A
MOV A,FlashRowAdd1
MOV page_copy2_row1,A
BANK 0
RET
LOAD_page_copy1:
BANK 2
MOV A,page_copy1_row3
MOV FlashRowAdd3,A
MOV A,page_copy1_row2
MOV FlashRowAdd2,A
MOV A,page_copy1_row1
MOV FlashRowAdd1,A
BANK 0
RET
LOAD_page_copy2:
BANK 2
MOV A,page_copy2_row3
MOV FlashRowAdd3,A
MOV A,page_copy2_row2
MOV FlashRowAdd2,A
MOV A,page_copy2_row1
MOV FlashRowAdd1,A
BANK 0
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -