⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sync.src

📁 采用台湾MRT晶捷公司的MRT4方案的液晶电视的程序
💻 SRC
📖 第 1 页 / 共 4 页
字号:
; 		{
			; 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 + -