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

📄 smc_dtc_format256_end_old.hex

📁 HID-Ukey底层源码实现(st72651芯片) windows上层驱动
💻 HEX
📖 第 1 页 / 共 2 页
字号:
 0xa0,   //  73 LD	MSB 0
 0xbb,   //  74 LD	LSB 11
 0x90,   //  75 LD	DR_PARALLEL	// WE = 1, CLE = 1
 0xb9,   //  76 LD	LSB 9
 0x90,   //  77 LD	DR_PARALLEL	// WE = 0, CLE = 1
 0xbb,   //  78 LD	LSB 11
 0x90,   //  79 LD	DR_PARALLEL	// WE = 1, CLE = 1
 0xba,   //  7a LD	LSB 10
 0x90,   //  7b LD	DR_PARALLEL	// WE = 1, CLE = 0
  
 0xca,   //  7c LD A CMP10
 0x33,   //  7d EXCHANGE
 0x39,   //  7e BSET2 //if it was the 2nd read cmd,then stop
 // JP :status_stop
 0x5e,   //  7f JP  30
  
 0xc2,   //  80 LD A Y 
 0x33,   //  81 EXCHANGE
 0x2b,   //  82 BCLR4
 // JP :end_of_cmd
 0x4a,   //  83 JP  10
  
 // :wait_write_erase_busy
 //---------------------
 0xd0,   //  84 LD	A DR_PARALLEL
 0x33,   //  85 EXCHANGE
 0x28,   //  86 BCLR1
 // JP :wait_write_erase_busy
 0x63,   //  87 JP  -3
  
 0xa7,   //  88 LD	MSB 7
 0xb0,   //  89 LD	LSB 0
 0x82,   //  8a LD Y
 0xb,   //  8b CP ALWAYS
 // JP :send_cmd2
 0x7a,   //  8c JP  -26
  
 // :end_of_cmd
 //------------
 0xa0,   //  8d LD	MSB 0		//data_flash port = input
 0xb9,   //  8e LD	LSB 9		//DATA_FLASH Port driven by FCI  
 0x8d,   //  8f LD	CTRL_FCI	//PARALLEL Port driven by FCI
  
 0xb2,   //  90 LD	LSB 2
 0x90,   //  91 LD	DR_PARALLEL
 0xba,   //  92 LD	LSB 10
 0x90,   //  93 LD	DR_PARALLEL
 0xcc,   //  94 LD	A DATA_FLASH	// read the status
 0x28,   //  95 BCLR1			// check the status bit,changed
 // JP :erase_write_pass
 0x42,   //  96 JP  2
  
 // :cluster_read_write_error
 //------------------------
 //NOP
 0x7,   //  97 STATUS	STOP ERROR
  
 // :erase_write_pass
 //---------------- 
 0xca,   //  98 LD A CMP10
 0x33,   //  99 EXCHANGE
 0x2b,   //  9a BCLR4 //if erase cmd then 2nd cmd is 0xd0
 0xc7,   //  9b LD	A ADR_BUFFER11	// ADR_BUFFER11 = 0x00
 0x60,   //  9c BRANCH	:clear_cluster_pages
  
 // :status_stop
 //--------------
 0x5,   //  9d STATUS STOP
  
 //:cluster_read_write_error
 //------------------------
 //NOP
 //STATUS	STOP ERROR
  
 //:erase_write_pass
 //---------------- 
 //LD A CMP10
 //EXCHANGE
 //BCLR4             //if erase cmd then 2nd cmd is 0xd0
 //LD	A ADR_BUFFER01	// ADR_BUFFER01 = 0x00
 //BRANCH	:clear_cluster_pages
  
 //:status_stop
 //--------------
 //STATUS STOP
  
 //--------------------------------------------------------
 //	START ADDRESS FOR read and check all 0's
 //--------------------------------------------------------
 // :read_check_cluster
 //------------------
 0xa0,   //  9e LD	MSB 0		//data_flash port = input
 0xb9,   //  9f LD	LSB 9		//DATA_FLASH Port driven by FCI  
 0x8d,   //  a0 LD	CTRL_FCI	//PARALLEL Port driven by FCI
 0xb2,   //  a1 LD	LSB 2
 0x8b,   //  a2 LD	CMP11
 0xb8,   //  a3 LD LSB 8
 0x89,   //  a4 LD CMP01
 0xa4,   //  a5 LD MSB 4
 0xb0,   //  a6 LD	LSB 0 //CMP1 = 0x840
 0x88,   //  a7 LD	CMP00
  
 //LD MSB 15
 //LD LSB 15
 //LD ADR_BUFFER00
  
 //LD DATA_BUFFER0
 //LD Y
 //DECY
  
 // :loop_read_all_pages
 //-------------------
 0xc5,   //  a8 LD	A ADR_BUFFER01
 0x84,   //  a9 LD	ADR_BUFFER00
 0x87,   //  aa LD	ADR_BUFFER11	// ADR0 = 0x0000
  
 // :wait_read_page
 0xd0,   //  ab LD	A DR_PARALLEL
 0x33,   //  ac EXCHANGE
 0x28,   //  ad BCLR1
 // JP :wait_read_page
 0x63,   //  ae JP  -3
  
 // :loop_read_page
 //--------------
 0xcb,   //  af LD	A CMP11
 0x90,   //  b0 LD	DR_PARALLEL	// RD = 0
 0xba,   //  b1 LD	LSB 10
 0x90,   //  b2 LD	DR_PARALLEL	// RD = 1
 0xcc,   //  b3 LD	A DATA_FLASH
 0x8,   //  b4 CP	A=>X
 // JP :cluster_read_write_error
 0x7e,   //  b5 JP  -30
 0x27,   //  b6 ADDER16	ADR_BUFFER0
 0xd,   //  b7 CP	ADR_BUFFER0<CMP0
 // JP :loop_read_page
 0x69,   //  b8 JP  -9
 //DECY
 0xb,   //  b9 CP ALWAYS
 0xc7,   //  ba LD A ADR_BUFFER11 //to be changed
 0x60,   //  bb BRANCH :clear_cluster_pages
  
 //:stop_or_error
 //-------------
 //STATUS STOP
  
 //---------------------------------------------------------------
 //		START ADDRESS FOR read_spare & check_spare
 // redundant area is read to address of 1F0-1FF
 //------------------------------------------------------------------------------------------------
 // 1F0 | 1F1 | 1F2 | 1F3 | 1F4 | 1F5 | 1F6 | 1F7 | 1F8 | 1F9 | 1FA | 1FB | 1FC | 1FD | 1FE | 1FF |
 //    Reserved Field     | DAT | BLK |  Address1 |   ECC Field-2   |  Address2 |   ECC Field-1   |
 //------------------------------------------------------------------------------------------------
 // :init_read_spare
 //---------------
 0xaf,   //  bc LD	MSB 15
 0xb0,   //  bd LD	LSB 0
 0x82,   //  be LD	Y			// Y = 0xF0
 0xa2,   //  bf LD	MSB 2
 0x9f,   //  c0 LD	BUFFER_MNGT		// segment offset = 1, going to use <Y> for reading spare area
 0x33,   //  c1 EXCHANGE
 0x88,   //  c2 LD	CMP00			// CMP00 = 0x02, used for toggling bit for reading
  
 //LD	MSB 0			// data_flash port = intput   
 0xb9,   //  c3 LD	LSB 9			// DATA_FLASH Port driven by FCI 
 0x8d,   //  c4 LD	CTRL_FCI		// PARALLEL Port driven by FCI 
  
 // :test_busy_line
 //--------------
 0xd0,   //  c5 LD	A DR_PARALLEL
 0x33,   //  c6 EXCHANGE
 0x28,   //  c7 BCLR1
 // JP :test_busy_line
 0x63,   //  c8 JP  -3
  
 // read_spare
 //-----------
 // :read_spare
 0xc8,   //  c9 LD	A CMP00
 0x90,   //  ca LD	DR_PARALLEL	// RD = 0
 0xba,   //  cb LD	LSB 10
 0x90,   //  cc LD	DR_PARALLEL	// RD = 1
  
 0xcc,   //  cd LD	A DATA_FLASH	// load DATA_FLASH
 0x80,   //  ce LD	<Y>
 0x3d,   //  cf INCY
 // JP :read_spare
 0x67,   //  d0 JP  -7
  
 //------------------------------------------
 // check Block_Status has no more than one 0
 //------------------------------------------
 0xc5,   //  d1 LD	A ADR_BUFFER01
 0x89,   //  d2 LD	CMP01
 0xc1,   //  d3 LD	A X
 0x87,   //  d4 LD	ADR_BUFFER11
 0x88,   //  d5 LD	CMP00		// CMP0 = 0x0001
 0xb8,   //  d6 LD	LSB 8		// Y = 0x08// points to a pattern array as following
 0x82,   //  d7 LD	Y		//	{ ~0x00, ~0x01, ~0x02, ~0x04, ~0x08, ~0x10, ~0x20, ~0x40, ~0x80 }
 0xaf,   //  d8 LD	MSB 15
 0xb5,   //  d9 LD	LSB 5
 0x86,   //  da LD	ADR_BUFFER10	// pointer 1 = 0x01F5, points to Block_Status of the redundant area
  
 // :check_Block_Status
 //------------------
 0xdc,   //  db LD	A DATA_BUFFER1
 0x81,   //  dc LD	X
 0xc0,   //  dd LD	A <Y>
 0x9,   //  de CP	A<X
 // JP :check_Block_Status_next
 0x45,   //  df JP  5
 0x81,   //  e0 LD	X
 0xdc,   //  e1 LD	A DATA_BUFFER1
 0x8,   //  e2 CP	A=>X			// we found one match on the array
 // JP :good_Block_Status
 0x44,   //  e3 JP  4
 // :check_Block_Status_next
 //-----------------------
 0x3c,   //  e4 DECY
 // JP :check_Block_Status
 0x6a,   //  e5 JP  -10
  
 // :cluster_error
 //-------------
 0x7,   //  e6 STATUS	STOP ERROR
  
 // :good_Block_Status
 //-----------------
 0xc7,   //  e7 LD	A ADR_BUFFER11
 0x81,   //  e8 LD	X			// X = 1
 0x2f,   //  e9 ADDER16	ADR_BUFFER1		// buffer pointer 1 = 0x01F6
 0xdc,   //  ea LD	A DATA_BUFFER1		// high byte of Address1
 0x85,   //  eb LD	ADR_BUFFER01
 0x2f,   //  ec ADDER16	ADR_BUFFER1
 0xdc,   //  ed LD	A DATA_BUFFER1
 0x84,   //  ee LD	ADR_BUFFER00		// ADR_BUFFER0 = Address1-Field
 0xd,   //  ef CP	ADR_BUFFER0<CMP0	// check with 0x0001, it may be a CIS
  
 // JP :cluster_error
 0x6a,   //  f0 JP  -10
 0xaf,   //  f1 LD	MSB 15
 0xbb,   //  f2 LD	LSB 11
 0x86,   //  f3 LD	ADR_BUFFER10		// skip the ECC Field-2
  
 0xdc,   //  f4 LD	A DATA_BUFFER1
 0x89,   //  f5 LD	CMP01
 0x2f,   //  f6 ADDER16	ADR_BUFFER1
 0xdc,   //  f7 LD	A DATA_BUFFER1
 0x88,   //  f8 LD	CMP00			// CMP0 = Address2-Field
 0xd,   //  f9 CP	ADR_BUFFER0<CMP0
 // JP :cluster_error
 0x74,   //  fa JP  -20
 0x26,   //  fb SUB16	ADR_BUFFER0
 0xc,   //  fc CP	ADR_BUFFER0=>CMP0
 // JP :cluster_error
 0x77,   //  fd JP  -23
  
 0x5,   //  fe STATUS	STOP
  
  
  
  
  
  
  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -