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

📄 smc_dtc_debug_end.hex

📁 HID-Ukey底层源码实现(st72651芯片) windows上层驱动
💻 HEX
📖 第 1 页 / 共 2 页
字号:
 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 + -