📄 sync.src
字号:
; {
; SOURCE LINE # 54
; if (!preosdNoInputFlag && !osdNoInputFlag && !SleepModeFlag)
; SOURCE LINE # 55
JB preosdNoInputFlag,?C0005
JB osdNoInputFlag,?C0005
JB SleepModeFlag,?C0005
; {
; SOURCE LINE # 56
; preosdNoInputFlag = 1;
; SOURCE LINE # 57
SETB preosdNoInputFlag
; CurrentTimerSet = 1 * 15; //1 second
; SOURCE LINE # 58
MOV CurrentTimerSet,A
MOV CurrentTimerSet+01H,#0FH
; ET0 = 1;
; SOURCE LINE # 59
SETB ET0
; TR0 = 1;
; SOURCE LINE # 60
SETB TR0
; }
; SOURCE LINE # 61
; }
; SOURCE LINE # 62
?C0005:
; syncIsrFlag = 0;
; SOURCE LINE # 63
CLR syncIsrFlag
; RegByteOut(0x04,((eepData.MascotFlag & FLAG_PORTB )? 0xCA : 0x36));
; SOURCE LINE # 64
MOV R7,#04H
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.6,?C0007
MOV R5,#0CAH
SJMP ?C0008
?C0007:
MOV R5,#036H
?C0008:
LCALL _RegByteOut
; }
; SOURCE LINE # 65
RET
?C0004:
; else if (InputMode == MODE_OUTOFSYNC)
; SOURCE LINE # 66
MOV A,InputMode?140
XRL A,#0F0H
JNZ ?C0010
; {
; SOURCE LINE # 67
; burnInFlag = 0;
; SOURCE LINE # 68
CLR burnInFlag
; do_testpattern(0);
; SOURCE LINE # 69
CLR ?do_testpattern?BIT
LCALL do_testpattern
; CurrentMode = MODE_OUTOFSYNC;
; SOURCE LINE # 70
MOV CurrentMode,#0F0H
; miscExitSleepMode();
; SOURCE LINE # 71
LCALL miscExitSleepMode
; preosdNoInputFlag = 0;
; SOURCE LINE # 72
CLR preosdNoInputFlag
; osdOutofsync();
; SOURCE LINE # 73
LCALL osdOutofsync
; syncIsrFlag = 0;
; SOURCE LINE # 74
CLR syncIsrFlag
; RegByteOut(0x04,((eepData.MascotFlag & FLAG_PORTB )? 0xC9 : 0x35));
; SOURCE LINE # 75
MOV R7,#04H
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.6,?C0011
MOV R5,#0C9H
SJMP ?C0012
?C0011:
MOV R5,#035H
?C0012:
LCALL _RegByteOut
; }
; SOURCE LINE # 76
RET
?C0010:
; else
; {
; SOURCE LINE # 78
; burnInFlag = 0;
; SOURCE LINE # 79
CLR burnInFlag
; do_testpattern(0);
; SOURCE LINE # 80
CLR ?do_testpattern?BIT
LCALL do_testpattern
; miscExitSleepMode();
; SOURCE LINE # 81
LCALL miscExitSleepMode
; preosdNoInputFlag = 0;
; SOURCE LINE # 82
CLR preosdNoInputFlag
; osdNoInputFlag = 0;
; SOURCE LINE # 83
CLR osdNoInputFlag
; osdOutofsyncFlag = 0;
; SOURCE LINE # 84
CLR osdOutofsyncFlag
; syncIsrFlag = 0;
; SOURCE LINE # 85
CLR syncIsrFlag
; RegByteOut(0x04,((eepData.MascotFlag & FLAG_PORTB )? 0xC9 : 0x35));
; SOURCE LINE # 86
MOV R7,#04H
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.6,?C0014
MOV R5,#0C9H
SJMP ?C0015
?C0014:
MOV R5,#035H
?C0015:
LCALL _RegByteOut
;
;
; // set PresetModeFlag
; #if DO_SYNCRANGECHECK
; syncCheckRange(InputMode&0x7f);
; SOURCE LINE # 91
MOV A,InputMode?140
ANL A,#07FH
MOV R7,A
LCALL _syncCheckRange
; #endif
;
; if(syncIsrFlag) return;
; SOURCE LINE # 94
JB syncIsrFlag,?C0017
?C0016:
;
; // mode setting
; CurrentMode = modeSetMode(InputMode&0x7f, InputPolarity);
; SOURCE LINE # 97
MOV A,InputMode?140
ANL A,#07FH
MOV R7,A
MOV R5,InputPolarity
LCALL _modeSetMode
MOV CurrentMode,R7
;
; if(syncIsrFlag) return;
; SOURCE LINE # 99
JB syncIsrFlag,?C0017
?C0018:
;
; // mode adjust fail run freeRunMode
; if(CurrentMode == MODE_OUTOFSYNC)
; SOURCE LINE # 102
MOV A,CurrentMode
CJNE A,#0F0H,?C0019
; {
; SOURCE LINE # 103
; freeRunMode();
; SOURCE LINE # 104
LCALL freeRunMode
; osdOutofsync();
; SOURCE LINE # 105
LCALL osdOutofsync
RET
; return;
; }
; SOURCE LINE # 107
?C0019:
;
; if(syncIsrFlag) return;
; SOURCE LINE # 109
JB syncIsrFlag,?C0017
?C0020:
;
; // do auto color
; if (eepData.MascotFlag & FLAG_FACTORY)
; SOURCE LINE # 112
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.7,?C0021
; {
; SOURCE LINE # 113
; do_factoryMode();
; SOURCE LINE # 114
LCALL do_factoryMode
RET
; return;
; }
; SOURCE LINE # 116
?C0021:
;
;
; // change mode auto tune
; if(FindNewModeFlag)
; SOURCE LINE # 120
JNB FindNewModeFlag,?C0017
; {
; SOURCE LINE # 121
; FindNewModeFlag = 0;
; SOURCE LINE # 122
CLR FindNewModeFlag
;
; #if 0 // change mode auto tune show OSD
; osdAutoConfig();
; #endif
; if(!(eepData.MascotFlag & FLAG_PORTB))
; SOURCE LINE # 127
MOV R0,#eepData+01BH
MOV A,@R0
JB ACC.6,?C0017
; {
; SOURCE LINE # 128
; autoTune(OPTIONCENTER+OPTIONPHASE+OPTIONPITCH);
; SOURCE LINE # 129
MOV R7,#0FH
LCALL _autoTune
; if(syncIsrFlag) return;
; SOURCE LINE # 130
JB syncIsrFlag,?C0017
?C0024:
; updateModeData();
; SOURCE LINE # 131
LCALL updateModeData
; }
; SOURCE LINE # 132
;
; #if 0 // change mode auto tune show OSD
; if(syncIsrFlag) return;
; disableOSD();
; miscDelay(500);
; if (OutWithBackground)
; osdOutOfScanRange();
; #endif
; }
; SOURCE LINE # 141
;
; }
; SOURCE LINE # 143
; }
; SOURCE LINE # 144
?C0017:
RET
; END OF syncProcess
;
;
;
;
; //
; // Sync counter ready or Sync polarity changed or Sync changed
; //
; typedef struct {
; unsigned int hsync_hi;
; unsigned char sync_pol;
; char mode;
; } HSYNCTBL;
; typedef struct VSYNCTBL {
; unsigned int vsync_hi;
; unsigned int hsync_low;
; HSYNCTBL *hsync_tbl;
; char htbl_cnt;
; } VSYNCTBL;
;
;
; HSYNCTBL code Hsync50Tbl[] = {
; #if (AU150X2+AU150X2_EZ+CPT_CLAA150XA03 == 0)
; {HSYNC_KHZ(24.8+2),0+NOPOL,57}, //(57): 24.8KHz 51Hz +/+, 640x400 51Hz
; #endif
; {HSYNC_KHZ(31.5+2),2, 0 }, //(0): 31.5KHz 50Hz +/-, 640x350 50Hz
; {HSYNC_KHZ(31.5+2),3, 4 }, //(4): 31.5KHz 50Hz -/-, 640x480 50Hz
; {HSYNC_KHZ(31.5+2),1, 2 }, //(2): 31.5KHz 50Hz -/+, 720x400 50Hz
; {HSYNC_KHZ(35.5+1),0+NOPOL,36} //(36):35.5KHz 43.4Hz +/+, 1024x768 43Hz //DAVID
; };
;
; HSYNCTBL code Hsync56Tbl[] = {
; {HSYNC_KHZ(24.8+5),3+NOPOL,31}, //31: 24.827KHz 56.424Hz -/-, 640x400 56Hz PC9801
; {HSYNC_KHZ(35.1+5),0+NOPOL,8 }, //8: 35.1KHz 56Hz +/+, 800x600 56Hz
; {HSYNC_KHZ(60.6+2),0+NOPOL,53} //53:60.6KHz 57Hz +/+, 1280x1024 57Hz
;
; };
; HSYNCTBL code Hsync60Tbl[] = {
; {HSYNC_KHZ(26.4+2),0+NOPOL,35}, //35:26.36KHz 60Hz +/+, 640x400 60Hz //DAVID
; {HSYNC_KHZ(31.5+1.8),3+NOPOL,4 }, //4: 31.5KHz 60Hz -/-, 640x480 60Hz
; #if (ACER_17_E3+ACER_17_E5)
; {HSYNC_KHZ(33.7+1),0+NOPOL,100}, //Out of Range
; #else
; {HSYNC_KHZ(33.7+1),0+NOPOL,56}, //56: 33.7KHz 30x2Hz +/+, 1920(640)x540 30x2Hz //david
; #endif
; {HSYNC_KHZ(37.9+5),0+NOPOL,9 }, //9: 37.9KHz 60Hz +/+, 800x600 60Hz
; {HSYNC_KHZ(45.0+1),0+NOPOL,54}, //54: 45KHz 60Hz +/+, 1280x720 60Hz //david
; {HSYNC_KHZ(48.4+1),3+NOPOL,12}, //12:48.4KHz 60Hz -/-, 1024x768 60Hz
; #if (ACER_17_E3+ACER_17_E5)
; {HSYNC_KHZ(50.0+1),0+NOPOL,100}, //Out of Range
; #else
; {HSYNC_KHZ(50.0+1),0+NOPOL,55}, //55: 50KHz 60Hz +/+, 1120x750 60Hz //david
; #endif
; {HSYNC_KHZ(54.4+3),0+NOPOL,43}, //43:54.35KHz 60Hz +/+, 1152x864 60Hz
; {HSYNC_KHZ(60+1.5),0+NOPOL,47}, //47:60KHz 60Hz +/+, 1280x960 60Hz
; {HSYNC_KHZ(64.0+3),0+NOPOL,38} //38:63.981KHz 60.020Hz +/+, 1280x1024 60Hz
; };
; HSYNCTBL code Hsync66Tbl[] = {
; {HSYNC_KHZ(35.0+5),1+NOPOL,25}, //25:35.0KHz 66.7Hz +/-,640x480 66.7Hz MAC-II
; {HSYNC_KHZ(48.8+2),3+NOPOL,34}, //34:48.83K/66.89Hz -/- 50 MHz: 800x600 66Hz (MAC)
; {HSYNC_KHZ(54.0+5),0+NOPOL,13}, //(13):53.964KHz 66.132Hz +/+,1024x768 66Hz COMPAQ1024
; {HSYNC_KHZ(61.8+5),0+NOPOL,50}, //50:61.8KHz 66Hz +/+, 1152x900 66Hz
; {HSYNC_KHZ(69.1+1),0+NOPOL,51}, //51:69.1KHz 65Hz +/+, 1280x1024 65Hz
; {HSYNC_KHZ(70.7+2),0+NOPOL,52} //52:70.7KHz 66Hz +/+, 1280x1024 66Hz
; };
; HSYNCTBL code Hsync70Tbl[] = {
; {HSYNC_KHZ(31.5+1.5),2, 0 }, //0: 31.5KHz 70Hz +/-, 640x350 70Hz
; //{HSYNC_KHZ(31.5+1.5),3, 33}, //33:31.5KHz 70Hz -/-, 640x400 70Hz
; {HSYNC_KHZ(31.5+1.5),1+NOPOL,2}, //2: 31.5KHz 70Hz -/+, 720x400 70Hz
; {HSYNC_KHZ(34.7+5),2+NOPOL,28}, //28:34.69KHz 70Hz -/-, 640x480 70Hz
; {HSYNC_KHZ(44.5+5),2+NOPOL,17}, //17:44.49KHz 70Hz +/-, 800x600 70Hz
; {HSYNC_KHZ(56.5+4),3+NOPOL,13}, //13:56.5KHz 70Hz -/-, 1024x768 70Hz
; {HSYNC_KHZ(64.0+3),0+NOPOL,44}, //44:64KHz 70Hz +/+, 1152x864 70Hz
; {HSYNC_KHZ(73.0+3),0+NOPOL,41} //41:73KHz 70Hz +/+, 1280x1024 70Hz
; };
; HSYNCTBL code Hsync72Tbl[] = {
; #if (ACER_17_E3+ACER_17_E5==0)
; {HSYNC_KHZ(29.5+2),0+NOPOL,37}, //37:29.5KHz 73Hz +/+, 640x377 73Hz
; #endif
; {HSYNC_KHZ(37.9+5),3+NOPOL,5 }, //5: 37.9KHz 72Hz -/-, 640x480 72Hz
; {HSYNC_KHZ(47.2+5),0+NOPOL,10}, //10:47.2KHz 72Hz +/+, 800x600 72Hz
; {HSYNC_KHZ(58.2+5),3+NOPOL,14}, //14:58.2KHz 72Hz -/-, 1024x768 72Hz
; {HSYNC_KHZ(64.8+3),0+NOPOL,44}, //44:64.8KHz 72Hz +/+, 1152x864 72Hz
; {HSYNC_KHZ(76.8+3),0+NOPOL,42} //42:76.8KHz 72Hz +/+, 1280x1024 72Hz
; };
; HSYNCTBL code Hsync75Tbl[] = {
; {HSYNC_KHZ(37.5+5), 3+NOPOL,6 }, //6: 37.5KHz 75Hz -/-, 640x480 75Hz
; {HSYNC_KHZ(46.9+1.9),0+NOPOL,11}, //11:46.9KHz 75Hz +/+, 800x600 75Hz
; {HSYNC_KHZ(49.725+3),3+NOPOL,29}, //29:49.725KHz/74.5Hz -/- 57.3MHz: 832x624
; {HSYNC_KHZ(60.0+5), 3, 30}, //30:60.15KHz/74.72Hz -/- 80 MHz: 1024x768
; {HSYNC_KHZ(60.0+5), 0+NOPOL,15}, //15:60.0KHz 75Hz +/+, 1024x768 75Hz
; {HSYNC_KHZ(67.5+3), 0+NOPOL,45}, //45:67.7KHz 75Hz +/+, 1152x864 75Hz
; #if (ACER_17_E3+ACER_17_E5)
; {HSYNC_KHZ(75.0+2), 0+NOPOL,100}, //Out of Range
; #else
; {HSYNC_KHZ(75.0+2), 0+NOPOL,48}, //48:75.0KHz 75Hz +/+, 1280x960 75Hz
; #endif
; {HSYNC_KHZ(80.0+3), 0+NOPOL,39} //39:79.976KHz 75Hz +/+, 1280x1024 75Hz
; };
;
; #if (ACER_17_E3+ACER_17_E5 == 0)
; HSYNCTBL code Hsync85Tbl[] = {
; {HSYNC_KHZ(35.5+1.6),0+NOPOL,23}, //23:35.5KHz 87Hz +/+, 1024x768 43i Hz
; {HSYNC_KHZ(37.9+2),2 ,26}, //26:37.861KHz 84.136Hz +/-, 640x350 84Hz
; {HSYNC_KHZ(37.9+2),1 ,27}, //27:37.861KHz 84.136Hz -/+, 640x400 84Hz
; {HSYNC_KHZ(43.3+5),3+NOPOL,7 }, //7: 43.3KHz 85Hz -/-, 640x480 85Hz
; {HSYNC_KHZ(53.7+5),0+NOPOL,18}, //18:53.7KHz 85Hz +/+, 800x600 85Hz
; {HSYNC_KHZ(68.7+5),0+NOPOL,16} //16:68.7KHz 85Hz +/+, 1024x768 85Hz
; #if SAMSUNG_170
; ,{HSYNC_KHZ(77.5+5),0+NOPOL,46} //46:77.5KHz 85Hz +/+, 1152x864 85Hz
; ,{HSYNC_KHZ(86.0+2),0+NOPOL,49} //49:86.0KHz 85Hz +/+, 1280x960 85Hz
; ,{HSYNC_KHZ(91.0+5),0+NOPOL,40} //40:91.146KHz 85Hz +/+, 1280x1024 85Hz
; #endif
; };
; #endif
;
; #if (!(CHIMEI_N141X201_C3+CHIMEI_N141X201_C4+CHIMEI_M141X101+SAMSUNG_151+ACER_17_E3+ACER_17_E5))
; HSYNCTBL code Hsync90Tbl[] = {
; {HSYNC_KHZ(72.6+5),3+NOPOL,24} //24:72.6KHz 90Hz -/-, 1024x768 90Hz
; };
; #endif
;
;
; //#define VSYNC_CNT_START VSYNC_HZ(43.4-1)
; #define VSYNC_CNT_START VSYNC_HZ(51.7-1)
;
;
; VSYNCTBL code VsyncTbl[] = {
;
; #if (AU150X2+AU150X2_EZ+CPT_CLAA150XA03)
; {VSYNC_HZ(50+2), HSYNC_KHZ(31.5-2), // 50Hz
; Hsync50Tbl, sizeof(Hsync50Tbl)/sizeof(HSYNCTBL)},
; #else
; {VSYNC_HZ(50+2), HSYNC_KHZ(24.8-1), //(31.5-2), // 50Hz
; Hsync50Tbl, sizeof(Hsync50Tbl)/sizeof(HSYNCTBL)},
; #endif
;
; {VSYNC_HZ(56+2), HSYNC_KHZ(24.8-2), // 56Hz
; Hsync56Tbl, sizeof(Hsync56Tbl)/sizeof(HSYNCTBL)},
; {VSYNC_HZ(60+4), HSYNC_KHZ(26.4-1), //DAVID (60+5),(31.5-5) // 60Hz
; Hsync60Tbl, sizeof(Hsync60Tbl)/sizeof(HSYNCTBL)},
; {VSYNC_HZ(66+1.5), HSYNC_KHZ(35.0-2), // 66.7Hz
; Hsync66Tbl, sizeof(Hsync66Tbl)/sizeof(HSYNCTBL)},
; {VSYNC_HZ(70+1), HSYNC_KHZ(31.5-5), // 70Hz
; Hsync70Tbl, sizeof(Hsync70Tbl)/sizeof(HSYNCTBL)},
; #if (ACER_17_E3+ACER_17_E5)
; {VSYNC_HZ(72+1.5),HSYNC_KHZ(37.9-5), // 72Hz
; #else
; {VSYNC_HZ(72+1.5),HSYNC_KHZ(29.5-1), // 72Hz
; #endif
; Hsync72Tbl, sizeof(Hsync72Tbl)/sizeof(HSYNCTBL)},
; {VSYNC_HZ(75+5), HSYNC_KHZ(37.5-3), // 75Hz
; Hsync75Tbl, sizeof(Hsync75Tbl)/sizeof(HSYNCTBL)},
; #if (ACER_17_E3+ACER_17_E5 == 0)
; {VSYNC_HZ(85+3), HSYNC_KHZ(35.5-3), // 85Hz & 87Hz
; Hsync85Tbl, sizeof(Hsync85Tbl)/sizeof(HSYNCTBL)},
; #endif
; #if (!(CHIMEI_N141X201_C3+CHIMEI_N141X201_C4+CHIMEI_M141X101+SAMSUNG_151+ACER_17_E3+ACER_17_E5))
; {VSYNC_HZ(90+5), HSYNC_KHZ(72.6-5), //(48.0-5), // 90Hz
; Hsync90Tbl, sizeof(Hsync90Tbl)/sizeof(HSYNCTBL)},
; #endif
; {0} // EOT
; };
;
; #if DO_SYNCRANGECHECK
; typedef struct {
; unsigned char mode;
; unsigned int minHSync; unsigned char rngHSync;
; unsigned int minVSync; unsigned char rngVSync;
; } SYNCRNGTBL;
;
; //
; // Sync Range Table
; //
; SYNCRNGTBL code SyncRangeTbl[] = {
;
; {4, HSYNC_KHZ(31.47-1.0),HSYNC_KHZ(31.47+1.0)-HSYNC_KHZ(31.47-1.0), VSYNC_HZ(59.94+1.0),VSYNC_HZ(59.94-1.0)-VSYNC_HZ(59.94+1.0)}, //4: 31.5KHz/60Hz -/- 25MHz: 640x480
; {5, HSYNC_KHZ(37.86-1.0),HSYNC_KHZ(37.86+1.0)-HSYNC_KHZ(37.86-1.0), VSYNC_HZ(72.80+1.0),VSYNC_HZ(72.80-1.0)-VSYNC_HZ(72.80+1.0)}, //5: 37.9KHz/72Hz -/- 31.5MHz: 640x480
; {6, HSYNC_KHZ(37.50-1.0),HSYNC_KHZ(37.50+1.0)-HSYNC_KHZ(37.50-1.0), VSYNC_HZ(75.00+1.0),VSYNC_HZ(75.00-1.0)-VSYNC_HZ(75.00+1.0)}, //6: 37.5KHz/75Hz -/- 31.5MHz: 640x480
; {8, HSYNC_KHZ(35.16-1.0),HSYNC_KHZ(35.16+1.0)-HSYNC_KHZ(35.16-1.0), VSYNC_HZ(56.25+1.0),VSYNC_HZ(56.25-1.0)-VSYNC_HZ(56.25+1.0)}, //8: 35.1KHz/56Hz +/+ 36MHz: 800x600
; {9, HSYNC_KHZ(37.88-1.0),HSYNC_KHZ(37.88+1.0)-HSYNC_KHZ(37.88-1.0), VSYNC_HZ(60.31+1.0),VSYNC_HZ(60.31-1.0)-VSYNC_HZ(60.31+1.0)}, //9: 37.9KHz/60Hz +/+ 40MHz: 800x600
; {10,HSYNC_KHZ(48.08-1.0),HSYNC_KHZ(48.08+1.0)-HSYNC_KHZ(48.08-1.0), VSYNC_HZ(72.19+1.0),VSYNC_HZ(72.19-1.0)-VSYNC_HZ(72.19+1.0)}, //10:47.2KHz/72Hz +/+ 50MHz: 800x600
; {11,HSYNC_KHZ(46.87-1.0),HSYNC_KHZ(46.87+1.0)-HSYNC_KHZ(46.87-1.0), VSYNC_HZ(75.00+1.0),VSYNC_HZ(75.00-1.0)-VSYNC_HZ(75.00+1.0)}, //11:46.9KHz/75Hz +/+ 49.5MHz: 800x600
; {12,HSYNC_KHZ(48.36-1.0),HSYNC_KHZ(48.36+1.0)-HSYNC_KHZ(48.36-1.0), VSYNC_HZ(60.00+1.0),VSYNC_HZ(60.00-1.0)-VSYNC_HZ(60.00+1.0)}, //12:48.4KHz/60Hz -/- 65MHz: 1024x768
; {13,HSYNC_KHZ(56.48-1.0),HSYNC_KHZ(56.48+1.0)-HSYNC_KHZ(56.48-1.0), VSYNC_HZ(70.07+1.0),VSYNC_HZ(70.07-1.0)-VSYNC_HZ(70.07+1.0)}, //13:56.5KHz/70Hz -/- 75MHz: 1024x768
; {15,HSYNC_KHZ(60.02-1.0),HSYNC_KHZ(60.02+1.0)-HSYNC_KHZ(60.02-1.0), VSYNC_HZ(75.03+1.0),VSYNC_HZ(75.03-1.0)-VSYNC_HZ(75.03+1.0)}, //15:60.0KHz/75Hz +/+ 78.75MHz: 1024x768
; {38,HSYNC_KHZ(63.98-1.0),HSYNC_KHZ(63.98+1.0)-HSYNC_KHZ(63.98-1.0), VSYNC_HZ(60.02+1.0),VSYNC_HZ(60.02-1.0)-VSYNC_HZ(60.02+1.0)}, //38:63.98KHz/60Hz +/+ 108MHz: 1280x1024
; {39,HSYNC_KHZ(79.98-1.0),HSYNC_KHZ(79.98+1.0)-HSYNC_KHZ(79.98-1.0), VSYNC_HZ(75.03+1.0),VSYNC_HZ(75.03-1.0)-VSYNC_HZ(75.03+1.0)}, //39:79.97KHz/75Hz +/+ 135MHz: 1280x1024
; {25,HSYNC_KHZ(35.00-1.0),HSYNC_KHZ(35.00+1.0)-HSYNC_KHZ(35.00-1.0), VSYNC_HZ(66.70+1.0),VSYNC_HZ(66.70-1.0)-VSYNC_HZ(66.70+1.0)}, //25:35.00KHz/66.7Hz -/- 30.24MHz 640X480 MAC
; {29,HSYNC_KHZ(49.72-1.0),HSYNC_KHZ(49.72+1.0)-HSYNC_KHZ(49.72-1.0), VSYNC_HZ(74.50+1.0),VSYNC_HZ(74.50-1.0)-VSYNC_HZ(74.50+1.0)}, //29:49.72KHz/74.5Hz -/- 57.3MHz 832X624 MAC
; {2, HSYNC_KHZ(31.47-1.0),HSYNC_KHZ(31.47+1.0)-HSYNC_KHZ(31.47-1.0), VSYNC_HZ(70.08+1.0),VSYNC_HZ(70.08-1.0)-VSYNC_HZ(70.08+1.0)}, //2: 31.5KHz/70Hz -/+ 25MHz: 720x400
; {0, HSYNC_KHZ(31.47-1.0),HSYNC_KHZ(31.47+1.0)-HSYNC_KHZ(31.47-1.0), VSYNC_HZ(70.08+1.0),VSYNC_HZ(70.08-1.0)-VSYNC_HZ(70.08+1.0)}, //0: 31.5KHz/70Hz +/- 28MHz: 640x350
; {45,HSYNC_KHZ(67.50-1.0),HSYNC_KHZ(67.50+1.0)-HSYNC_KHZ(67.50-1.0), VSYNC_HZ(75.00+1.0),VSYNC_HZ(75.00-1.0)-VSYNC_HZ(75.00+1.0)}, //45:67.5KHz/75Hz +/+ 108MHz: 1152x864
;
; };
; #define NUM_OF_SYNCRANGE (sizeof(SyncRangeTbl)/sizeof(SYNCRNGTBL))
; #endif //DO_SYNCRANGECHECK
;
;
;
; //
; // Sync change detected, find mode
; // Return: mode
; //
; #define SYNCRETRY 6
;
; unsigned char syncChanged(void)
RSEG ?PR?syncChanged?SYNC
USING 0
syncChanged:
; SOURCE LINE # 350
; {
; SOURCE LINE # 351
; HSYNCTBL *hsync_pt;
; char i, cnt;
;
;
; // Wait until sync counters are stable.
; RegDataIn(0x0B, buff, 5);
; SOURCE LINE # 357
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
; sync_retry:
; SOURCE LINE # 358
?syncChanged?sync_retry:
;
; VsyncCnt = buff[1]*0x100 + buff[0];
; SOURCE LINE # 360
MOV R0,#buff+01H
MOV A,@R0
MOV R6,A
DEC R0
MOV A,@R0
MOV R4,#00H
ADD A,#00H
MOV VsyncCnt+01H,A
MOV A,R4
ADDC A,R6
MOV VsyncCnt,A
; HsyncCnt = buff[3]*0x100 + buff[2];
; SOURCE LINE # 361
MOV R0,#buff+03H
MOV A,@R0
MOV R6,A
DEC R0
MOV A,@R0
ADD A,#00H
MOV HsyncCnt+01H,A
MOV A,R4
ADDC A,R6
MOV HsyncCnt,A
; if (eepData.MascotFlag & FLAG_PORTB) buff[4] >>= 2;
; SOURCE LINE # 362
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.6,?C0026
MOV R0,#buff+04H
MOV A,@R0
MOV R7,A
RRC A
RRC A
ANL A,#03FH
MOV @R0,A
?C0026:
; InputPolarity = buff[4] & 0x03;
; SOURCE LINE # 363
MOV R0,#buff+04H
MOV A,@R0
ANL A,#03H
MOV InputPolarity,A
;
; for (i = 0; i < SYNCRETRY; i++) {
; SOURCE LINE # 365
CLR A
MOV i?242,A
?C0027:
CLR C
MOV A,i?242
XRL A,#080H
SUBB A,#086H
JNC ?C0028
; cnt = syncVerify();
; SOURCE LINE # 366
LCALL syncVerify
MOV cnt?243,R7
; if (cnt == -1) return MODE_OVERFLOW;
; SOURCE LINE # 367
MOV A,cnt?243
CJNE A,#0FFH,?C0030
MOV R7,#0F1H
RET
?C0030:
; if (cnt == 0) goto sync_retry;
; SOURCE LINE # 368
MOV A,cnt?243
JZ ?syncChanged?sync_retry
; }
; SOURCE LINE # 369
?C0029:
INC i?242
SJMP ?C0027
?C0028:
;
; #if DEBUGMSG
; printf(" VSync=%04X %dHz HSync=%04X %dKHz Pol=%X\n",
; VsyncCnt, (unsigned int)((long)187500L/VsyncCnt), HsyncCnt, HsyncCnt/44, (unsigned int)InputPolarity);
; #endif
;
; #if SRC_TV
; if (eepData.MascotFlag & FLAG_PORTB)
; return tvSyncChanged();
; #endif
;
; if (VsyncCnt > VSYNC_CNT_START)
; SOURCE LINE # 381
MOV R4,VsyncCnt
MOV R5,VsyncCnt+01H
CLR A
LCALL ?C?FCASTI
MOV R3,#099H
MOV R2,#023H
MOV R1,#067H
MOV R0,#045H
LCALL ?C?FPCMP3
JNC ?C0033
; return MODE_OUTOFSYNC; // out of sync
; SOURCE LINE # 382
MOV R7,#0F0H
RET
?C0033:
;
; // search VSync table
; for (i=0; ; i++) {
; SOURCE LINE # 385
CLR A
MOV i?242,A
?C0034:
; if (VsyncTbl[i].vsync_hi == 0)
; SOURCE LINE # 386
MOV R7,i?242
MOV A,R7
RLC A
SUBB A,ACC
MOV R6,A
MOV A,R7
MOV R0,#03H
?C0099:
CLR C
RLC A
XCH A,R6
RLC A
XCH A,R6
DJNZ R0,?C0099
ADD A,#LOW (VsyncTbl)
MOV DPL,A
MOV A,R6
ADDC A,#HIGH (VsyncTbl)
MOV DPH,A
CLR A
MOVC A,@A+DPTR
MOV R4,A
MOV A,#01H
MOVC A,@A+DPTR
MOV R5,A
ORL A,R4
JNZ ?C0037
; return MODE_OUTOFSYNC; // out of sync
; SOURCE LINE # 387
MOV R7,#0F0H
RET
?C0037:
; if (VsyncCnt >= VsyncTbl[i].vsync_hi) {
; SOURCE LINE # 388
CLR C
MOV A,VsyncCnt+01H
SUBB A,R5
MOV A,VsyncCnt
SUBB A,R4
JNC ?C0035
; break; // found
; SOURCE LINE # 389
; }
; SOURCE LINE # 390
; }
; SOURCE LINE # 391
?C0036:
INC i?242
SJMP ?C0034
?C0035:
; hsync_pt = VsyncTbl[i].hsync_tbl;
; SOURCE LINE # 392
MOV R7,i?242
MOV A,R7
RLC A
SUBB A,ACC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -