?? cbw_process.h
字號:
INQUIRY:
MOV A,#0X01
MOV RAMBS1,A
MOV A,#EP1CSR
MOV IAP1,A
NOP
MOV A,0xA8
MOV TEMP1,A
MOV A,#EP1CTR
MOV IAP1,A
MOV A,TEMP1
MOV IAC1,A
n_nop
MOV A,#EP1DAR
MOV IAP1,A
NOP
mov a,#(inquiry_tb*2)/0x100
mov htbl,a
mov a,#(inquiry_tb*2)%0x100
mov ltbl,a
nop
nop
lop: tbrdp a
MOV IAC1,A
n_nop
djz temp1,lopx
jmp lop
lopx:
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
call delay
inquiry_csw:
jbs iac1,1,inquiry_csw
jbs iac1,rxtxen,inquiry_csw
call common_csw_head
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
N_NOP
MOV IAC1,A
MOV A,#0
N_NOP
MOV IAC1,A
MOV A,#0
N_NOP
MOV IAC1,A
n_nop
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
RET
READ_FORMAT_CAPACITY:
MOV A,#0X01
MOV RAMBS1,A
MOV A,#EP1CSR
MOV IAP1,A
NOP
MOV A,#12
MOV TEMP1,A
MOV A,#EP1CTR
MOV IAP1,A
MOV A,TEMP1
MOV IAC1,A
n_nop
MOV A,#EP1DAR
MOV IAP1,A
NOP
mov a,#0
mov iac1,a
mov a,#0
mov iac1,a
mov a,#0
mov iac1,a
mov a,#0x08
mov iac1,a
; BANK 2
call DEC_fatendaddressrow1
mov a,#0x80//40
sub a,temp2
call DEC_fatendaddressrow1_1
mov a,#0
mov iac1,a
BANK 2
JBC bank2_check_flag,is_128_or_256,$+3
mov a,temp4//fatendaddressrow3
BANK 0
mov iac1,a
mov a,temp3//fatendaddressrow2
mov iac1,a
mov a,temp2//fatendaddressrow1
mov iac1,a
MOV A,#4
MOV TEMP1,A
mov a,#(read_format_cap_tb*2)/0x100
mov htbl,a
mov a,#(read_format_cap_tb*2)%0x100
mov ltbl,a
nop
nop
BANK 0
loop_format_cap_tb:
tbrdp a
mov iac1,a
n_nop
djz temp1,loop_format_cap_tb_exit
jmp loop_format_cap_tb
loop_format_cap_tb_exit:
MOV A,#0X01
MOV RAMBS1,A
MOV A,#EP1CSR
MOV IAP1,A
nop
BS IAC1,RXTXEN
n_nop
call delay
read_format_csw:
jbs iac1,sestall,read_format_csw
jbs iac1,rxtxen,read_format_csw
call common_csw_head
MOV A,#0xf0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
n_nop
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
RET
REQUEST_SENSE:
MOV A,#0X01
MOV RAMBS1,A
MOV A,#EP1CSR
MOV IAP1,A
NOP
MOV A,0xA8
MOV TEMP1,A
MOV A,#EP1CTR
MOV IAP1,A
MOV A,TEMP1
MOV IAC1,A
n_nop
MOV A,#EP1DAR
MOV IAP1,A
NOP
mov a,#(request_sense_tb*2)/0x100
mov htbl,a
mov a,#(request_sense_tb*2)%0x100
mov ltbl,a
nop
nop
loop_request_sense: tbrdp a
mov iac1,a
n_nop
djz temp1,loop_request_sense_exit
jmp loop_request_sense
loop_request_sense_exit:
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
n_nop
call delay
request_sense_csw:
jbs iac1,sestall,request_sense_csw
jbs iac1,rxtxen,request_sense_csw
call common_csw_head
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
n_nop
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
RET
READ_CAPACITY:
MOV A,#0X01
MOV RAMBS1,A
MOV A,#EP1CSR
MOV IAP1,A
NOP
MOV A,0xA8
MOV TEMP1,A
MOV A,#EP1CTR
MOV IAP1,A
MOV A,TEMP1
MOV IAC1,A
n_nop
MOV A,#EP1DAR
MOV IAP1,A
NOP
;bank 2
call DEC_fatendaddressrow1
mov a,#0x80//40
sub a,temp2
call DEC_fatendaddressrow1_1
mov a,#0
mov iac1,a
BANK 2
JBC bank2_check_flag,is_128_or_256,$+3
mov a,temp4//fatendaddressrow3
BANK 0
mov iac1,a
mov a,temp3//fatendaddressrow2
mov iac1,a
mov a,temp2//fatendaddressrow1
mov iac1,a
bank 0
mov a,#(read_cap_tb*2)/0x100
mov htbl,a
mov a,#(read_cap_tb*2)%0x100
mov ltbl,a
mov a,#4
mov temp1,a
loop_read_cap: tbrdp a
mov iac1,a
n_nop
djz temp1,loop_read_cap_exit
jmp loop_read_cap
loop_read_cap_exit:
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
call delay
read_capacity_csw:
jbs iac1,sestall,read_capacity_csw
jbs iac1,0,read_capacity_csw
call common_csw_head
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
n_nop
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
RET
TEST_UNIT_READY:
call delay
call common_csw_head
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
MOV A,#0
N_NOP
MOV IAC1,A
MOV A,#0
N_NOP
MOV IAC1,A
MOV A,#0
MOV IAC1,A
n_nop
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
RET
READ10_28H:
CALL FlashReset
call LOAD_RADDR
call address_conversion_according_to_bbitable
call FlashContinueReadWriteAddress2G
bank 0
MOV A,#32
MOV TEMP3,A
LOOP_READ28_512:
mov a,#64
mov temp1,a
_ADD_USB_EP1_WORK_SUB
DJZ TEMP3,RETURN_CSW_28
JMP LOOP_READ28_512
RETURN_CSW_28:
mov a,#1
call PAGE_ADDR_CHK_READ
ret
READ10_28H_csw:
read28_csw:
call common_csw_head
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
n_nop
MOV A,#EP1CSR
MOV IAP1,A
nop
bc iac1,1
BS IAC1,RXTXEN
n_nop
jbs iac1,0,$
jbs iac1,1,$
RET
MODE_SENSE_1A:
MOV A,#0X01
MOV RAMBS1,A
MOV A,#EP1CSR
MOV IAP1,A
n_NOP
MOV A,#EP1CTR
MOV IAP1,A
MOV A,#4
MOV IAC1,A
n_nop
MOV A,#EP1DAR
MOV IAP1,A
NOP
MOV A,#0X03
MOV IAC1,A
N_NOP
MOV A,#0X00
MOV IAC1,A
N_NOP
MOV A,#0X00
MOV IAC1,A
N_NOP
MOV A,#0X00
MOV IAC1,A
n_nop
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
call delay
mode_sense_csw:
jbs iac1,sestall,mode_sense_csw
jbs iac1,rxtxen,mode_sense_csw
call common_csw_head
MOV A,0xA8
MOV TEMP1,A
MOV A,#4
SUB A,TEMP1
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
n_nop
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
RET
FORMAT_UNIT_04: RET
WRITE10_2AH:
MOV A,#0X01
MOV RAMBS1,A
mov a,#ep2csr
mov iap1,a
call LOAD_WADDR
call address_conversion_according_to_bbitable
call FlashPageProgramWriteAddress
bank 0
MOV A,#32
MOV TEMP2,A
LOOP_WRITE2A_512:
mov a,#64
mov temp1,a
JBC BULK_STATE,OUT_USB_FIFO_FULL,$
BC BULK_STATE,OUT_USB_FIFO_FULL
jbs iac1,0,$
MOV A,#EP2DAR
MOV IAP1,A
BC Flash_Ctrl_Port_B,_CE
LOOP_EP2_WORK_64:
MOV A,IAC1
MOV Flash_Data_Port,A
BC Flash_Ctrl_Port_B,_WE
NOP ;40nS
BS Flash_Ctrl_Port_B,_WE
DJZ TEMP1,LOOP_EP2_WORK_64_EXIT
JMP LOOP_EP2_WORK_64
LOOP_EP2_WORK_64_EXIT:
BS Flash_Ctrl_Port_B,_CE
MOV A,#EP2CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
DJZ TEMP2,RETURN_CSW_2A
JMP LOOP_WRITE2A_512
RETURN_CSW_2A:
mov a,#1
call PAGE_ADDR_CHK_WRITE
call FlashPageProgramWriteDataOK
RET
WRITE10_2AH_csw:
MOV A,#0X01
MOV RAMBS1,A
MOV A,#EP1CSR
MOV IAP1,A
nop
bc iac1,rxtxen
n_nop
bc iac1,sestall
n_nop
WRITE2A_csw:
call common_csw_head
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
n_nop
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_NOP
nop
RET
MEDIA_REMOVAL_CSW:
call delay
call common_csw_head
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
N_NOP
MOV A,#0
MOV IAC1,A
n_nop
MOV A,#EP1CSR
MOV IAP1,A
NOP
BS IAC1,RXTXEN
N_N RET
WRITE_2A_swap_area:
bank 0
mov a,0xb7
mov write_block_NOL,a
mov a,0xb6
mov write_block_NOH,a
clr col_add_write1
clr col_add_write2
mov a,0xb2
mov write_row_addr3_temp,a
mov ROW_ADD_WRITE3,a
mov a,0xb3
mov write_row_addr2_temp,a
mov ROW_ADD_WRITE2,a
mov a,0xb4
mov write_row_addr1_temp,a
mov ROW_ADD_WRITE1,a
and a,#0xc0
xor a,write_row_addr1_temp
jbc stts,z,none_zero_page
go_on_writing:
mov a,#64
sub a,write_block_NOL
jbc stts,c,to_swap_area_zero_page
call erase_original_data_area
mov a,#64
mov temp_NO,a
clr col_add_write1
clr col_add_write2
call loop_write_block //temp_NO times 2KB
mov a,#64
sub write_block_NOL,a
jbs stts,z,finish_writing
jmp go_on_writing
to_swap_area_zero_page:
mov a,ROW_ADD_WRITE1
mov write_row_addr1_temp,a
mov a,ROW_ADD_WRITE2
mov write_row_addr2_temp,a
mov a,ROW_ADD_WRITE3
mov write_row_addr3_temp,a
mov a,write_block_NOL
mov temp_NO,a
mov swap_page_address1,a
mov a,#64
mov page_count1,a
mov a,write_block_NOL
sub page_count1,a
call erase_swap_area
call load_swap_address1
mov a,page_count1
mov move_relic_count,a
call move_data_to_swap_area /////////?????????
call erase_original_data_area
call load_swap_address1
mov a,page_count1
mov move_relic_count,a
call move_data_back
mov a,write_row_addr1_temp
mov ROW_ADD_WRITE1,a
mov a,write_row_addr2_temp
mov ROW_ADD_WRITE2,a
mov a,write_row_addr3_temp
mov ROW_ADD_WRITE3,a
clr col_add_write1
clr col_add_write2
call loop_write_block ///// write_data_from_ep2
jmp finish_writing
none_zero_page:
mov a,#0xc0
and a,ROW_ADD_WRITE1
sub a,write_row_addr1_temp
mov page_count1,a
mov move_relic_count,a
clr swap_page_address1
call erase_swap_area
call load_swap_address1
call move_data_to_swap_area
mov a,write_row_addr1_temp
and a,#0x3f
add a,write_block_NOL
mov swap_page_address2,a
sub a,#63
jbc stts,c,remain_transfering
add a,#1
mov page_count2,a
mov move_relic_count,a
call load_swap_address2
call move_data_to_swap_area
call erase_original_data_area
mov a,page_count1
mov move_relic_count,a
call load_swap_address1
call move_data_back
mov a,page_count2
mov move_relic_count,a
call load_swap_address2
call move_data_back
mov a,write_block_NOL
mov temp_NO,a
mov a,write_row_addr1_temp
mov ROW_ADD_WRITE1,a
mov a,write_row_addr2_temp
mov ROW_ADD_WRITE2,a
mov a,write_row_addr3_temp
mov ROW_ADD_WRITE3,a
clr col_add_write1
clr col_add_write2
call loop_write_block
jmp finish_writing
remain_transfering:
mov a,write_row_addr1_temp
and a,#0x3f
sub a,#64
mov temp_NO,a
sub write_block_NOL,a
call erase_original_data_area
mov a,page_count1
call load_swap_address1
call move_data_back
mov a,write_row_addr1_temp
mov ROW_ADD_WRITE1,a
mov a,write_row_addr2_temp
mov ROW_ADD_WRITE2,a
mov a,write_row_addr3_temp
mov ROW_ADD_WRITE3,a
clr col_add_write1
clr col_add_write2
call loop_write_block
mov a,write_block_NOL
jbs stts,z,finish_writing
jmp go_on_writing
finish_writing:
call write10_2ah_csw
RET
;=================================================================
loop_write_block:
CALL WRITE10_2AH
djz TEMP_NO,loop_write_block_exit
jmp loop_write_block
loop_write_block_exit: ret
;=================================================================
COMMON_CSW_HEAD:
MOV A,#0X01
MOV RAMBS1,A
MOV A,#EP1CSR
MOV IAP1,A
nop
bc iac1,0
n_nop
bc iac1,1
n_nop
MOV A,#13
MOV TEMP1,A
MOV A,#EP1CTR
MOV IAP1,A
MOV A,TEMP1
MOV IAC1,A
n_nop
MOV A,#EP1DAR
MOV IAP1,A
NOP
MOV A,#0X55
MOV IAC1,A
N_NOP
MOV A,#0X53
MOV IAC1,A
N_NOP
MOV A,#0X42
MOV IAC1,A
N_NOP
MOV A,#0X53
MOV IAC1,A
n_nop
MOV A,0XA4
n_nop
MOV IAC1,A
n_nop
MOV A,0XA5
n_nop
MOV IAC1,A
n_nop
MOV A,0XA6
n_nop
MOV IAC1,A
n_nop
MOV A,0XA7
n_nop
MOV IAC1,A
n_nop
RET
;=================================================================
delayxx: call delay
call delay
call delay
call delay
call delay
call delay
call delay
call delay
call delay
ret
delay:
mov a,#255 //2500cycles
mov temp1,a
mmmm: nop
nop
djz temp1,xxxxx
jmp mmmm
xxxxx: ret
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -