+ if (len != 0) {\r
+ if (MF_DBGLEVEL >= 1) Dbprintf("halt error. response len: %x", len); \r
+ return 1;\r
+ }\r
+\r
+ return 0;\r
+}\r
+\r
+// work with emulator memory\r
+void emlSetMem(uint8_t *data, int blockNum, int blocksCount) {\r
+ uint8_t* emCARD = eml_get_bigbufptr_cardmem();\r
+ \r
+ memcpy(emCARD + blockNum * 16, data, blocksCount * 16);\r
+}\r
+\r
+void emlGetMem(uint8_t *data, int blockNum, int blocksCount) {\r
+ uint8_t* emCARD = eml_get_bigbufptr_cardmem();\r
+ \r
+ memcpy(data, emCARD + blockNum * 16, blocksCount * 16);\r
+}\r
+\r
+void emlGetMemBt(uint8_t *data, int bytePtr, int byteCount) {\r
+ uint8_t* emCARD = eml_get_bigbufptr_cardmem();\r
+ \r
+ memcpy(data, emCARD + bytePtr, byteCount);\r
+}\r
+\r
+int emlCheckValBl(int blockNum) {\r
+ uint8_t* emCARD = eml_get_bigbufptr_cardmem();\r
+ uint8_t* data = emCARD + blockNum * 16;\r
+\r
+ if ((data[0] != (data[4] ^ 0xff)) || (data[0] != data[8]) ||\r
+ (data[1] != (data[5] ^ 0xff)) || (data[1] != data[9]) ||\r
+ (data[2] != (data[6] ^ 0xff)) || (data[2] != data[10]) ||\r
+ (data[3] != (data[7] ^ 0xff)) || (data[3] != data[11]) ||\r
+ (data[12] != (data[13] ^ 0xff)) || (data[12] != data[14]) ||\r
+ (data[12] != (data[15] ^ 0xff))\r
+ ) \r
+ return 1;\r
+ return 0;\r
+}\r
+\r
+int emlGetValBl(uint32_t *blReg, uint8_t *blBlock, int blockNum) {\r
+ uint8_t* emCARD = eml_get_bigbufptr_cardmem();\r
+ uint8_t* data = emCARD + blockNum * 16;\r
+ \r
+ if (emlCheckValBl(blockNum)) {\r