📄 buffer.asm
字号:
LDPK _buffer
LAC _buffer
SUB *
SBRK 2
ADD *+,AR0
SACL *
LT * ,AR2
MPYK 9
PAC
ADDK 2
ADLK _buffer+0,0
ADD * ,AR0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 15
LAC *
ADDK 1
SACL *
ZALS *-
SUBK 8
BLZ L107
L108:
.line 12
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
ADRK 2
SUBS *
BLZ L105
B EPI0_9
L103:
.line 21
;>>>> else if( labeldata[0] == 0 )
LDPK _labeldata
LAC _labeldata
EPI0_9:
.line 24
MAR * ,AR1
SBRK 5
LAR AR0,*-
PSHD *
RET
.endfunc 497,000000000H,4
.sym _db,_db,32,3,0
.func 498
;>>>> static void db( )
;>>>> uchar i,j;
******************************************************
* FUNCTION DEF : _db
******************************************************
_db:
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 _flags,3,12,1,16
.sym _num_card,4,12,1,16
.sym _len,5,12,1,16
.line 4
;>>>> uchar flags = 0;
;>>>> uchar num_card;
;>>>> uchar len;
LACK 0
LARK AR2,3
MAR *0+
SACL * ,AR1
.line 8
;>>>> myInvOut();
CALL _myInvOut
.line 9
;>>>> num_card = labeldata[0];
MAR * ,AR2
LARK AR2,4
MAR *0+
BLKD #_labeldata,*
.line 10
;>>>> if( num_card != 0 )
LAC *
BZ EPI0_10
.line 12
;>>>> bReadTag = 1;
LACK 1
LDPK _bReadTag
SACL _bReadTag
.line 13
;>>>> if(buffer[0] >= 0x0b) {return;}
;>>>> //buffer[0] += num_card;
LDPK _buffer
ZALS _buffer
SUBK 11
BGEZ EPI0_10
.line 15
;>>>> len = 1+1+(c_db_n+1)*5;
LDPK _c_db_n
LAC _c_db_n
ADDK 1
MAR *+,AR0
SACL *
LT * ,AR2
MPYK 5
PAC
ADDK 2
SACL *
.line 16
;>>>> flags = ISOFlagsSys&0xfb; // not inventory
LACK 251
LDPK _ISOFlagsSys
AND _ISOFlagsSys
SBRK 2
SACL *
.line 17
;>>>> flags |= 0x60; // address_flag ,option_flag
ORK 96
SACL *
.line 18
;>>>> for(i=0;i<num_card;i++) // read multiple blocks
LACK 0
SBRK 2
SACL *
ZALS *
ADRK 3
SUBS *
BGEZ EPI0_10
MAR *-
L113:
.line 20
;>>>> viccdata[0] = 15; //len
LACK 15
LDPK _viccdata
SACL _viccdata
.line 21
;>>>> viccdata[1] = flags; //flags
BLDD *-,#_viccdata+1
.line 22
;>>>> viccdata[2] = 0x23; //cmd
LACK 35
LDPK _viccdata+2
SACL _viccdata+2
.line 23
;>>>> for(j=0;j<8;j++) // copy uid
LACK 0
SACL *
ZALS *
SUBK 8
BGEZ L116
MAR *-
RSXM ;;;
L115:
.line 25
;>>>> viccdata[3+j] = labeldata[i*10+10-j];
LT *+
MPYK 10
PAC
ADDK 10
ADLK _labeldata+0,0
SUB * ,AR0
SACL *
LAR AR3,* ,AR2
LAC * ,AR0
ADLK _viccdata+3,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 23
LAC *
ADDK 1
SACL *
ZALS *-
SUBK 8
BLZ L115
L116:
.line 27
;>>>> viccdata[11] = c_db_adr; //start addr
LDPK _c_db_adr
BLDD _c_db_adr,#_viccdata+11
.line 28
;>>>> viccdata[12] = c_db_n; // length
BLDD _c_db_n,#_viccdata+12
.line 29
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
.line 31
;>>>> ISOMode = ISOModeSys&0xe7; //read ,all
LACK 231
LDPK _ISOModeSys
AND _ISOModeSys
LDPK _ISOMode
SACL _ISOMode
.line 32
;>>>> sendISOCmd();
CALL _sendISOCmd
.line 33
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 35
;>>>> if(viccdata[1] == 0) // read correctly
LDPK _viccdata+1
LAC _viccdata+1
BNZ L117
.line 37
;>>>> buffer[0] ++;
LDPK _buffer
LAC _buffer
ADDK 1
SACL _buffer
.line 38
;>>>> buffer[(buffer[0]-num_card+i)*len+1] = c_db_adr;
MAR * ,AR2
LARK AR2,4
MAR *0+
SUB *
SBRK 3
ADD * ,AR0
SACL *
LT * ,AR2
ADRK 4
MPYU *-,AR0
PAC
ADLK _buffer+1,0
SACL *
LAR AR3,* ,AR3
BLKD #_c_db_adr,* ,AR2
.line 39
;>>>> buffer[(buffer[0]-num_card+i)*len+2] = c_db_n;
LAC _buffer
SUB *
SBRK 3
ADD * ,AR0
SACL *
LT * ,AR2
ADRK 4
MPYU * ,AR0
PAC
ADLK _buffer+2,0
SACL *
LAR AR3,* ,AR3
BLKD #_c_db_n,* ,AR2
.line 40
;>>>> for(j=0;j<(c_db_n+1)*5;j++)// copy block status and block data
LACK 0
SBRK 3
SACL * ,AR0
LDPK _c_db_n
ZALS _c_db_n
ADDK 1
SACL *
LT *
LACK 5
SACL *
MPYU *,AR2
ZALS *
SPAC
BGEZ L117
RSXM ;;;
L118:
.line 42
;>>>> buffer[(buffer[0]-num_card+i)*len+3+j] = viccdata[2+j];
;>>>> else
LAC * ,AR0
ADLK _viccdata+2,0
SACL *
LAR AR3,* ,AR2
LDPK _buffer
LAC _buffer
ADRK 2
SUB *
SBRK 3
ADD * ,AR0
SACL *
LT * ,AR2
ADRK 4
MPYU *
PAC
ADDK 3
ADLK _buffer+0,0
SBRK 3
ADD * ,AR0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 40
LAC *
ADDK 1
SACL * ,AR0
LDPK _c_db_n
ZALS _c_db_n
ADDK 1
SACL *
LT *
LACK 5
SACL *
MPYU *,AR2
ZALS *
SPAC
BLZ L118
L117:
.line 18
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
ADRK 3
SUBS *-
BLZ L113
EPI0_10:
.line 50
MAR * ,AR1
SBRK 7
LAR AR0,*-
PSHD *
RET
.endfunc 547,000000000H,6
.sym _serialNumDb,_serialNumDb,32,3,0
.func 548
;>>>> static void serialNumDb( )
;>>>> uchar i,j;
******************************************************
* FUNCTION DEF : _serialNumDb
******************************************************
_serialNumDb:
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 _flags,3,12,1,16
.sym _num_card,4,12,1,16
.sym _len,5,12,1,16
.line 4
;>>>> uchar flags = 0;
;>>>> uchar num_card;
;>>>> uchar len;
LACK 0
LARK AR2,3
MAR *0+
SACL * ,AR1
.line 8
;>>>> myInvOut();
CALL _myInvOut
.line 9
;>>>> num_card = labeldata[0];
MAR * ,AR2
LARK AR2,4
MAR *0+
BLKD #_labeldata,*
.line 10
;>>>> if( num_card != 0 )
LAC *
BZ L121
.line 12
;>>>> bReadTag = 1;
LACK 1
LDPK _bReadTag
SACL _bReadTag
.line 13
;>>>> if(buffer[0] >= 0x0b) {return;}
;>>>> //buffer[0] += num_card;
LDPK _buffer
ZALS _buffer
SUBK 11
BGEZ EPI0_11
.line 15
;>>>> len = 1+8+1+1+(c_db_n+1)*5;
LDPK _c_db_n
LAC _c_db_n
ADDK 1
MAR *+,AR0
SACL *
LT * ,AR2
MPYK 5
PAC
ADDK 11
SACL *
.line 17
;>>>> flags = ISOFlagsSys&0xfb; // not inventory
LACK 251
LDPK _ISOFlagsSys
AND _ISOFlagsSys
SBRK 2
SACL *
.line 18
;>>>> flags |= 0x60; // address_flag ,option_flag
ORK 96
SACL *
.line 19
;>>>> for(i=0;i<num_card;i++) // read multiple blocks
LACK 0
SBRK 2
SACL *
ZALS *
ADRK 3
SUBS *
BGEZ EPI0_11
MAR *-
L123:
.line 21
;>>>> viccdata[0] = 15; //len
LACK 15
LDPK _viccdata
SACL _viccdata
.line 22
;>>>> viccdata[1] = flags; //flags
BLDD *-,#_viccdata+1
.line 23
;>>>> viccdata[2] = 0x23; //cmd
LACK 35
LDPK _viccdata+2
SACL _viccdata+2
.line 24
;>>>> for(j=0;j<8;j++) // copy uid
LACK 0
SACL *
ZALS *
SUBK 8
BGEZ L126
MAR *-
RSXM ;;;
L125:
.line 26
;>>>> viccdata[3+j] = labeldata[i*10+10-j];
LT *+
MPYK 10
PAC
ADDK 10
ADLK _labeldata+0,0
SUB * ,AR0
SACL *
LAR AR3,* ,AR2
LAC * ,AR0
ADLK _viccdata+3,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 24
LAC *
ADDK 1
SACL *
ZALS *-
SUBK 8
BLZ L125
L126:
.line 28
;>>>> viccdata[11] = c_db_adr; //start addr
LDPK _c_db_adr
BLDD _c_db_adr,#_viccdata+11
.line 29
;>>>> viccdata[12] = c_db_n; // length
BLDD _c_db_n,#_viccdata+12
.line 30
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
.line 31
;>>>> ISOMode = ISOModeSys&0xe7; //read ,all
LACK 231
LDPK _ISOModeSys
AND _ISOModeSys
LDPK _ISOMode
SACL _ISOMode
.line 32
;>>>> sendISOCmd();
CALL _sendISOCmd
.line 33
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 35
;>>>> if(viccdata[1] == 0) // read correctly
LDPK _viccdata+1
LAC _viccdata+1
BNZ L127
.line 37
;>>>> buffer[0] ++;
LDPK _buffer
LAC _buffer
ADDK 1
SACL _buffer
.line 38
;>>>> buffer[(buffer[0]-num_card+i)*len+1] = 0x03; //tr_typ
MAR * ,AR2
LARK AR2,4
MAR *0+
SUB *
SBRK 3
ADD * ,AR0
SACL *
LT * ,AR2
ADRK 4
MPYU * ,AR0
PAC
ADLK _buffer+1,0
SACL *
LAR AR3,* ,AR3
LACK 3
SACL * ,AR2
.line 39
;>>>> for(j=0;j<8;j++)//copy uid
LACK 0
SBRK 3
SACL *
ZALS *
SUBK 8
BGEZ L129
MAR *-
RSXM ;;;
L128:
.line 41
;>>>> buffer[(buffer[0]-num_card+i)*len+2+j] = labeldata[i*10+3+j];
LT *+
MPYK 10
PAC
ADDK 3
ADLK _labeldata+0,0
ADD * ,AR0
SACL *
LAR AR3,* ,AR2
LDPK _buffer
LAC _buffer
ADRK 2
SUB *
SBRK 3
ADD * ,AR0
SACL *
LT * ,AR2
ADRK 4
MPYU *
PAC
ADDK 2
ADLK _buffer+0,0
SBRK 3
ADD * ,AR0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 39
LAC *
ADDK 1
SACL *
ZALS *-
SUBK 8
BLZ L128
L129:
.line 43
;>>>> buffer[(buffer[0]-num_card+i)*len+10] = c_db_adr;
LAC _buffer
LARK AR2,4
MAR *0+
SUB *
SBRK 3
ADD * ,AR0
SACL *
LT * ,AR2
ADRK 4
MPYU *-,AR0
PAC
ADLK _buffer+10,0
SACL *
LAR AR3,* ,AR3
BLKD #_c_db_adr,* ,AR2
.line 44
;>>>> buffer[(buffer[0]-num_card+i)*len+11] = c_db_n;
LAC _buffer
SUB *
SBRK 3
ADD * ,AR0
SACL *
LT * ,AR2
ADRK 4
MPYU * ,AR0
PAC
ADLK _buffer+11,0
SACL *
LAR AR3,* ,AR3
BLKD #_c_db_n,* ,AR2
.line 45
;>>>> for(j=0;j<(c_db_n+1)*5;j++)// copy block status and block data
LACK 0
SBRK 3
SACL * ,AR0
LDPK _c_db_n
ZALS _c_db_n
ADDK 1
SACL *
LT *
LACK 5
SACL *
MPYU *,AR2
ZALS *
SPAC
BGEZ L127
RSXM ;;;
L130:
.line 47
;>>>> buffer[(buffer[0]-num_card+i)*len+12+j] = viccdata[2+j];
LAC * ,AR0
ADLK _viccdata+2,0
SACL *
LAR AR3,* ,AR2
LDPK _buffer
LAC _buffer
ADRK 2
SUB *
SBRK 3
ADD * ,AR0
SACL *
LT * ,AR2
ADRK 4
MPYU *
PAC
ADDK 12
ADLK _buffer+0,0
SBRK 3
ADD * ,AR0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 45
LAC *
ADDK 1
SACL * ,AR0
LDPK _c_db_n
ZALS _c_db_n
ADDK 1
SACL *
LT *
LACK 5
SACL *
MPYU *,AR2
ZALS *
SPAC
BLZ L130
L127:
.line 19
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
ADRK 3
SUBS *-
BLZ L123
B EPI0_11
L121:
.line 52
;>>>> else if( labeldata[0] == 0 )
LDPK _labeldata
LAC _labeldata
EPI0_11:
.line 55
MAR * ,AR1
SBRK 7
LAR AR0,*-
PSHD *
RET
.endfunc 602,000000000H,6
.sym _serialNumTimer,_serialNumTimer,32,3,0
.func 603
;>>>> static void serialNumTimer()
;>>>> uchar i,j;
******************************************************
* FUNCTION DEF : _serialNumTimer
******************************************************
_serialNumTimer:
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 _flags,3,12,1,16
.sym _num_card,4,12,1,16
.sym _len,5,12,1,16
.line 4
;>>>> uchar flags = 0;
;>>>> uchar num_card;
;>>>> uchar len;
LACK 0
LARK AR2,3
MAR *0+
SACL * ,AR1
.line 8
;>>>> myInvOut();
CALL _myInvOut
.line 9
;>>>> num_card = labeldata[0];
MAR * ,AR2
LARK AR2,4
MAR *0+
BLKD #_labeldata,*
.line 10
;>>>> if( num_card != 0 )
LAC *
BZ L134
.line 12
;>>>> bReadTag = 1;
LACK 1
LDPK _bReadTag
SACL _bReadTag
.line 13
;>>>> if(buffer[0] >= 0x0b) {return;}
LDPK _buffer
ZALS _buffer
SUBK 11
BGEZ EPI0_12
.line 14
;>>>> buffer[0] += num_card;
ADDK 11
ADD *+
SACL _buffer
.line 16
;>>>> len = 1+8+4; //tr_typ+snr+timer
LACK 13
SACL *
.line 17
;>>>> for(i=0;i<num_card;i++)
LACK 0
SBRK 4
SACL *
ZALS *
ADRK 3
SUBS *
BGEZ EPI0_12
L136:
.line 19
;>>>> buffer[(buffer[0]-num_card+i)*13 + 1] = 0x03; //tr-type
LDPK _buffer
LAC _buffer
SUB *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -