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

📄 smc_dtc_markpages256_end.hex

📁 HID-Ukey底层源码实现(st72651芯片) windows上层驱动
💻 HEX
字号:
 // *****************************************************************
 // * NOTICE: The information contained in this file is proprietary *
 // * to SGS-THOMSON Microelectronics and is being made available   *
 // * to ST customers under strict non-disclosure agreements.       *
 // * Use or disclosure of this information is permissible only     *
 // * under the terms of the existing non-disclosure agreement.     *
 // *****************************************************************

 // Written by Christophe BRICOUT
 // Created by MPmanCompiler.exe (v3.0) Tue Mar 25 23:27:13 2003


 //===================================================================
 //
 //                    SMART MEDIA CARD
 //
 //===================================================================
  
 //----------------------
 // dtc_smc_mark_page.fsm
 //----------------------
  
 //--------------------------
 //init_write_number_of_block
 //--------------------------
  
 0xa0,   //   0 LD MSB 0
 0xb1,   //   1 LD LSB 1
 0x81,   //   2 LD X // X<=1
  
 //-----------------
 //init_dtc_ctrl_reg
 //-----------------
  
 0xa1,   //   3 LD MSB 1 // data_flash port = output   
 0xb9,   //   4 LD LSB 9 // DATA_FLASH Port driven by FCI 
 0x8d,   //   5 LD CTRL_FCI // PARALLEL Port driven by FCI
  
 //-------------------------------
 //command_latch_cycle (Read2 CMD)
 //-------------------------------
  
 //LD MSB 5
 //LD LSB 0
 //LD DATA_FLASH
  
 //for 256mb
 //----------                        
 0xa0,   //   6 LD MSB 0
 0xb0,   //   7 LD LSB 0
 0x85,   //   8 LD ADR_BUFFER01
 0x9f,   //   9 LD BUFFER_MNGT
 0xad,   //   a LD MSB 13
 0x84,   //   b LD ADR_BUFFER00
 //LD MSB 8           //send first write command from 0xd0
 //LD LSB 0
 0xdb,   //   c LD A DATA_BUFFER0
 0x8c,   //   d LD DATA_FLASH
  
 0xa0,   //   e LD MSB 0
 0xba,   //   f LD LSB 10
 0x90,   //  10 LD DR_PARALLEL
 0xbb,   //  11 LD LSB 11
 0x90,   //  12 LD DR_PARALLEL
 0xb9,   //  13 LD LSB 9
 0x90,   //  14 LD DR_PARALLEL

 0xbb,   //  15 LD LSB 11
 0x90,   //  16 LD DR_PARALLEL
 0xba,   //  17 LD LSB 10
 0x90,   //  18 LD DR_PARALLEL
  
 //for 256mb
 //----------
  
 0xac,   //  19 LD MSB 12 //Set a Flag at 0xc0= 0x00 for the card with 2K page
 0xb0,   //  1a LD LSB 0
 0x82,   //  1b LD Y
 0xc0,   //  1c LD A <Y>
 0x28,   //  1d BCLR1 //if 256mb no second cmd is required
 //      LD Y
 //      DECY
 // JP :send_address
 0x51,   //  1e JP  17
  
 //send 0x80 cmd for other FLash
  
 // :process_continue1
 //------------------
 0xa1,   //  1f LD MSB 1 // data_flash port = output   
 0xb9,   //  20 LD LSB 9 // DATA_FLASH Port driven by FCI 
 0x8d,   //  21 LD CTRL_FCI // PARALLEL Port driven by FCI
  
 0xa8,   //  22 LD MSB 8
 0xb0,   //  23 LD LSB 0
 0x8c,   //  24 LD DATA_FLASH 
 // :send_nxt_cmd
 //-------------           
 0xba,   //  25 LD	LSB 10
 0x90,   //  26 LD	DR_PARALLEL	// WE = 1, CLE = 0
 0xbb,   //  27 LD	LSB 11
 0x90,   //  28 LD	DR_PARALLEL	// WE = 1, CLE = 1
 0xb9,   //  29 LD	LSB 9
 0x90,   //  2a LD	DR_PARALLEL	// WE = 0, CLE = 1
 0xbb,   //  2b LD	LSB 11
 0x90,   //  2c LD	DR_PARALLEL	// WE = 1, CLE = 1
 0xba,   //  2d LD	LSB 10
 0x90,   //  2e LD	DR_PARALLEL	// WE = 1, CLE = 0
  
 //-----------------
 //init_dtc_ctrl_reg
 //-----------------
  
 //LD MSB 1     // data_flash port = output   
 //LD LSB 9     // DATA_FLASH Port driven by FCI 
 //LD CTRL_FCI  // PARALLEL Port driven by FCI
  
 // :send_address
 0xa0,   //  2f LD MSB 0
 0xb0,   //  30 LD LSB 0
 0x85,   //  31 LD ADR_BUFFER01
 0xae,   //  32 LD	MSB 14
 0xb6,   //  33 LD	LSB 06
 0x84,   //  34 LD	ADR_BUFFER00	// buffer pointer 0 = 0x00E6
 0xdb,   //  35 LD	A DATA_BUFFER0
 0x82,   //  36 LD	Y		// Y = number of address bytes
 0x3c,   //  37 DECY
 0xbc,   //  38 LD	LSB 12
 0x89,   //  39 LD	CMP01		// CMP01 = 12, for send address toggling lines
 0xbe,   //  3a LD	LSB 14
 0x90,   //  3b LD	DR_PARALLEL	// ALE = 1, WE = 1
  
 //      LD	A ADR_BUFFER01	// clear A as the first byte, it is always 0,for 256mb
 //      LD	ADR_BUFFER10	// clear low byte of ADR1
 //      LD	CMP10		// clear low byte of CMP1
 //      LD	BUFFER_MNGT	// clear SEGment offset for using Y on ECC check 
 0x26,   //  3c SUB16	ADR_BUFFER0	// send address from high byte to low byte
  
 // :loop_send_address
 //-----------------
  
 //      SUB16	ADR_BUFFER0	// send address from high byte to low byte
 0xdb,   //  3d LD	A DATA_BUFFER0
 0x8c,   //  3e LD	DATA_FLASH	// Output the address bytes
 0xc9,   //  3f LD	A CMP01
 0x90,   //  40 LD	DR_PARALLEL	// ALE = 1, WE = 0
 0xbe,   //  41 LD	LSB 14
 0x90,   //  42 LD	DR_PARALLEL	// ALE = 1, WE = 1
  
 0x26,   //  43 SUB16	ADR_BUFFER0	// send address from high byte to low byte
 //      LD	A DATA_BUFFER0
  
 0x3c,   //  44 DECY
 // JP :loop_send_address
 0x68,   //  45 JP  -8
  
 0xa0,   //  46 LD	MSB 0
 0xba,   //  47 LD	LSB 10
 0x90,   //  48 LD	DR_PARALLEL	// ALE = 0, WE = 1 
  
 //---------------------
 //wait_sdi_addr_ready
 //---------------------
  
 // :init_timeout
 //------------
 //LD LSB 00
 //LD ADR_BUFFER01		// buffer 0 address ( 8..15 )
 //LD ADR_BUFFER00		// buffer 0 address ( 0..7 )
 //LD CMP00
 //LD MSB 15
 //LD CMP01
  
 // :wait_sdi_addr_ready
 //---------------------
 //ADDER16 ADR_BUFFER0
 //CP ADR_BUFFER0<CMP0
 //JP :sdi_addr_no_timeout
 //STATUS STOP ERROR   // timeout >20ms
  
 // :sdi_addr_no_timeout
 //---------------------
 //LD A DR_PARALLEL
 //EXCHANGE
 //BCLR1 //test R/B
 //JP :wait_sdi_addr_ready
  
 //------------
 // write_spare
 //------------
  
 //init_write_spare
 //----------------
  
 0xa0,   //  49 LD MSB 0
 0xb0,   //  4a LD LSB 0
 0x85,   //  4b LD ADR_BUFFER01		// buffer 0 address ( 15..8 )
 0x89,   //  4c LD CMP01
  
 0xae,   //  4d LD MSB 14
 0xb7,   //  4e LD LSB 07
 0x84,   //  4f LD ADR_BUFFER00
  
 0xaf,   //  50 LD MSB 15
 0x88,   //  51 LD CMP00
  
 // :write_spare
 //-----------
  
 0xdb,   //  52 LD A DATA_BUFFER0
 0x8c,   //  53 LD DATA_FLASH
  
 0xa0,   //  54 LD MSB 0
 0xb8,   //  55 LD LSB 8
 0x90,   //  56 LD DR_PARALLEL
  
 0xba,   //  57 LD LSB 10
 0x90,   //  58 LD DR_PARALLEL
  
 0x27,   //  59 ADDER16 ADR_BUFFER0
 0xd,   //  5a CP ADR_BUFFER0<CMP0
 // JP :write_spare
 0x69,   //  5b JP  -9
  
 0xaf,   //  5c LD MSB 15
 0xbf,   //  5d LD LSB 15
 0x84,   //  5e LD ADR_BUFFER00 //point to 0xff
  
 0xdb,   //  5f LD A DATA_BUFFER0
 0x2,   //  60 CLC
 0x24,   //  61 SUB8 X
 0x9b,   //  62 LD DATA_BUFFER0
 0x9,   //  63 CP A<X //changed for bug
 0xa9,   //  64 LD MSB 9
 0xbf,   //  65 LD LSB 15
 0x60,   //  66 BRANCH :program_page
  
 0xac,   //  67 LD MSB 12
 0xb0,   //  68 LD LSB 0
 0x84,   //  69 LD ADR_BUFFER00
 0xdb,   //  6a LD A DATA_BUFFER0
 0x38,   //  6b BSET1
  
 //      JP :program_page
 0xa9,   //  6c LD MSB 9
 0xbf,   //  6d LD LSB 15
 // :program_page1
 0x60,   //  6e BRANCH :program_page
  
 0xae,   //  6f LD MSB 14
 0xb4,   //  70 LD LSB 4
 0x84,   //  71 LD ADR_BUFFER00
  
 0xa0,   //  72 LD MSB 0
 0xb2,   //  73 LD LSB 2
 0x82,   //  74 LD Y
  
 0xdb,   //  75 LD A DATA_BUFFER0
 0x2,   //  76 CLC
 0x2d,   //  77 ADDER8 Y
 0x9b,   //  78 LD DATA_BUFFER0
  
 0xa1,   //  79 LD MSB 1
 0xb0,   //  7a LD LSB 0
 0x82,   //  7b LD Y
  
 //      LD MSB 14
 //      LD LSB 5
 0x27,   //  7c ADDER16 ADR_BUFFER0
 //      LD ADR_BUFFER00
 0xdb,   //  7d LD A DATA_BUFFER0
 0x2,   //  7e CLC
 0x2d,   //  7f ADDER8 Y
 0x9b,   //  80 LD DATA_BUFFER0
 0x33,   //  81 EXCHANGE
 0x3a,   //  82 BSET3
 // JP :next_page
 0x4e,   //  83 JP  14
  
 0xae,   //  84 LD MSB 14
 0xb6,   //  85 LD LSB 6
 0x84,   //  86 LD ADR_BUFFER00
 //      LD MSB 13
 //      LD LSB 2         //reload address bytes into 0xd2
 //      LD Y
 //      LD A DATA_BUFFER0
 //      LD <Y>
  
 0xa0,   //  87 LD MSB 0
 0xb2,   //  88 LD LSB 2
 0x9b,   //  89 LD DATA_BUFFER0 //load 2 in 0xe6 to change number of add bytes
  
 //send 0x85 command for random data output
 //----------------------------------------
  
 0xa8,   //  8a LD MSB 8
 0xb5,   //  8b LD LSB 5
 0x8c,   //  8c LD DATA_FLASH
 0xa2,   //  8d LD MSB 2
 0xb5,   //  8e LD LSB 5
 0xb,   //  8f CP ALWAYS
 0x60,   //  90 BRANCH :send_nxt_cmd
  
 //      LD MSB 6
 //      LD LSB 9
 //      BRANCH :write_next_col
  
  
 // :next_page
 0xad,   //  91 LD MSB 13
 0xb2,   //  92 LD LSB 2
 0x82,   //  93 LD Y 
 0xae,   //  94 LD MSB 14
 0xb6,   //  95 LD LSB 6
 0x84,   //  96 LD ADR_BUFFER00
 0xc0,   //  97 LD A <Y>
 0x9b,   //  98 LD DATA_BUFFER0 //reload again the number of address bytes
  
 //      LD MSB 14
 //      LD LSB 5
 0x26,   //  99 SUB16 ADR_BUFFER0
 0xc5,   //  9a LD A ADR_BUFFER01
 0x9b,   //  9b LD DATA_BUFFER0
 0x26,   //  9c SUB16 ADR_BUFFER0
 0xb2,   //  9d LD LSB 2
 0x9b,   //  9e LD DATA_BUFFER0
  
 //----------------------------
 // :Page_Pgm_command_latch_cycle
 //----------------------------
 // :program_page
 //-------------
  
 0xa1,   //  9f LD MSB 1
 0xb0,   //  a0 LD LSB 0
 0x8c,   //  a1 LD DATA_FLASH
  
 0xa0,   //  a2 LD MSB 0
 0xba,   //  a3 LD LSB 10
 0x90,   //  a4 LD DR_PARALLEL
 0xbb,   //  a5 LD LSB 11
 0x90,   //  a6 LD DR_PARALLEL
 0xb9,   //  a7 LD LSB 9
 0x90,   //  a8 LD DR_PARALLEL
 0xbb,   //  a9 LD LSB 11
 0x90,   //  aa LD DR_PARALLEL
 0xba,   //  ab LD LSB 10
 0x90,   //  ac LD DR_PARALLEL
  
 //---------------------------
 // read_status & check_status
 //---------------------------
  
 //wait_card_ready
 //---------------
  
 //init_timeout
 //------------
 0xb0,   //  ad LD LSB 00
 0x85,   //  ae LD ADR_BUFFER01
 0x84,   //  af LD ADR_BUFFER00
 0x88,   //  b0 LD CMP00
 0xaf,   //  b1 LD MSB 15
 0x89,   //  b2 LD CMP01
  
 // :wait_card_ready
 //---------------
 0x27,   //  b3 ADDER16 ADR_BUFFER0
 0xd,   //  b4 CP ADR_BUFFER0<CMP0
 // JP :no_timeout
 0x42,   //  b5 JP  2
 0x7,   //  b6 STATUS STOP ERROR // timeout 20ms
  
 // :no_timeout
 //----------
 0xd0,   //  b7 LD A DR_PARALLEL
 0x33,   //  b8 EXCHANGE
 0x28,   //  b9 BCLR1 //test R/B
 // JP :wait_card_ready
 0x67,   //  ba JP  -7
  
 // :read_status_command_latch_cycle
 //-------------------------------
  
 0xa7,   //  bb LD MSB 7
 0xb0,   //  bc LD LSB 0
 0x8c,   //  bd LD DATA_FLASH
  
 0xa0,   //  be LD MSB 0
 0xba,   //  bf LD LSB 10
 0x90,   //  c0 LD DR_PARALLEL
 0xbb,   //  c1 LD LSB 11
 0x90,   //  c2 LD DR_PARALLEL
 0xb9,   //  c3 LD LSB 9
 0x90,   //  c4 LD DR_PARALLEL
 0xbb,   //  c5 LD LSB 11
 0x90,   //  c6 LD DR_PARALLEL
 0xba,   //  c7 LD LSB 10
 0x90,   //  c8 LD DR_PARALLEL
  
 // :init_read_status_seq
 //---------------------
  
 0xa0,   //  c9 LD MSB 0
 0xb9,   //  ca LD LSB 9 // DATA_FLASH Port driven by FCI  
 0x8d,   //  cb LD CTRL_FCI // PARALLEL Port driven by FCI
  
 // :read_status_seq
 //----------------
  
 0xa0,   //  cc LD MSB 0
 0xb2,   //  cd LD LSB 2
 0x90,   //  ce LD DR_PARALLEL
 0x0,   //  cf NOP
 0xcc,   //  d0 LD A DATA_FLASH // load DATA_FLASH
  
 // : check_status
 //-------------
 //EXCHANGE
 //BCLR3
 //JP :error_status
 //BCLR4
 //JP :error_status
 //CP A<X
 0x28,   //  d1 BCLR1
 // JP :no_error
 0x42,   //  d2 JP  2
  
 // :error_status
 //------------
 0x5,   //  d3 STATUS STOP
  
 // :no_error
 //--------
 0xa0,   //  d4 LD MSB 0
 0xba,   //  d5 LD LSB 10
 0x90,   //  d6 LD DR_PARALLEL
  
 //------------
 //end_of_block
 //------------
  
 //inc_addr
 //-------- 
 //for 256mb
  
 0xb0,   //  d7 LD LSB 0
 0xa0,   //  d8 LD MSB 0
 0x85,   //  d9 LD ADR_BUFFER01 // buffer 0 address ( 8..15 )
  
 0xaf,   //  da LD MSB 15
 0xbf,   //  db LD LSB 15
 0x84,   //  dc LD ADR_BUFFER00
  
 0xdb,   //  dd LD A DATA_BUFFER0
 0x8,   //  de CP A=>X
 // JP :inc_page_addr
 0x42,   //  df JP  2
 0x5,   //  e0 STATUS STOP
  
 // :inc_page_addr
 //-------------
  
 0xac,   //  e1 LD MSB 12
 0xb0,   //  e2 LD LSB 0
 0x84,   //  e3 LD ADR_BUFFER00
  
 0xdb,   //  e4 LD A DATA_BUFFER0
 0x38,   //  e5 BSET1
 // JP :512bytes_page
 0x46,   //  e6 JP  6
  
 0xae,   //  e7 LD MSB 14
 0xb3,   //  e8 LD LSB 03
 0x84,   //  e9 LD ADR_BUFFER00 // buffer 0 address ( 0..7 )
 0xb,   //  ea CP ALWAYS
 // JP :process_continue
 0x44,   //  eb JP  4
  
 // :512bytes_page
 //-------------
 0xae,   //  ec LD MSB 14
 0xb4,   //  ed LD LSB 04
 0x84,   //  ee LD ADR_BUFFER00
  
 // :process_continue
 //-----------------
 0xdb,   //  ef LD A DATA_BUFFER0
 0x2,   //  f0 CLC
 0x25,   //  f1 ADDER8 X
 0x9b,   //  f2 LD DATA_BUFFER0
  
 0xa1,   //  f3 LD MSB 1
 0xbf,   //  f4 LD LSB 15
 //LD Y
 //LD A <Y>
 0xb,   //  f5 CP ALWAYS
 0x60,   //  f6 BRANCH

⌨️ 快捷键说明

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