📄 sync.src
字号:
MOV R6,A
MOV A,R7
MOV R0,#03H
?C0100:
CLR C
RLC A
XCH A,R6
RLC A
XCH A,R6
DJNZ R0,?C0100
MOV R7,A
ADD A,#LOW (VsyncTbl+04H)
MOV DPL,A
MOV A,R6
ADDC A,#HIGH (VsyncTbl+04H)
MOV DPH,A
LCALL ?C?PLDCODE
MOV hsync_pt?241,R3
MOV hsync_pt?241+01H,R2
MOV hsync_pt?241+02H,R1
; cnt = VsyncTbl[i].htbl_cnt;
; SOURCE LINE # 393
MOV A,#LOW (VsyncTbl+07H)
ADD A,R7
MOV DPL,A
MOV A,R6
ADDC A,#HIGH (VsyncTbl+07H)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV cnt?243,A
;
; // search HSync table
; if (HsyncCnt < VsyncTbl[i].hsync_low)
; SOURCE LINE # 396
MOV A,#LOW (VsyncTbl+02H)
ADD A,R7
MOV DPL,A
MOV A,R6
ADDC A,#HIGH (VsyncTbl+02H)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV R6,A
MOV A,#01H
MOVC A,@A+DPTR
MOV R7,A
CLR C
MOV A,HsyncCnt+01H
SUBB A,R7
MOV A,HsyncCnt
SUBB A,R6
JNC ?C0040
; {
; SOURCE LINE # 397
; return MODE_OUTOFSYNC; // out of sync
; SOURCE LINE # 398
MOV R7,#0F0H
RET
; }
; SOURCE LINE # 399
?C0040:
;
; while (cnt--) {
; SOURCE LINE # 401
MOV R7,cnt?243
DEC cnt?243
MOV A,R7
JZ ?C0041
; if (HsyncCnt < hsync_pt->hsync_hi) {
; SOURCE LINE # 402
MOV R3,hsync_pt?241
MOV R2,hsync_pt?241+01H
MOV R1,hsync_pt?241+02H
LCALL ?C?ILDPTR
MOV R7,A
CLR C
MOV A,HsyncCnt+01H
SUBB A,R7
MOV A,HsyncCnt
SUBB A,B
JNC ?C0042
; if ((hsync_pt->sync_pol & NOPOL) ||
; SOURCE LINE # 403
MOV DPTR,#02H
LCALL ?C?CLDOPTR
MOV R7,A
JB ACC.7,?C0044
MOV R5,InputPolarity
MOV A,R5
RLC A
SUBB A,ACC
MOV R4,A
MOV A,R7
XRL A,R5
JNZ ?C0101
MOV A,R4
?C0101:
JNZ ?C0042
?C0044:
; (hsync_pt->sync_pol == InputPolarity) )
; return (hsync_pt->mode); // found
; SOURCE LINE # 405
MOV DPTR,#03H
LCALL ?C?CLDOPTR
MOV R7,A
RET
; }
; SOURCE LINE # 406
?C0042:
; hsync_pt++;
; SOURCE LINE # 407
MOV A,#04H
ADD A,hsync_pt?241+02H
MOV hsync_pt?241+02H,A
CLR A
ADDC A,hsync_pt?241+01H
MOV hsync_pt?241+01H,A
; }
; SOURCE LINE # 408
SJMP ?C0040
?C0041:
;
; return MODE_OUTOFSYNC; // out of sync
; SOURCE LINE # 410
MOV R7,#0F0H
; }
; SOURCE LINE # 411
?C0031:
RET
; END OF syncChanged
;
; //
; // Verify sync counter
; //
; char syncVerify(void)
RSEG ?PR?syncVerify?SYNC
USING 0
syncVerify:
; SOURCE LINE # 416
; {
; SOURCE LINE # 417
; unsigned int idata vsync_cnt0;
; char overcnt = 0;
; SOURCE LINE # 419
CLR A
MOV overcnt?345,A
; #define hsync_cnt0 ival
; #define status buff[8]
; #define overmask buff[9]
;
; #if DEBUGMSG
; printf(" Sync verify ?? ");
; #endif
;
; RegByteOut(0x01, 0x00);
; SOURCE LINE # 428
MOV R7,#01H
MOV R5,A
LCALL _RegByteOut
?C0045:
; //overmask = (eepData.MascotFlag & FLAG_PORTB) ? 0xC0 : 0x30;
; while (1) {
; SOURCE LINE # 430
; overmask = (eepData.MascotFlag & FLAG_PORTB) ? 0xC0 : 0x30;
; SOURCE LINE # 431
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.6,?C0047
MOV R7,#0C0H
SJMP ?C0048
?C0047:
MOV R7,#030H
?C0048:
MOV R0,#buff+09H
MOV A,R7
MOV @R0,A
; status = RegByteIn(0x01);
; SOURCE LINE # 432
MOV R7,#01H
LCALL _RegByteIn
MOV R0,#buff+08H
MOV A,R7
MOV @R0,A
; if (status & overmask) return -1; // overflow
; SOURCE LINE # 433
INC R0
MOV A,@R0
ANL A,R7
JZ ?C0049
MOV R7,#0FFH
RET
?C0049:
; if (status & 0x02) break;
; SOURCE LINE # 434
MOV R0,#buff+08H
MOV A,@R0
JNB ACC.1,?C0045
;
; }
; SOURCE LINE # 436
?C0046:
;
; RegDataIn(0x0B, buff, 5);
; SOURCE LINE # 438
MOV R7,#0BH
MOV R3,#00H
MOV R2,#HIGH (buff)
MOV R1,#LOW (buff)
MOV ?_RegDataIn?BYTE+04H,#00H
MOV ?_RegDataIn?BYTE+05H,#05H
LCALL _RegDataIn
;
; overmask = (eepData.MascotFlag & FLAG_PORTB) ? (buff[4]>>2) : buff[4];
; SOURCE LINE # 440
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.6,?C0052
MOV R0,#buff+04H
MOV A,@R0
MOV R7,A
RRC A
RRC A
ANL A,#03FH
MOV R7,A
SJMP ?C0053
?C0052:
MOV R0,#buff+04H
MOV A,@R0
MOV R7,A
?C0053:
MOV R0,#buff+09H
MOV A,R7
MOV @R0,A
; if (InputPolarity != (overmask & 0x03))
; SOURCE LINE # 441
ANL A,#03H
MOV R7,A
MOV R5,InputPolarity
MOV A,R5
RLC A
SUBB A,ACC
MOV R4,A
MOV A,R5
XRL A,R7
JNZ ?C0102
MOV A,R4
?C0102:
JZ ?C0054
; return 0;
; SOURCE LINE # 442
MOV R7,#00H
RET
?C0054:
;
; vsync_cnt0 = buff[1]*0x100 + buff[0];
; SOURCE LINE # 444
MOV R0,#buff+01H
MOV A,@R0
MOV R6,A
DEC R0
MOV A,@R0
MOV R4,#00H
ADD A,#00H
MOV R7,A
MOV A,R4
ADDC A,R6
MOV R6,A
MOV R0,#vsync_cnt0?344
MOV @R0,A
MOV R4,A
INC R0
MOV A,R7
MOV @R0,A
MOV R5,A
; hsync_cnt0 = buff[3]*0x100 + buff[2];
; SOURCE LINE # 445
MOV R0,#buff+03H
MOV A,@R0
MOV R6,A
DEC R0
MOV A,@R0
MOV R2,#00H
ADD A,#00H
MOV R0,#ival+01H
MOV @R0,A
MOV A,R2
ADDC A,R6
DEC R0
MOV @R0,A
;
; #if (DEBUGMSG>=6)
; printf(" VSync=%04X HSync=%04X\n",VsyncCnt, HsyncCnt);
; #endif
;
; if ((VsyncCnt < vsync_cnt0) && (vsync_cnt0-VsyncCnt > VERRORRANGE))
; SOURCE LINE # 451
CLR C
MOV A,VsyncCnt+01H
SUBB A,R5
MOV A,VsyncCnt
SUBB A,R4
JNC ?C0055
CLR C
MOV R0,#vsync_cnt0?344+01H
MOV A,@R0
SUBB A,VsyncCnt+01H
MOV R7,A
DEC R0
MOV A,@R0
SUBB A,VsyncCnt
MOV R6,A
SETB C
MOV A,R7
SUBB A,#010H
MOV A,R6
SUBB A,#00H
JC ?C0055
; return 0;
; SOURCE LINE # 452
MOV R7,#00H
RET
?C0055:
; if ((VsyncCnt > vsync_cnt0) && (VsyncCnt-vsync_cnt0 > VERRORRANGE))
; SOURCE LINE # 453
MOV R0,#vsync_cnt0?344
MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
MOV R7,A
SETB C
MOV A,VsyncCnt+01H
SUBB A,R7
MOV A,VsyncCnt
SUBB A,R6
JC ?C0056
CLR C
MOV A,VsyncCnt+01H
SUBB A,R7
MOV R7,A
MOV A,VsyncCnt
SUBB A,R6
MOV R6,A
SETB C
MOV A,R7
SUBB A,#010H
MOV A,R6
SUBB A,#00H
JC ?C0056
; return 0;
; SOURCE LINE # 454
MOV R7,#00H
RET
?C0056:
; if ((HsyncCnt < hsync_cnt0) && (hsync_cnt0-HsyncCnt > HERRORRANGE))
; SOURCE LINE # 455
MOV R0,#ival
MOV A,@R0
MOV R4,A
INC R0
MOV A,@R0
MOV R5,A
CLR C
MOV A,HsyncCnt+01H
SUBB A,R5
MOV A,HsyncCnt
SUBB A,R4
JNC ?C0057
CLR C
MOV A,R5
SUBB A,HsyncCnt+01H
MOV R7,A
MOV A,R4
SUBB A,HsyncCnt
MOV R6,A
SETB C
MOV A,R7
SUBB A,#012H
MOV A,R6
SUBB A,#00H
JC ?C0057
; return 0;
; SOURCE LINE # 456
MOV R7,#00H
RET
?C0057:
; if ((HsyncCnt > hsync_cnt0) && (HsyncCnt-hsync_cnt0 > HERRORRANGE))
; SOURCE LINE # 457
SETB C
MOV A,HsyncCnt+01H
SUBB A,R5
MOV A,HsyncCnt
SUBB A,R4
JC ?C0058
CLR C
MOV A,HsyncCnt+01H
SUBB A,R5
MOV R7,A
MOV A,HsyncCnt
SUBB A,R4
MOV R6,A
SETB C
MOV A,R7
SUBB A,#012H
MOV A,R6
SUBB A,#00H
JC ?C0058
; return 0;
; SOURCE LINE # 458
MOV R7,#00H
RET
?C0058:
;
; #if DEBUGMSG
; printf(" ---> ok\n");
; #endif
; return 1;
; SOURCE LINE # 463
MOV R7,#01H
;
; #undef hsync_cnt0
; #undef status
; #undef in_pol
; #undef overmask
; }
; SOURCE LINE # 469
?C0050:
RET
; END OF syncVerify
;
;
; #if DO_SYNCRANGECHECK
;
; void syncCheckRange(unsigned char mode)
RSEG ?PR?_syncCheckRange?SYNC
USING 0
_syncCheckRange:
;---- Variable 'mode?446' assigned to Register 'R7' ----
; SOURCE LINE # 474
; {
; SOURCE LINE # 475
; unsigned char i;
;
; #if DEBUGMSG
; printf("syncCheckRange, ");
; #endif
;
; i = ModeTbl[mode].pol;
; SOURCE LINE # 482
MOV B,#0BH
MOV A,R7
MOV DPTR,#ModeTbl+0AH
LCALL ?C?OFFXADD
CLR A
MOVC A,@A+DPTR
MOV R6,A
;---- Variable 'i?447' assigned to Register 'R6' ----
;
; PresetModeFlag = ((i&PRESETMODE)&&1);
; SOURCE LINE # 484
JNB ACC.6,?C0059
SETB C
SJMP ?C0060
?C0059:
CLR C
?C0060:
MOV PresetModeFlag,C
;
; if (!PresetModeFlag) {
; SOURCE LINE # 486
JB PresetModeFlag,$ + 6H
LJMP ?C0062
; #if DEBUGMSG
; printf(" ---------- Not Preset Mode\n");
; #endif
; return;
;
; }
; SOURCE LINE # 492
?C0061:
;
; if (InputPolarity != (i&0x03)) {
; SOURCE LINE # 494
MOV A,R6
ANL A,#03H
MOV R5,A
MOV R3,InputPolarity
MOV A,R3
RLC A
SUBB A,ACC
MOV R2,A
MOV A,R3
XRL A,R5
JNZ ?C0103
MOV A,R2
?C0103:
JZ ?C0063
;
; PresetModeFlag = 0;
; SOURCE LINE # 496
CLR PresetModeFlag
RET
; #if DEBUGMSG
; printf(" ---------- Pol OUT\n");
; #endif
; return;
; }
; SOURCE LINE # 501
?C0063:
;
; for (i=0; i<NUM_OF_SYNCRANGE; i++) {
; SOURCE LINE # 503
CLR A
MOV R6,A
?C0064:
; if (SyncRangeTbl[i].mode != mode) continue;
; SOURCE LINE # 504
MOV A,R6
MOV B,#07H
MUL AB
ADD A,#LOW (SyncRangeTbl)
MOV DPL,A
CLR A
ADDC A,#HIGH (SyncRangeTbl)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
XRL A,R7
JZ $ + 5H
LJMP ?C0066
?C0067:
;
; ival = SyncRangeTbl[i].minHSync;
; SOURCE LINE # 506
MOV A,R6
MOV B,#07H
MUL AB
ADD A,#LOW (SyncRangeTbl+01H)
MOV DPL,A
CLR A
ADDC A,#HIGH (SyncRangeTbl+01H)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV R4,A
MOV A,#01H
MOVC A,@A+DPTR
MOV R5,A
MOV R0,#ival
MOV A,R4
MOV @R0,A
INC R0
MOV A,R5
MOV @R0,A
; if (HsyncCnt < ival || HsyncCnt > ival+SyncRangeTbl[i].rngHSync) {
; SOURCE LINE # 507
CLR C
MOV A,HsyncCnt+01H
SUBB A,R5
MOV A,HsyncCnt
SUBB A,R4
JC ?C0069
MOV A,R6
MOV B,#07H
MUL AB
ADD A,#LOW (SyncRangeTbl+03H)
MOV DPL,A
CLR A
ADDC A,#HIGH (SyncRangeTbl+03H)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
ADD A,@R0
MOV R5,A
CLR A
DEC R0
ADDC A,@R0
MOV R4,A
SETB C
MOV A,HsyncCnt+01H
SUBB A,R5
MOV A,HsyncCnt
SUBB A,R4
JC ?C0068
?C0069:
;
; PresetModeFlag = 0;
; SOURCE LINE # 509
CLR PresetModeFlag
RET
; #if DEBUGMSG
; printf(" ---------- HSync OUT\n");
; #endif
; return;
; }
; SOURCE LINE # 514
?C0068:
; ival = SyncRangeTbl[i].minVSync;
; SOURCE LINE # 515
MOV A,R6
MOV B,#07H
MUL AB
ADD A,#LOW (SyncRangeTbl+04H)
MOV DPL,A
CLR A
ADDC A,#HIGH (SyncRangeTbl+04H)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV R4,A
MOV A,#01H
MOVC A,@A+DPTR
MOV R5,A
MOV R0,#ival
MOV A,R4
MOV @R0,A
INC R0
MOV A,R5
MOV @R0,A
; if (VsyncCnt < ival || VsyncCnt > ival+SyncRangeTbl[i].rngVSync) {
; SOURCE LINE # 516
CLR C
MOV A,VsyncCnt+01H
SUBB A,R5
MOV A,VsyncCnt
SUBB A,R4
JC ?C0071
MOV A,R6
MOV B,#07H
MUL AB
ADD A,#LOW (SyncRangeTbl+06H)
MOV DPL,A
CLR A
ADDC A,#HIGH (SyncRangeTbl+06H)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
ADD A,@R0
MOV R5,A
CLR A
DEC R0
ADDC A,@R0
MOV R4,A
SETB C
MOV A,VsyncCnt+01H
SUBB A,R5
MOV A,VsyncCnt
SUBB A,R4
JC ?C0066
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -