📄 protocol.asm
字号:
RSXM
ADLK _labeldata+0,0
ADD * ,AR0
SACL *
LAR AR3,* ,AR2
LALK _viccdata+10
SUB * ,AR0
SACL *
LAR AR4,* ,AR4
LAC * ,AR3
SACL * ,AR2
.line 73
;>>>> invUid[ (invUid[0]-1)*8+1+j ] = viccdata[10-j];
;>>>> else {;}
LDPK _invUid
LAC _invUid,3
SUBK 7
ADLK _invUid+0,0
ADD * ,AR0
SACL *
LAR AR3,* ,AR2
LALK _viccdata+10
SUB * ,AR0
SACL *
LAR AR4,* ,AR4
LAC * ,AR3
SACL * ,AR2
.line 70
LAC *
ADDK 1
SACL *
SSXM
LAC * ,AR0
SUBK 8
BLZ L37
L35:
.line 46
MAR * ,AR2
LARK AR2,5
MAR *0+
LAC *
ADDK 1
SACL *
SSXM
LAC *
SUBK 16
ADRK 2
BLZ L30
L31:
.line 78
;>>>> invStayQuiet();
;>>>> /////////////////////////3/////////////////////////////////////////////////
CALL _invStayQuiet,AR1
.line 80
;>>>> for(ii=0;ii<16;ii++)
LACK 0
MAR * ,AR2
LARK AR2,2
MAR *0+
SACL *
SSXM
LAC *
SUBK 16
BGEZ L29
L39:
.line 82
;>>>> if(collFlag1[ii] == 0xaa)
LAC * ,AR0
ADLK _collFlag1+0,0
SACL *
LAR AR3,* ,AR3
LAC *
SUBK 170
BNZ L41
.line 84
;>>>> collFlag1[ii] = 0x0;
MAR * ,AR2
LAC * ,AR0
ADLK _collFlag1+0,0
SACL *
LAR AR3,* ,AR3
LACK 0
SACL * ,AR2
.line 85
;>>>> for(slotCounter=0;slotCounter<16;slotCounter++)
ADRK 3
SACL *
SSXM
LAC *
SUBK 16
BGEZ L41
ADRK 2
L42:
.line 87
;>>>> flags = ISOFlagsSys | 0x0004; //inventory_flag
LACK 4
LDPK _ISOFlagsSys
OR _ISOFlagsSys
SACL *
.line 88
;>>>> viccdata[0] = 0x07; //len
LACK 7
LDPK _viccdata
SACL _viccdata
.line 89
;>>>> viccdata[1] = flags; //flags
BLDD * ,#_viccdata+1
.line 90
;>>>> viccdata[2] = 0x01; //cmd
LACK 1
LDPK _viccdata+2
SACL _viccdata+2
.line 91
;>>>> viccdata[3] = 0x04; //mask length
LACK 4
LDPK _viccdata+3
SACL _viccdata+3
.line 92
;>>>> viccdata[4] = curSlot[ii]; //mask value
SBRK 5
LAC * ,1,AR0
ADLK _curSlot+0,0
SACL *
LAR AR3,* ,AR3
BLDD * ,#_viccdata+4,AR1
.line 93
;>>>> wr_crc_send(); //without optional afi
CALL _wr_crc_send
.line 95
;>>>> ISOMode = ISOModeSys&0xe7; //read all,read,wr_op
LACK 231
LDPK _ISOModeSys
AND _ISOModeSys
LDPK _ISOMode
SACL _ISOMode
.line 96
;>>>> if(slotCounter!=0)ISOMode |= 0x80; //next slot
MAR * ,AR2
LARK AR2,5
MAR *0+
LAC *
BZ L44
LACK 128
OR _ISOMode
SACL _ISOMode
L44:
.line 97
;>>>> m = sendISOCmd();
CALL _sendISOCmd,AR1
MAR * ,AR2
LARK AR2,3
MAR *0+
SACL *
.line 98
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 100
;>>>> if(viccdata[0] == 1)globalErrFlag = 0xff; // iso error
LDPK _viccdata
LAC _viccdata
SUBK 1
BNZ L45
LACK 255
LDPK _globalErrFlag
SACL _globalErrFlag
L45:
.line 102
;>>>> if(m==2){collFlag1[i] = 0xaa;curSlot1[slotCounter] = (ii<<8) | curSlot[ii];}
LAC *
SUBK 2
BNZ L46
SBRK 2
LAC * ,AR0
ADLK _collFlag1+0,0
SACL *
LAR AR3,* ,AR3
LACK 170
SACL * ,AR2
ADRK 4
LAC * ,1,AR0
ADLK _curSlot1+0,0
SACL *
LAR AR3,* ,AR2
SBRK 3
LAC * ,1,AR0
ADLK _curSlot+0,0
SACL *
LAR AR4,* ,AR2
LAC * ,8,AR1
SACL *
SSXM
LAC * ,AR0
SACH *,AR4
OR *+,AR3
SACL *+,AR0
ZALS *,AR4
OR *-,AR3
SACL *-,AR4
B L47
L46:
.line 103
;>>>> else if(m==1)
LAC *
SUBK 1
BNZ L47
.line 105
;>>>> labeldata[0] += 1;
LDPK _labeldata
LAC _labeldata
ADDK 1
SACL _labeldata
.line 106
;>>>> invUid[0] += 1;
LDPK _invUid
LAC _invUid
ADDK 1
SACL _invUid
.line 107
;>>>> labeldata[ (labeldata[0]-1)*10 + 1 ] = 0x03; //tr-type
LDPK _labeldata
LAC _labeldata
SUBK 1
MAR *+,AR0
SACL *
LT *
MPYK 10
PAC
ADLK _labeldata+1,0
SACL *
LAR AR3,* ,AR3
LACK 3
SACL * ,AR0
.line 108
;>>>> labeldata[ (labeldata[0]-1)*10 + 2 ] = viccdata[2];//dsfid
LAC _labeldata
SUBK 1
SACL *
LT *
MPYK 10
PAC
ADLK _labeldata+2,0
SACL *
LAR AR3,* ,AR3
BLKD #_viccdata+2,* ,AR2
.line 109
;>>>> for(j=0;j<8;j++)
LACK 0
SACL *
SSXM
LAC *
SUBK 8
BGEZ L47
MAR * ,AR0
L49:
.line 111
;>>>> labeldata[ (labeldata[0]-1)*10+3+j ] = viccdata[10-j];//uid
LDPK _labeldata
LAC _labeldata
SUBK 1
SACL *
LT * ,AR2
MPYK 10
PAC
ADDK 3
RSXM
ADLK _labeldata+0,0
ADD * ,AR0
SACL *
LAR AR3,* ,AR2
LALK _viccdata+10
SUB * ,AR0
SACL *
LAR AR4,* ,AR4
LAC * ,AR3
SACL * ,AR2
.line 112
;>>>> invUid[ (invUid[0]-1)*8+1+j ] = viccdata[10-j];
;>>>> else {;}
;>>>> //invStayQuiet();
;>>>> ///////////////////////////////////4//////////////////////////////////////////////////////
;>>>> /////////////////////////////////////
LDPK _invUid
LAC _invUid,3
SUBK 7
ADLK _invUid+0,0
ADD * ,AR0
SACL *
LAR AR3,* ,AR2
LALK _viccdata+10
SUB * ,AR0
SACL *
LAR AR4,* ,AR4
LAC * ,AR3
SACL * ,AR2
.line 109
LAC *
ADDK 1
SACL *
SSXM
LAC * ,AR0
SUBK 8
BLZ L49
L47:
.line 85
MAR * ,AR2
LARK AR2,5
MAR *0+
LAC *
ADDK 1
SACL *
SSXM
LAC *
SUBK 16
ADRK 2
BLZ L42
L41:
.line 80
MAR * ,AR2
LARK AR2,2
MAR *0+
LAC *
ADDK 1
SACL *
SSXM
LAC *
SUBK 16
BLZ L39
L29:
.line 41
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
SSXM
LAC *
SUBK 16
BLZ L27
L28:
.line 124
;>>>> viccdata[0] = 5;
LACK 5
LDPK _viccdata
SACL _viccdata
.line 125
;>>>> viccdata[1] = ISOFlagsSys;
LDPK _ISOFlagsSys
BLDD _ISOFlagsSys,#_viccdata+1
.line 126
;>>>> viccdata[2] = Reset_rdy_cmd;
LACK 38
LDPK _viccdata+2
SACL _viccdata+2
.line 127
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
.line 128
;>>>> ISOMode = ISOModeSys;
LDPK _ISOModeSys
BLDD _ISOModeSys,#_ISOMode
.line 129
;>>>> sendISOCmd(); // active all cards
CALL _sendISOCmd
.line 130
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
EPI0_8:
.line 131
SBRK 11
LAR AR0,*-
PSHD *
RET
.endfunc 297,000000000H,10
.sym _inventory_pro,_inventory_pro,32,2,0
.globl _inventory_pro
.func 298
;>>>> void inventory_pro(void)
;>>>> uchar i,j;
;>>>> uchar addr,num_card;
;>>>> uint m;
******************************************************
* FUNCTION DEF : _inventory_pro
******************************************************
_inventory_pro:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,6
LAR AR0,*0+,AR2
.sym _i,1,12,1,16
.sym _j,2,12,1,16
.sym _addr,3,12,1,16
.sym _num_card,4,12,1,16
.sym _m,5,14,1,16
.line 7
;>>>> addr = pcdata[1];
LARK AR2,3
MAR *0+
BLKD #_pcdata+1,*
.line 9
;>>>> if(pcdata[1] == deviceAddr) //本机地址执行
LDPK _pcdata+1
LAC _pcdata+1
LDPK _deviceAddr
SUB _deviceAddr
BNZ L51
.line 11
;>>>> myInvOut();
CALL _myInvOut,AR1
.line 12
;>>>> if(m==0){resp_no_trns(); } //没有标签返回
;>>>> else
MAR * ,AR2
LARK AR2,5
MAR *0+
LAC *
BNZ L52
CALL _resp_no_trns,AR1
B L51
L52:
.line 15
;>>>> if( labeldata[0]!=0 )
LDPK _labeldata
LAC _labeldata
BZ L54
.line 17
;>>>> num_card = labeldata[0];
MAR *-
SACL *
.line 18
;>>>> pcdata[0] = 5+num_card*10+2;
LT *
MPYK 10
PAC
ADDK 7
LDPK _pcdata
SACL _pcdata
.line 19
;>>>> pcdata[1] = deviceAddr;
LDPK _deviceAddr
BLDD _deviceAddr,#_pcdata+1
.line 20
;>>>> pcdata[2] = 0xb0;
LACK 176
LDPK _pcdata+2
SACL _pcdata+2
.line 21
;>>>> if(pcdata[0]<=0xff)pcdata[3] = OK;
LDPK _pcdata
ZALS _pcdata
SUBK 255
BGZ L55
LACK 0
LDPK _pcdata+3
SACL _pcdata+3
B L56
L55:
.line 22
;>>>> else pcdata[3] = 0x94; //more data
LACK 148
LDPK _pcdata+3
SACL _pcdata+3
L56:
.line 23
;>>>> pcdata[4] = num_card;
BLDD * ,#_pcdata+4
.line 24
;>>>> for(i=0;i<num_card;i++)
LACK 0
SBRK 3
SACL *
ZALS *
ADRK 3
SUBS *
BGEZ L58
SBRK 3
L57:
.line 26
;>>>> pcdata[10*i+5] = labeldata[10*i+1];
LT * ,AR0
MPYK 10
PAC
ADLK _labeldata+1,0
SACL *
LAR AR3,* ,AR2
LT * ,AR0
MPYK 10
PAC
ADLK _pcdata+5,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 27
;>>>> pcdata[10*i+6] = labeldata[10*i+2];
LT * ,AR0
MPYK 10
PAC
ADLK _labeldata+2,0
SACL *
LAR AR3,* ,AR2
LT *+,AR0
MPYK 10
PAC
ADLK _pcdata+6,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 28
;>>>> for(j=0;j<8;j++)
LACK 0
SACL *
ZALS *
SUBK 8
BGEZ L60
MAR *-
RSXM ;;;
L59:
.line 30
;>>>> pcdata[10*i+7+j] = labeldata[10*i+3+j];
LT *+
MPYK 10
PAC
ADDK 3
ADLK _labeldata+0,0
ADD *-,AR0
SACL *
LAR AR3,* ,AR2
LT *+
MPYK 10
PAC
ADDK 7
ADLK _pcdata+0,0
ADD * ,AR0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 28
LAC *
ADDK 1
SACL *
ZALS *-
SUBK 8
BLZ L59
L60:
.line 24
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
ADRK 3
SUBS *
SBRK 3
BLZ L57
L58:
.line 33
;>>>> wr_crc_resp(); //返回ISO执行数据
CALL _wr_crc_resp,AR1
B L51
L54:
.line 35
;>>>> else if(viccdata[0]==1)resp_iso_err(); //ISO错误返回
LDPK _viccdata
LAC _viccdata
SUBK 1
BNZ L62
CALL _resp_iso_err,AR1
B L51
L62:
.line 36
;>>>> else resp_no_trns(); //没有标签返回
CALL _resp_no_trns,AR1
L51:
EPI0_9:
.line 39
MAR * ,AR1
SBRK 7
LAR AR0,*-
PSHD *
RET
.endfunc 336,000000000H,6
.sym _stay_quiet_pro,_stay_quiet_pro,32,2,0
.globl _stay_quiet_pro
.func 338
;>>>> void stay_quiet_pro(void)
;>>>> uchar i,j,addr;
;>>>> uchar flags;
******************************************************
* FUNCTION DEF : _stay_quiet_pro
******************************************************
_stay_quiet_pro:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,5
LAR AR0,*0+,AR2
.sym _i,1,12,1,16
.sym _j,2,12,1,16
.sym _addr,3,12,1,16
.sym _flags,4,12,1,16
.line 6
;>>>> i = pcdata[4] & 0x07;
LACK 7
LDPK _pcdata+4
AND _pcdata+4
LARK AR2,1
MAR *0+
SACL *
.line 7
;>>>> if(i == 0x01) //ADDRED 模式
LAC *
SUBK 1
BNZ L63
.line 9
;>>>> flags = ISOFlagsSys|0x0020; //address_flag
LACK 32
LDPK _ISOFlagsSys
OR _ISOFlagsSys
ADRK 3
SACL *
.line 11
;>>>> viccdata[0] = 0x0d; //len
LACK 13
LDPK _viccdata
SACL _viccdata
.line 12
;>>>> viccdata[1] = flags; //flags
BLDD * ,#_viccdata+1
.line 13
;>>>> viccdata[2] = Stay_quit_cmd; //cmd
LACK 2
LDPK _viccdata+2
SACL _viccdata+2
.line 14
;>>>> for(i=3,j=12;i<11;) { viccdata[i++] = pcdata[j--]; }
LACK 3
SBRK 3
SACL *+
LACK 12
SACL *-
ZALS *
SUBK 11
BGEZ L65
MAR *+
L64:
LAC *
SUBK 1
SACL *-,AR0
ADDK 1
ADLK _pcdata+0,0
SACL *
LAR AR3,* ,AR2
LAC *
ADDK 1
SACL * ,AR0
SUBK 1
ADLK _viccdata+0,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
ZALS *+
SUBK 11
BLZ L64
L65:
.line 15
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
.line 17
;>>>> ISOMode = ISOModeSys;
LDPK _ISOModeSys
BLDD _ISOModeSys,#_ISOMode
.line 18
;>>>> sendISOCmd(); //本机地址执行
CALL _sendISOCmd
.line 19
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 21
;>>>> if(pcdata[1] == deviceAddr) //本机地址返回
LDPK _pcdata+1
LAC _pcdata+1
LDPK _deviceAddr
SUB _deviceAddr
BNZ L67
.line 23
;>>>> pcdata[0] = 6;
LACK 6
LDPK _pcdata
SACL _pcdata
.line 24
;>>>> pcdata[1] = deviceAddr;
LDPK _deviceAddr
BLDD _deviceAddr,#_pcdata+1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -