📄 smc_dtc_debug_end.hex
字号:
0xac, // 78 LD MSB 12
0xbf, // 79 LD LSB 15
0x84, // 7a LD ADR_BUFFER00 //spare area address for second read
// :read_spare
//----------
0x27, // 7b ADDER16 ADR_BUFFER0
0xb2, // 7c LD LSB 2
0x90, // 7d LD DR_PARALLEL // RD = 0// WE = 1// ALE=CLE=0
0xba, // 7e LD LSB 10
0x90, // 7f LD DR_PARALLEL // RD = 1// WE = 1// ALE=CLE=0
0xcc, // 80 LD A DATA_FLASH // Save one byte of redundant area
0x9b, // 81 LD DATA_BUFFER0
0x3c, // 82 DECY
// JP :read_spare
0x68, // 83 JP -8
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//// After the ECC check is verified. Submit the buffer read
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
0xc7, // 84 LD A ADR_BUFFER11 // The value is either 0011 or 0101
0x3a, // 85 BSET3
// JP :Set_buffer1_full
0x47, // 86 JP 7
// :Set_buffer0_full
//----------------
0xb0, // 87 LD LSB 0
0x8b, // 88 LD CMP11
0xb, // 89 CP ALWAYS
0xa0, // 8a LD MSB 0
0xbf, // 8b LD LSB 15
0x60, // 8c BRANCH:next_page256
// :Set_buffer1_full
//----------------
0xb1, // 8d LD LSB 1
// :Set_Buffer_Full
//---------------
0x8b, // 8e LD CMP11
// LD BUFFER_MNGT
// LD LSB 0
// LD BUFFER_MNGT
//compare the data in two buffers
//--------------------------------
0xa0, // 8f LD MSB 0
0xb0, // 90 LD LSB 0
0x84, // 91 LD ADR_BUFFER00
0x86, // 92 LD ADR_BUFFER10
0xb1, // 93 LD LSB 1
0x85, // 94 LD ADR_BUFFER01 //ADR0 = 0X100
0xb3, // 95 LD LSB 3
0x87, // 96 LD ADR_BUFFER11 // ADR1 = 0X300
// :read_nxt_byte
0xdb, // 97 LD A DATA_BUFFER0
0x83, // 98 LD MASK
0xdc, // 99 LD A DATA_BUFFER1
0x31, // 9a XOR
0x82, // 9b LD Y
0x3c, // 9c DECY
// JP :status_not_equal
0x43, // 9d JP 3
0xb, // 9e CP ALWAYS
// JP :good_data
0x42, // 9f JP 2
// :status_not_equal
0x7, // a0 STATUS STOP ERROR
// :good_data
0x27, // a1 ADDER16 ADR_BUFFER0
0x2f, // a2 ADDER16 ADR_BUFFER1
0xc7, // a3 LD A ADR_BUFFER11
0x2a, // a4 BCLR3
// JP :read_nxt_byte
0x6e, // a5 JP -14
//compare spare area
//----------------------
0xc4, // a6 LD A ADR_BUFFER00
0x85, // a7 LD ADR_BUFFER01
0x87, // a8 LD ADR_BUFFER11
0xad, // a9 LD MSB 13
0x84, // aa LD ADR_BUFFER00
0xaf, // ab LD MSB 15
0x86, // ac LD ADR_BUFFER10
// :chk_nxt_spare
0xdb, // ad LD A DATA_BUFFER0
0x83, // ae LD MASK
0xdc, // af LD A DATA_BUFFER1
0x31, // b0 XOR
0x82, // b1 LD Y
0x3c, // b2 DECY
// JP :status_not_equal
0x73, // b3 JP -19
// :good_data_spare
0x27, // b4 ADDER16 ADR_BUFFER0
0x2f, // b5 ADDER16 ADR_BUFFER1
0xc6, // b6 LD A ADR_BUFFER10
0x82, // b7 LD Y
0x3d, // b8 INCY
// JP :chk_nxt_spare
0x6c, // b9 JP -12
//increment the page address and decrement the page counter
//----------------------------------------------------------
0xae, // ba LD MSB 14
0xb5, // bb LD LSB 5
0x84, // bc LD ADR_BUFFER00 //0xe5 = 1st col. byte destination add
0xbb, // bd LD LSB 11
0x86, // be LD ADR_BUFFER10 //0XEB = 1st col byte of source add
0xa1, // bf LD MSB 1
0xb0, // c0 LD LSB 0
0x82, // c1 LD Y
0xdb, // c2 LD A DATA_BUFFER0
0x2, // c3 CLC
0x2d, // c4 ADDER8 Y
0x9b, // c5 LD DATA_BUFFER0
0xdc, // c6 LD A DATA_BUFFER1
0x2, // c7 CLC
0x2d, // c8 ADDER8 Y
0x9c, // c9 LD DATA_BUFFER1
0x26, // ca SUB16 ADR_BUFFER0 //0xe4 = 2nd col byte of destination add
0x2e, // cb SUB16 ADR_BUFFER1 //0xea = 2nd col byte of source address
0xa0, // cc LD MSB 0
0xb2, // cd LD LSB 2
0x82, // ce LD Y
0xdb, // cf LD A DATA_BUFFER0 //decrement 2nd col byte by 0x02
0x2, // d0 CLC
0x2d, // d1 ADDER8 Y
0x2b, // d2 BCLR4
0x9b, // d3 LD DATA_BUFFER0
0xdc, // d4 LD A DATA_BUFFER1
0x2, // d5 CLC
0x2d, // d6 ADDER8 Y
0x2b, // d7 BCLR4
0x9c, // d8 LD DATA_BUFFER1
// JP :dec_page
0x52, // d9 JP 18
0x27, // da ADDER16 ADR_BUFFER0 // 1st col = 0 at page change
0x2f, // db ADDER16 ADR_BUFFER1 // 1st col = 0 at page change
0xc5, // dc LD A ADR_BUFFER01
0x9b, // dd LD DATA_BUFFER0
0x9c, // de LD DATA_BUFFER1
0x26, // df SUB16 ADR_BUFFER0
0x26, // e0 SUB16 ADR_BUFFER0 // 0xe3 = 1st row byte
0x2e, // e1 SUB16 ADR_BUFFER1
0x2e, // e2 SUB16 ADR_BUFFER1 // 0xe3 = 1st row byte
// :next_page
//------------
0xdb, // e3 LD A DATA_BUFFER0
0x2, // e4 CLC
0x25, // e5 ADDER8 X
0x9b, // e6 LD DATA_BUFFER0
0xdc, // e7 LD A DATA_BUFFER1
0x2, // e8 CLC
0x25, // e9 ADDER8 X
0x9c, // ea LD DATA_BUFFER1
//For 256mb
// :dec_page
0xc5, // eb LD A ADR_BUFFER01
0x86, // ec LD ADR_BUFFER10
0xb5, // ed LD LSB 5
0x87, // ee LD ADR_BUFFER11 //reload ADR1
0xae, // ef LD MSB 14
0xb0, // f0 LD LSB 0
0x82, // f1 LD Y
0xc0, // f2 LD A <Y>
0x2, // f3 CLC
0x24, // f4 SUB8 X
0x80, // f5 LD <Y> //new
0x8, // f6 CP A=>X
0xa0, // f7 LD MSB 0
0xbf, // f8 LD LSB 15
0x60, // f9 BRANCH :next_page256
0x5, // fa STATUS STOP
// :all_pages_read
//--------------
// ** LD A BUFFER_MNGT // wait for 2 buffers are free
// ** BSET3
// ** JP :all_pages_read
// ** BSET4
// ** JP :all_pages_read
// STATUS STOP // FINISH SUCCESSFULLY!
//------------------------------------------------------------------
// START ADDRESS FOR read data FF to USB
// ST7: Give number of pages
// 0x163F = Number of pages (counter), it should be 0 on exit
// On return: Counter = 0 means no error
// Counter !=0 means ECC error on that page
//------------------------------------------------------------------
// LD MSB 0
// LD LSB 0
// LD ADR_BUFFER10 // low byte of pointer 1
// LD ADR_BUFFER01 // high byte of pointer 0
// LD CMP10
// LD LSB 1
// LD ADR_BUFFER11 // ADR1 = 0x0100
// LD X // X = 1
// LD LSB 5
// LD CMP11 // CMP1 = 0x0500
// LD MSB 15
// LD LSB 15
// LD ADR_BUFFER00 // ADR00 = 0x00FF
//:fill_buffer_with_FF
// LD DATA_BUFFER1
// ADDER16 ADR_BUFFER1
// CP ADR_BUFFER1<CMP1
// JP :fill_buffer_with_FF
// LD A DATA_BUFFER0
// LD Y // load the page counter
//:FFsend_2_pages
//--------------
// DECY
// JP :FFwait_for_buffer_0
// JP :FF_finish
//:FFwait_for_buffer_0
//-----------------
// LD A BUFFER_MNGT
// BSET3
// JP :FFwait_for_buffer_0
// LD LSB 1
// LD BUFFER_MNGT // mark buffer0 full
// LD LSB 0
// LD BUFFER_MNGT // mark buffer0 full
// DECY
// JP :FFwait_for_buffer_1
//:FF_finish
// INCY
// LD A Y
// LD DATA_BUFFER0 // clear the page counter
// STATUS STOP
//:FFwait_for_buffer_1
//-----------------
// LD A BUFFER_MNGT
// BSET4
// JP :FFwait_for_buffer_1
// LD LSB 2
// LD BUFFER_MNGT // mark buffer1 full
// LD LSB 0
// LD BUFFER_MNGT // mark buffer1 full
// JP :FFsend_2_pages
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -