📄 tc.src
字号:
INC DPTR
MOVX A,@DPTR
MOV R1,A
?C0155:
; return 1;
; SOURCE LINE # 337
LJMP ?C0163
; }
; SOURCE LINE # 338
?C0070:
; Sle4442WriteMainMem(cmd[2], cmd[3]);
; SOURCE LINE # 339
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#02H
LCALL ?C?CLDOPTR
MOV R7,A
MOV DPTR,#03H
LCALL ?C?CLDOPTR
MOV R5,A
LCALL _Sle4442WriteMainMem
; cmd[0] = SUCCESS;
; SOURCE LINE # 340
?C0137:
; return 1;
; SOURCE LINE # 341
LJMP ?C0164
;
; case CMD_SLE_RD_PMEM: // UDP: NULL
; SOURCE LINE # 343
?C0071:
; if(len != 2)
; SOURCE LINE # 344
MOV DPTR,#len?142
MOVX A,@DPTR
JNZ ?C0114
INC DPTR
MOVX A,@DPTR
XRL A,#02H
?C0114:
MOV DPTR,#cmd?141
JZ ?C0072
; {
; SOURCE LINE # 345
; cmd[0] = ERRORCMDLEN;
; SOURCE LINE # 346
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
?C0156:
; return 1;
; SOURCE LINE # 347
LJMP ?C0163
; }
; SOURCE LINE # 348
?C0072:
; Sle4442ReadProtectMem(cmd+1);
; SOURCE LINE # 349
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
ADD A,#01H
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
LCALL _Sle4442ReadProtectMem
; cmd[0] = SUCCESS;
; SOURCE LINE # 350
; return 5;
; SOURCE LINE # 351
SJMP ?C0159
;
; case CMD_SLE_UPD_PMEM: // UDP: address + data
; SOURCE LINE # 353
?C0073:
; if(len != 4)
; SOURCE LINE # 354
MOV DPTR,#len?142
MOVX A,@DPTR
JNZ ?C0115
INC DPTR
MOVX A,@DPTR
XRL A,#04H
?C0115:
MOV DPTR,#cmd?141
JZ ?C0074
; {
; SOURCE LINE # 355
; cmd[0] = ERRORCMDLEN;
; SOURCE LINE # 356
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
?C0158:
; return 1;
; SOURCE LINE # 357
LJMP ?C0163
; }
; SOURCE LINE # 358
?C0074:
; Sle4442WriteProtectMem(cmd[2], cmd[3]);
; SOURCE LINE # 359
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#02H
LCALL ?C?CLDOPTR
MOV R7,A
MOV DPTR,#03H
LCALL ?C?CLDOPTR
MOV R5,A
LCALL _Sle4442WriteProtectMem
; cmd[0] = SUCCESS;
; SOURCE LINE # 360
?C0157:
; return 1;
; SOURCE LINE # 361
LJMP ?C0164
;
; case CMD_SLE_RD_SMEM: // UDP: NULL
; SOURCE LINE # 363
?C0075:
; if(len != 2)
; SOURCE LINE # 364
MOV DPTR,#len?142
MOVX A,@DPTR
JNZ ?C0116
INC DPTR
MOVX A,@DPTR
XRL A,#02H
?C0116:
MOV DPTR,#cmd?141
JZ ?C0076
; {
; SOURCE LINE # 365
; cmd[0] = ERRORCMDLEN;
; SOURCE LINE # 366
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
?C0160:
; return 1;
; SOURCE LINE # 367
SJMP ?C0163
; }
; SOURCE LINE # 368
?C0076:
; Sle4442ReadSecurityMem(cmd+1);
; SOURCE LINE # 369
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
ADD A,#01H
MOV R1,A
CLR A
ADDC A,R2
MOV R2,A
LCALL _Sle4442ReadSecurityMem
; cmd[0] = SUCCESS;
; SOURCE LINE # 370
?C0159:
MOV DPTR,#cmd?141
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
CLR A
LCALL ?C?CSTPTR
; return 5;
; SOURCE LINE # 371
MOV R6,A
MOV R7,#05H
RET
;
; case CMD_SLE_UPD_SMEM: // UDP: address + data
; SOURCE LINE # 373
?C0077:
; if(len != 4)
; SOURCE LINE # 374
MOV DPTR,#len?142
MOVX A,@DPTR
JNZ ?C0117
INC DPTR
MOVX A,@DPTR
XRL A,#04H
?C0117:
MOV DPTR,#cmd?141
JZ ?C0078
; {
; SOURCE LINE # 375
; cmd[0] = ERRORCMDLEN;
; SOURCE LINE # 376
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
?C0162:
; return 1;
; SOURCE LINE # 377
SJMP ?C0163
; }
; SOURCE LINE # 378
?C0078:
; Sle4442WriteSecurityMem(cmd[2], cmd[3]);
; SOURCE LINE # 379
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#02H
LCALL ?C?CLDOPTR
MOV R7,A
MOV DPTR,#03H
LCALL ?C?CLDOPTR
MOV R5,A
LCALL _Sle4442WriteSecurityMem
; cmd[0] = SUCCESS;
; SOURCE LINE # 380
?C0161:
; return 1;
; SOURCE LINE # 381
SJMP ?C0164
;
; case CMD_SLE_VERIFY: // UDP: address + data
; SOURCE LINE # 383
?C0079:
; if(len != 4)
; SOURCE LINE # 384
MOV DPTR,#len?142
MOVX A,@DPTR
JNZ ?C0118
INC DPTR
MOVX A,@DPTR
XRL A,#04H
?C0118:
MOV DPTR,#cmd?141
JZ ?C0080
; {
; SOURCE LINE # 385
; cmd[0] = ERRORCMDLEN;
; SOURCE LINE # 386
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
?C0163:
MOV A,#03H
; return 1;
; SOURCE LINE # 387
SJMP ?C0166
; }
; SOURCE LINE # 388
?C0080:
; Sle4442Verify(cmd[2], cmd[3]);
; SOURCE LINE # 389
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV DPTR,#02H
LCALL ?C?CLDOPTR
MOV R7,A
MOV DPTR,#03H
LCALL ?C?CLDOPTR
MOV R5,A
LCALL _Sle4442Verify
; cmd[0] = SUCCESS;
; SOURCE LINE # 390
?C0164:
MOV DPTR,#cmd?141
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
CLR A
LCALL ?C?CSTPTR
; return 1;
; SOURCE LINE # 391
MOV R6,A
MOV R7,#01H
RET
;
; case CMD_SLE_CMD: // UDP: to be defined
; SOURCE LINE # 393
;
; default:
; SOURCE LINE # 395
?C0082:
; cmd[0] = ERRORCMD;
; SOURCE LINE # 396
MOV DPTR,#cmd?141
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV A,#02H
?C0165:
; return 1;
; SOURCE LINE # 397
SJMP ?C0166
; }
; SOURCE LINE # 398
; }
; SOURCE LINE # 399
?C0018:
; else
; {
; SOURCE LINE # 401
; cmd[0] = ERRORCMD;
; SOURCE LINE # 402
MOV DPTR,#cmd?141
MOVX A,@DPTR
MOV R3,A
INC DPTR
MOVX A,@DPTR
MOV R2,A
INC DPTR
MOVX A,@DPTR
MOV R1,A
MOV A,#02H
?C0166:
LCALL ?C?CSTPTR
; return 1;
; SOURCE LINE # 403
MOV R6,#00H
MOV R7,#01H
; }
; SOURCE LINE # 404
; }
; SOURCE LINE # 405
?C0007:
RET
; END OF _TcCommand
;
; // check if a card is inserted into the slot and beep and led
; // and send notice to host
; void CardSlot(void)
RSEG ?PR?CardSlot?TC
CardSlot:
USING 0
; SOURCE LINE # 409
; {
; SOURCE LINE # 410
; static bit fCardIn = 0;
; unsigned char buf[3];
; static unsigned char cnt = 0;
;
; // todo: check overload
; if(IccUserOverLoad())
; SOURCE LINE # 416
LCALL IccUserOverLoad
JNC ?C0084
; {
; SOURCE LINE # 417
; // todo: notice host ?
; // power off
; IccUserPower(0);
; SOURCE LINE # 420
CLR ?IccUserPower?BIT
LCALL IccUserPower
; // eject card
; IccUserEject();
; SOURCE LINE # 422
LCALL IccUserEject
; // beep
; beep(10, 5);
; SOURCE LINE # 424
MOV R5,#05H
MOV R7,#0AH
LCALL _beep
; // notice host
; #ifdef TCOVERLOAD
; buf[0] = TCOVERLOAD;
; SOURCE LINE # 427
MOV DPTR,#buf?246
MOV A,#0FDH
MOVX @DPTR,A
; CommSend(buf, 1);
; SOURCE LINE # 428
MOV R3,#01H
MOV R2,#HIGH (buf?246)
MOV R1,#LOW (buf?246)
MOV R5,#01H
MOV R4,#00H
LCALL _CommSend
; #endif
; }
; SOURCE LINE # 430
?C0084:
;
; if(IccUserTest())
; SOURCE LINE # 432
LCALL IccUserTest
JNC ?C0085
; {
; SOURCE LINE # 433
; if(!fCardIn)
; SOURCE LINE # 434
JNB fCardIn?245,$ + 6H
LJMP ?C0093
; {
; SOURCE LINE # 435
; fCardIn = 1;
; SOURCE LINE # 436
SETB fCardIn?245
; // starttime = GetTickCount();
;
; if(fTCBeep)
; SOURCE LINE # 439
JNB fTCBeep,?C0087
; {
; SOURCE LINE # 440
; beep(2, 10);
; SOURCE LINE # 441
MOV R5,#0AH
MOV R7,#02H
LCALL _beep
; }
; SOURCE LINE # 442
?C0087:
;
; CardLed(0, 1);
; SOURCE LINE # 444
CLR ?CardLed?BIT
SETB ?CardLed?BIT+01H
LCALL CardLed
;
; // 通知主机有卡
; if(fNotice)
; SOURCE LINE # 447
JB fNotice,$ + 6H
LJMP ?C0093
; {
; SOURCE LINE # 448
; buf[0] = TCARD;
; SOURCE LINE # 449
MOV DPTR,#buf?246
MOV A,#0FFH
MOVX @DPTR,A
; buf[1] = 1;
; SOURCE LINE # 450
INC DPTR
MOV A,#01H
MOVX @DPTR,A
;
; if(!fStopOnACK)
; SOURCE LINE # 452
JB fStopOnACK,?C0089
; {
; SOURCE LINE # 453
; CommSendNotWaitAck(buf, 2); ///////////////////////////////////////////
; SOURCE LINE # 454
MOV R3,A
MOV R2,#HIGH (buf?246)
MOV R1,#LOW (buf?246)
MOV R5,#02H
MOV R4,#00H
LCALL _CommSendNotWaitAck
; WaitCmdTime = GetTickCount();
; SOURCE LINE # 455
LCALL GetTickCount
MOV DPTR,#WaitCmdTime
MOV A,R6
MOVX @DPTR,A
INC DPTR
MOV A,R7
MOVX @DPTR,A
; fWaitCmd = 1;
; SOURCE LINE # 456
SETB fWaitCmd
; }
; SOURCE LINE # 457
SJMP ?C0093
?C0089:
; else if(!CommSend(buf, 2))
; SOURCE LINE # 458
MOV R3,#01H
MOV R2,#HIGH (buf?246)
MOV R1,#LOW (buf?246)
MOV R5,#02H
MOV R4,#00H
LCALL _CommSend
JC ?C0093
; {
; SOURCE LINE # 459
; fCardIn = 0;
; SOURCE LINE # 460
CLR fCardIn?245
; CardLed(0, 0);
; SOURCE LINE # 461
CLR ?CardLed?BIT
CLR ?CardLed?BIT+01H
LCALL CardLed
; cnt ++;
; SOURCE LINE # 462
MOV DPTR,#cnt?247
MOVX A,@DPTR
INC A
MOVX @DPTR,A
;
; // if 3 times host no response, eject card
; if(cnt > 3)
; SOURCE LINE # 465
MOVX A,@DPTR
SETB C
SUBB A,#03H
JC ?C0093
; {
; SOURCE LINE # 466
; IccUserEject();
; SOURCE LINE # 467
LCALL IccUserEject
; beep(3, 25);
; SOURCE LINE # 468
MOV R5,#019H
MOV R7,#03H
LCALL _beep
; }
; SOURCE LINE # 469
; }
; SOURCE LINE # 470
; }
; SOURCE LINE # 471
; }
; SOURCE LINE # 472
; }
; SOURCE LINE # 473
SJMP ?C0093
?C0085:
; else
; {
; SOURCE LINE # 475
; cnt = 0;
; SOURCE LINE # 476
CLR A
MOV DPTR,#cnt?247
MOVX @DPTR,A
; if(fCardIn)
; SOURCE LINE # 477
JNB fCardIn?245,?C0093
; {
; SOURCE LINE # 478
; fCardIn = 0;
; SOURCE LINE # 479
CLR fCardIn?245
;
; if(fTCBeep)
; SOURCE LINE # 481
JNB fTCBeep,?C0095
; {
; SOURCE LINE # 482
; beep(1, 40);
; SOURCE LINE # 483
MOV R5,#028H
MOV R7,#01H
LCALL _beep
; }
; SOURCE LINE # 484
?C0095:
;
; CardLed(0, 0);
; SOURCE LINE # 486
CLR ?CardLed?BIT
CLR ?CardLed?BIT+01H
LCALL CardLed
;
; if(fNotice)
; SOURCE LINE # 488
JNB fNotice,?C0093
; {
; SOURCE LINE # 489
; buf[0] = TCARD;
; SOURCE LINE # 490
MOV DPTR,#buf?246
MOV A,#0FFH
MOVX @DPTR,A
; buf[1] = 0;
; SOURCE LINE # 491
CLR A
INC DPTR
MOVX @DPTR,A
;
; #if 1
; CommSendNotWaitAck(buf, 2); //////////////////////////////////////
; SOURCE LINE # 494
MOV R3,#01H
MOV R2,#HIGH (buf?246)
MOV R1,#LOW (buf?246)
MOV R5,#02H
MOV R4,A
LCALL _CommSendNotWaitAck
; #else
; CommSend(buf, 2);
; #endif
; }
; SOURCE LINE # 498
; }
; SOURCE LINE # 499
; }
; SOURCE LINE # 500
?C0093:
;
; if(fWaitCmd)
; SOURCE LINE # 502
JNB fWaitCmd,?C0099
; {
; SOURCE LINE # 503
; if(GetTickCount() - WaitCmdTime >= 1000)
; SOURCE LINE # 504
LCALL GetTickCount
MOV DPTR,#WaitCmdTime
MOVX A,@DPTR
MOV R4,A
INC DPTR
MOVX A,@DPTR
MOV R5,A
CLR C
MOV A,R7
SUBB A,R5
MOV R7,A
MOV A,R6
SUBB A,R4
MOV R6,A
CLR C
MOV A,R7
SUBB A,#0E8H
MOV A,R6
SUBB A,#03H
JC ?C0099
; {
; SOURCE LINE # 505
; fCardIn = 0;
; SOURCE LINE # 506
CLR fCardIn?245
; fWaitCmd = 0;
; SOURCE LINE # 507
CLR fWaitCmd
; IccUserEject();
; SOURCE LINE # 508
LCALL IccUserEject
; beep(3, 25);
; SOURCE LINE # 509
MOV R5,#019H
MOV R7,#03H
LCALL _beep
; }
; SOURCE LINE # 510
; }
; SOURCE LINE # 511
; }
; SOURCE LINE # 512
?C0099:
RET
; END OF CardSlot
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -