📄 mode.src
字号:
DW Mode53Tda + 0
DW 00500H
DW 00400H
DB 080H
DB 0FFH
DW Mode54Tbl + 0
DB 0FFH
DW Mode54Tda + 0
DW 00500H
DW 002D0H
DB 080H
DB 0FFH
DW Mode55Tbl + 0
DB 0FFH
DW Mode55Tda + 0
DW 00460H
DW 002EEH
DB 080H
DB 0FFH
DW Mode56Tbl + 0
DB 0FFH
DW Mode56Tda + 0
DW 00780H
DW 0021CH
DB 080H
DB 0FFH
DW Mode57Tbl + 0
DB 0FFH
DW Mode57Tda + 0
DW 00280H
DW 00190H
DB 080H
; /************************************************
; * *
; * MODE.C: Mosaic Display Mode routine *
; * *
; ************************************************/
; #include <reg51.h>
; #include <stddef.h>
; #include "mosaic.h"
; #include "osd.h"
; #include "global.h"
;
;
;
; //
; // Display Mode tables
; //
; #include "sharptbl.h"
; #include "sam17tbl.h"
; #include "shp18tbl.h"
; #include "sam15tbl.h"
; #include "lg15tbl.h"
; #include "lg150x2.h"
; #include "lg151x4.h"
; #include "cm14ntbl.h"
; #include "cm14nc4.h"
; #include "cm14mtbl.h"
; #include "fuj15tbl.h"
; #include "au15tbl.h"
; #include "au15ez.h"
; #include "ch15tbl.h"
; #include "sam150xh.h"
; #include "sharp15.h"
; #include "acer17e3.h"
; #include "acer17e5.h"
; #include "hss15tbl.h"
;
; //
; // ADC/TDA tables
; //
; #ifndef TDATBL_DEFINED
; #if MASCOT_VP2
; #include "mvp2cz56.h"
; #elif MASCOT_VXZ
; #if CZ5N6
; #include "mrtvxz56.h"
; #else
; #include "mrtvxz.h"
; #endif
; #else
; #if CZ5N6
; #include "cz5n6.h"
; #else
; #include "mrtv2.h"
; #endif
; #endif
; #endif //TDATBL_DEFINED
;
;
; //
; // Display Mode Table
; //
; MODETBL code ModeTbl[] = {
; {Mode0Tbl, Mode0Tda, 640, 350,2 +PRESETMODE}, //0: 31.5KHz/70Hz +/- 28MHz: 640x350
; #if SRC_TV
; {tvNTSCTbl,NULL, 640, 240,0+NOPOL }, //1: NTSC
; #else
; {NULL, NULL, 0, 0, 0 },
; #endif
; {Mode2Tbl, Mode2Tda, 720, 400,1+NOPOL+PRESETMODE}, //2: 31.5KHz/70Hz -/+ 25MHz: 720x400
; #if SRC_TV
; {tvPALTbl, NULL, 720, 286,0+NOPOL }, //3: PAL
; #else
; {NULL, NULL, 0, 0, 0 },
; #endif
; {Mode4Tbl, Mode4Tda, 640, 480,3+NOPOL+PRESETMODE}, //4: 31.5KHz/60Hz -/- 25MHz: 640x480
; {Mode5Tbl, Mode5Tda, 640, 480,3+NOPOL+PRESETMODE}, //5: 37.9KHz/72Hz -/- 31.5MHz: 640x480
; {Mode6Tbl, Mode6Tda, 640, 480,3+NOPOL+PRESETMODE}, //6: 37.5KHz/75Hz -/- 31.5MHz: 640x480
; {Mode7Tbl, Mode7Tda, 640, 480,3+NOPOL }, //7: 43.3KHz/85Hz -/- 36MHz: 640x480
; {Mode8Tbl, Mode8Tda, 800, 600,3+NOPOL+PRESETMODE}, //8: 35.1KHz/56Hz +/+ 36MHz: 800x600
; {Mode9Tbl, Mode9Tda, 800, 600,0+NOPOL+PRESETMODE}, //9: 37.9KHz/60Hz +/+ 40MHz: 800x600
; {Mode10Tbl,Mode10Tda,800, 600,3+NOPOL+PRESETMODE}, //10:47.2KHz/72Hz +/+ 50MHz: 800x600
; {Mode11Tbl,Mode11Tda,800, 600,3+NOPOL+PRESETMODE}, //11:46.9KHz/75Hz +/+ 49.5MHz: 800x600
; {Mode12Tbl,Mode12Tda,1024,768,3+NOPOL+PRESETMODE}, //12:48.4KHz/60Hz -/- 65MHz: 1024x768
; {Mode13Tbl,Mode13Tda,1024,768,3+NOPOL+PRESETMODE}, //13:56.5KHz/70Hz -/- 75MHz: 1024x768
; {Mode14Tbl,Mode14Tda,1024,768,0+NOPOL }, //14:58.2KHz/72Hz -/- 77MHz: 1024x768
; {Mode15Tbl,Mode15Tda,1024,768,0+NOPOL+PRESETMODE}, //15:60.0KHz/75Hz +/+ 78.75MHz: 1024x768
; {Mode16Tbl,Mode16Tda,1024,768,0+NOPOL }, //16:68.7KHz/85Hz +/+ 94.5MHz: 1024x768
; {Mode17Tbl,Mode17Tda,800, 600,2+NOPOL }, //17:44.49KHz/70Hz +/- 44.85MHz: 800x600
; {Mode18Tbl,Mode18Tda,800, 600,0+NOPOL }, //18:53.7KHz/85Hz +/+ 56.25MHz: 800x600
; {Mode19Tbl,Mode19Tda,800, 600,0+NOPOL }, //19:56.6KHz/90Hz +/+ 56.6MHz: 800x600
; {Mode20Tbl,Mode20Tda,800, 600,0+NOPOL }, //20:63.9KHz/100Hz +/+ 67.5MHz: 800x600
; {Mode21Tbl,Mode21Tda,640, 480,3+NOPOL }, //21:48.0KHz/90Hz -/- 39.9MHz: 640x480
; {Mode22Tbl,Mode22Tda,640, 480,3+NOPOL }, //22:52.9KHz/100Hz -/- 44.9MHz: 640x480
; {Mode23Tbl,Mode23Tda,1024,768,0+NOPOL }, //23:35.5KHz/87Hz(43i) +/+ 44.9MHz: 1024x768
; {Mode24Tbl,Mode24Tda,1024,768,3+NOPOL }, //24:72.6KHz/90Hz +/+ 100MHz: 1024x768
; {Mode25Tbl,Mode25Tda,640, 480,3+NOPOL+PRESETMODE}, //25:35.0KHz 66.7Hz +/-,640x480 66.7Hz MAC-II
; {Mode26Tbl,Mode26Tda,640, 350,2 }, //26:37.861KHz 84.136Hz +/-, 640x350 84Hz
; {Mode27Tbl,Mode27Tda,640, 400,1 }, //27:37.861KHz 84.136Hz -/+, 640x400 84Hz
; {Mode28Tbl,Mode28Tda,640, 480,3+NOPOL }, //28:34.69KHz/70Hz -/- 25MHz: 640x480 70Hz
; {Mode29Tbl,Mode29Tda,832, 624,3+NOPOL+PRESETMODE}, //29:49.725KHz/74.5Hz -/- 57.3MHz: 832x624
; {Mode30Tbl,Mode30Tda,1024,768,3+NOPOL }, //30:60.15KHz/74.72Hz -/- 80 MHz: 1024x768
; {Mode31Tbl,Mode31Tda,640, 400,3+NOPOL }, //31:24.827KHz 56.424Hz -/-, 640x400 56Hz PC9801
; {Mode32Tbl,Mode32Tda,1024,768,3+NOPOL }, //32:KHz/100Hz +/+ MHz: 1024x768
; {Mode33Tbl,Mode33Tda,640, 400,3 }, //33:31.5Hz 70Hz -/-, 640x400 70Hz
; {Mode34Tbl,Mode34Tda,800, 600,3+NOPOL }, //34:48.83K/66.89Hz -/- 50 MHz: 800x600 66Hz (MAC)
; {Mode35Tbl,Mode35Tda,640, 400,0+NOPOL }, //35:26.36KHz 59.9Hz +/+, 640x400 60Hz
; {Mode36Tbl,Mode36Tda,1024,768,0+NOPOL }, //36:35.5KHz 43.4Hz +/+, 1024x768 43Hz
; {Mode37Tbl,Mode37Tda,640, 377,0+NOPOL }, //37:29.58kz 73.1Hz +/+, 640x377 73Hz
; {Mode38Tbl,Mode38Tda,1280,1024,0+NOPOL+PRESETMODE}, //38:63.981KHz 60.020Hz +/+, 1280x1024 60Hz
; {Mode39Tbl,Mode39Tda,1280,1024,0+NOPOL+PRESETMODE}, //39:79.976KHz 75Hz +/+, 1280x1024 75Hz
; {Mode40Tbl,Mode40Tda,1280,1024,0+NOPOL }, //40:91.146KHz 85Hz +/+, 1280x1024 85Hz
; {Mode41Tbl,Mode41Tda,1280,1024,0+NOPOL }, //41:73KHz 70Hz +/+, 1280x1024 70Hz
; {Mode42Tbl,Mode42Tda,1280,1024,0+NOPOL }, //42:76.8KHz 72Hz +/+, 1280x1024 72Hz
; {Mode43Tbl,Mode43Tda,1152,864, 0+NOPOL }, //43:54.35KHz 60Hz +/+, 1152x864 60Hz
; {Mode44Tbl,Mode44Tda,1152,864, 0+NOPOL }, //44:64KHz 70Hz +/+, 1152x864 70Hz
; {Mode45Tbl,Mode45Tda,1152,864, 0+NOPOL+PRESETMODE}, //45:67.5KHz 75Hz +/+, 1152x864 75Hz
; {Mode46Tbl,Mode46Tda,1152,864, 0+NOPOL }, //46:77.5KHz 85Hz +/+, 1152x864 85Hz
; {Mode47Tbl,Mode47Tda,1280,960, 0+NOPOL }, //47:60KHz 60Hz +/+, 1280x960 60Hz
; {Mode48Tbl,Mode48Tda,1280,960, 0+NOPOL }, //48:75KHz 75Hz +/+, 1280x960 75Hz
; {Mode49Tbl,Mode49Tda,1280,960, 0+NOPOL }, //49:86KHz 85Hz +/+, 1280x960 85Hz
; {Mode50Tbl,Mode50Tda,1152,900, 0+NOPOL }, //50:61.8KHz 66Hz +/+, 1152x900 66Hz
; {Mode51Tbl,Mode51Tda,1280,1024,0+NOPOL }, //51:69.1KHz 65Hz +/+, 1280x1024 65Hz
; {Mode52Tbl,Mode52Tda,1280,1024,0+NOPOL }, //52:70.7KHz 66Hz +/+, 1280x1024 66Hz
; {Mode53Tbl,Mode53Tda,1280,1024,0+NOPOL }, //53:60.6KHz 57Hz +/+, 1280x1024 576z
; {Mode54Tbl,Mode54Tda,1280, 720,0+NOPOL }, //54:45KHz 60Hz +/+, 1280x720 60Hz
; {Mode55Tbl,Mode55Tda,1120, 750,0+NOPOL }, //55:50KHz 60Hz +/+, 1120x750 60Hz
; {Mode56Tbl,Mode56Tda,1920, 540,0+NOPOL }, //56:33.7KHz 30x2Hz +/+,1920(640)x540 30x2Hz
; {Mode57Tbl,Mode57Tda, 640, 400,0+NOPOL }, //57:25.8KHz 51.7Hz +/+,640x400 51.7Hz
;
;
; };
;
;
; #define MAXMODE (sizeof(ModeTbl)/sizeof(MODETBL))
;
;
; bit modeAdjust(void);
; bit modeAdjustMVz(void);
;
; //
; // Set Display Mode
; // Return: current mode, -1 unknown mode
; //
; unsigned char modeSetMode(unsigned char mode, unsigned char sync_pol)
RSEG ?PR?_modeSetMode?MODE
USING 0
_modeSetMode:
MOV mode?040,R7
MOV sync_pol?041,R5
; SOURCE LINE # 144
; {
; SOURCE LINE # 145
; MODETBL *modetbl;
; unsigned char pol, *regtbl;
; #if (ENABLE_TCON == 0) //(MASCOT_VZ == 0)
; char temp;
; #endif
;
; #if DEBUGMSG
; printf("Mode: mode=%x sync=%x\n", (int)mode, (unsigned int)sync_pol);
; #endif
;
; if (mode >= MAXMODE) {
; SOURCE LINE # 156
MOV A,mode?040
CLR C
SUBB A,#03AH
JC ?C0001
; #if DEBUGMSG
; printf(" mode overlimit %d\n", MAXMODE);
; #endif
; return MODE_OUTOFSYNC;
; SOURCE LINE # 160
MOV R7,#0F0H
RET
; }
; SOURCE LINE # 161
?C0001:
;
; freeRunFlag = 0;
; SOURCE LINE # 163
CLR freeRunFlag
;
; modetbl = &ModeTbl[mode];
; SOURCE LINE # 165
MOV A,mode?040
MOV B,#0BH
MUL AB
ADD A,#LOW (ModeTbl)
MOV R1,A
MOV A,#HIGH (ModeTbl)
ADDC A,B
MOV modetbl?042,#0FFH
MOV modetbl?042+01H,A
MOV modetbl?042+02H,R1
;
; // Mute screen
; //miscTurnOffPanel(); // Turn off panel display
; //miscTurnOffBackLight();
; RegBitOut(0x40, 0x20, 0x70);
; SOURCE LINE # 170
MOV R7,#040H
MOV R5,#020H
MOV R3,#070H
LCALL _RegBitOut
;
; // Program TDA registers
; regtbl = modetbl->tdaptr;
; SOURCE LINE # 173
MOV R3,modetbl?042
MOV R2,modetbl?042+01H
MOV R1,modetbl?042+02H
MOV DPTR,#03H
LCALL ?C?PLDOPTR
MOV regtbl?044,R3
MOV regtbl?044+01H,R2
MOV regtbl?044+02H,R1
; if (!(eepData.MascotFlag & FLAG_PORTB) && (regtbl!=NULL)) {
; SOURCE LINE # 174
MOV R0,#eepData+01BH
MOV A,@R0
JB ACC.6,?C0003
MOV A,R1
ORL A,R2
ORL A,R3
JZ ?C0003
;
; TDADataTableOut(regtbl);
; SOURCE LINE # 176
LCALL _TDADataTableOut
;
; #if MASCOT_VXZ
; DefaultPitch = ((*(regtbl+TDA_DIVH_OFF)& 0x07)<<8) + *(regtbl+TDA_DIVL_OFF);
; SOURCE LINE # 179
MOV R3,regtbl?044
MOV R2,regtbl?044+01H
MOV R1,regtbl?044+02H
MOV DPTR,#01H
LCALL ?C?CLDOPTR
ANL A,#07H
MOV R6,A
MOV DPTR,#02H
LCALL ?C?CLDOPTR
MOV R4,#00H
ADD A,#00H
MOV DefaultPitch+01H,A
MOV A,R4
ADDC A,R6
MOV DefaultPitch,A
; #else
; DefaultPitch = ((*(regtbl+TDA_DIVH_OFF)& 0x07)<<9) + (*(regtbl+TDA_DIVL_OFF)<<1) + ((*(regtbl+TDA_PHASE_OFF)&0X40)>>6);
; #endif
; //DefaultPhase = *(regtbl+TDA_PHASE_OFF) & PHASEMASK;
;
;
; }
; SOURCE LINE # 186
?C0003:
;
; // Program Mosaic
; RegByteOut(0x24, 0x00); // disable minify
; SOURCE LINE # 189
MOV R7,#024H
CLR A
MOV R5,A
LCALL _RegByteOut
; RegByteOut(0x2F, 0x00); // disable test mode
; SOURCE LINE # 190
MOV R7,#02FH
CLR A
MOV R5,A
LCALL _RegByteOut
;
;
; regtbl = modetbl->modeptr;
; SOURCE LINE # 193
MOV R3,modetbl?042
MOV R2,modetbl?042+01H
MOV R1,modetbl?042+02H
LCALL ?C?PLDPTR
MOV regtbl?044,R3
MOV regtbl?044+01H,R2
MOV regtbl?044+02H,R1
; if (regtbl == NULL) {
; SOURCE LINE # 194
MOV A,R1
ORL A,R2
ORL A,R3
JNZ ?C0004
; #if DEBUGMSG
; printf(" modeptr==NULL\n");
; #endif
; return MODE_OUTOFSYNC;
; SOURCE LINE # 198
MOV R7,#0F0H
RET
; }
; SOURCE LINE # 199
?C0004:
; RegDataTableOut(regtbl);
; SOURCE LINE # 200
MOV R3,regtbl?044
MOV R2,regtbl?044+01H
MOV R1,regtbl?044+02H
LCALL _RegDataTableOut
;
; // screen mute
; RegBitOut(0x40, 0x20, 0x70);
; SOURCE LINE # 203
MOV R7,#040H
MOV R5,#020H
MOV R3,#070H
LCALL _RegBitOut
;
; //DefaultHstart = ((unsigned int)*(regtbl+MODEHSTART+1)<<8) + *(regtbl+MODEHSTART);
; // DefaultVstart = *(regtbl+MODEHSTART+2);
;
;
; // Check polarity
; pol = modetbl->pol;
; SOURCE LINE # 210
MOV R3,modetbl?042
MOV R2,modetbl?042+01H
MOV R1,modetbl?042+02H
MOV DPTR,#0AH
LCALL ?C?CLDOPTR
MOV pol?043,A
; #if MASCOT_VXZ
; pol |= NOPOL;
; SOURCE LINE # 212
ORL pol?043,#080H
; sync_pol = InputPolarity;
; SOURCE LINE # 213
MOV sync_pol?041,InputPolarity
; #endif
; if ( pol & NOPOL ) {
; SOURCE LINE # 215
MOV A,pol?043
JNB ACC.7,?C0005
; if ( (regtbl = modetbl->tdaptr) != NULL ) {
; SOURCE LINE # 216
MOV DPTR,#03H
LCALL ?C?PLDOPTR
MOV regtbl?044,R3
MOV regtbl?044+01H,R2
MOV regtbl?044+02H,R1
MOV A,R1
ORL A,R2
ORL A,R3
JZ ?C0009
; if (eepData.MascotFlag & FLAG_PORTB) {
; SOURCE LINE # 217
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.6,?C0007
; RegBitOut(0x33, sync_pol<<1, 0x06);
; SOURCE LINE # 218
MOV R7,#033H
MOV A,sync_pol?041
ADD A,ACC
MOV R5,A
MOV R3,#06H
LCALL _RegBitOut
; } else {
; SOURCE LINE # 219
SJMP ?C0009
?C0007:
; RegBitOut(0x32, sync_pol<<1, 0x06);
; SOURCE LINE # 220
MOV R7,#032H
MOV A,sync_pol?041
ADD A,ACC
MOV R5,A
MOV R3,#06H
LCALL _RegBitOut
;
; pol = (*(regtbl+TDA_CTRL_OFF) & 0x3F) | (sync_pol<<6);
; SOURCE LINE # 222
MOV R3,regtbl?044
MOV R2,regtbl?044+01H
MOV R1,regtbl?044+02H
LCALL ?C?CLDPTR
ANL A,#03FH
MOV R7,A
MOV A,sync_pol?041
SWAP A
RLC A
RLC A
ANL A,#0C0H
ORL A,R7
MOV pol?043,A
;
;
; #if (MASCOT_V+MASCOT_VXZ)
; pol ^= 0x40;
; SOURCE LINE # 226
XRL pol?043,#040H
; #endif
;
; TDAByteOut(TDA_CTRL, pol);
; SOURCE LINE # 229
MOV R7,#06H
MOV R5,pol?043
LCALL _TDAByteOut
;
; }
; SOURCE LINE # 231
; }
; SOURCE LINE # 232
; }
; SOURCE LINE # 233
SJMP ?C0009
?C0005:
;
; else if ( sync_pol != (pol&0x03)) {
; SOURCE LINE # 235
MOV A,pol?043
ANL A,#03H
XRL A,sync_pol?041
JZ ?C0009
; #if DEBUGMSG
; printf(" sync_pol mismatch %x\n", (unsigned int)pol);
; #endif
; return MODE_OUTOFSYNC; //??? mode error, create a new mode
; SOURCE LINE # 239
MOV R7,#0F0H
RET
; }
; SOURCE LINE # 240
?C0009:
;
; #if (MRT_VITESSE2 && !MASCOT_VXZ) // Patch: VSync needs pull low
; TDAByteOut(TDA_CTRL, TDAByteIn(TDA_CTRL)&0x7F);
; #endif
;
;
;
; CurrentMode = mode;
; SOURCE LINE # 248
MOV CurrentMode,mode?040
;
; if (!PresetModeFlag)
; SOURCE LINE # 250
JB PresetModeFlag,?C0011
; CurrentMode |= 0x80;
; SOURCE LINE # 251
ORL CurrentMode,#080H
?C0011:
;
; // CurrentPolarity = sync_pol;
; CurrentWidth = modetbl->width;
; SOURCE LINE # 254
MOV R3,modetbl?042
MOV R2,modetbl?042+01H
MOV R1,modetbl?042+02H
MOV DPTR,#06H
LCALL ?C?ILDOPTR
MOV CurrentWidth,B
MOV CurrentWidth+01H,A
; CurrentHeight = modetbl->height;
; SOURCE LINE # 255
MOV DPTR,#08H
LCALL ?C?ILDOPTR
MOV CurrentHeight,B
MOV CurrentHeight+01H,A
;
;
;
; if ( eepFindModeEntry() ) {
; SOURCE LINE # 259
LCALL eepFindModeEntry
MOV A,R7
JZ ?C0012
; adjVPos(0,HIDE);
; SOURCE LINE # 260
CLR A
MOV R7,A
CLR ?_adjVPos?BIT
LCALL _adjVPos
; adjHPos(0,HIDE);
; SOURCE LINE # 261
CLR A
MOV R7,A
CLR ?_adjHPos?BIT
LCALL _adjHPos
; adjPitch(0,HIDE);
; SOURCE LINE # 262
CLR A
MOV R7,A
CLR ?_adjPitch?BIT
LCALL _adjPitch
; adjPhase(0,HIDE);
; SOURCE LINE # 263
CLR A
MOV R7,A
CLR ?_adjPhase?BIT
LCALL _adjPhase
;
; #if DEBUGMSG
; printf(" PRESET loaded\n");
; #endif
; }else {
; SOURCE LINE # 268
SJMP ?C0013
?C0012:
; FindNewModeFlag = 1;
; SOURCE LINE # 269
SETB FindNewModeFlag
; }
; SOURCE LINE # 270
?C0013:
;
; #if MASCOT_V
; #if LG_151X4
; RegBitOut(0x24, 0x10, 0x30);
; #elif LG_151
; RegBitOut(0x24, 0x20, 0x30);
; #endif
; #endif
;
;
; #if (MASCOT_VXZ && SRC_SI151)
; if ((eepData.MascotFlag & FLAG_PORTB) && (CurrentWidth > 1024)) {
; SOURCE LINE # 282
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.6,?C0014
SETB C
MOV A,CurrentWidth+01H
SUBB A,#00H
MOV A,CurrentWidth
XRL A,#080H
SUBB A,#084H
JC ?C0014
; ival = RegByteIn(0x3B);
; SOURCE LINE # 283
MOV R7,#03BH
LCALL _RegByteIn
MOV R0,#ival
CLR A
MOV @R0,A
INC R0
MOV A,R7
MOV @R0,A
; ival = (ival<<8)+RegByteIn(0x3A)+1;
; SOURCE LINE # 284
MOV R7,#03AH
LCALL _RegByteIn
MOV A,R7
MOV R5,A
MOV R4,#00H
MOV R0,#ival+01H
MOV A,@R0
MOV R7,#00H
MOV R6,A
CLR A
ADD A,R5
MOV R7,A
MOV A,R4
ADDC A,R6
XCH A,R7
ADD A,#01H
MOV @R0,A
CLR A
ADDC A,R7
DEC R0
MOV @R0,A
; RegByteOut(0x3A, ival);
; SOURCE LINE # 285
MOV R7,#03AH
INC R0
MOV A,@R0
MOV R5,A
LCALL _RegByteOut
; RegByteOut(0x3B, ival>>8);
; SOURCE LINE # 286
MOV R0,#ival
MOV A,@R0
MOV R5,A
MOV R7,#03BH
LCALL _RegByteOut
; }
; SOURCE LINE # 287
?C0014:
; #endif
;
;
; if (eepData.MascotFlag & FLAG_PORTB)
; SOURCE LINE # 291
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.6,?C0015
; RegBitOut(0x31,0x20,0x20); // External DE
; SOURCE LINE # 292
MOV R7,#031H
MOV R5,#020H
MOV R3,#020H
LCALL _RegBitOut
?C0015:
;
;
; // Use DE counter to detect 720/640 modes
; if ( RegByteIn(0x31)&0x20 ) // External DE
; SOURCE LINE # 296
MOV R7,#031H
LCALL _RegByteIn
MOV A,R7
JB ACC.5,$ + 6H
LJMP ?C0016
; if (CurrentWidth == 640 || CurrentWidth == 720) {
; SOURCE LINE # 297
MOV A,CurrentWidth+01H
XRL A,#080H
JNZ ?C0074
MOV A,CurrentWidth
XRL A,#02H
?C0074:
JZ ?C0018
MOV A,CurrentWidth+01H
XRL A,#0D0H
JNZ ?C0075
MOV A,CurrentWidth
XRL A,#02H
?C0075:
JZ $ + 5H
LJMP ?C0016
?C0018:
; RegBitOut(0x30, 0x01, 0x01); // start capture
; SOURCE LINE # 298
MOV R7,#030H
MOV R5,#01H
MOV R3,#01H
LCALL _RegBitOut
; RegBitOut(0x47, 0x00, 0x80); //Select External DE width
; SOURCE LINE # 299
MOV R7,#047H
CLR A
MOV R5,A
MOV R3,#080H
LCALL _RegBitOut
; RegBitOut(0x07, 0x08, 0x08); //Enable count External DE width
; SOURCE LINE # 300
MOV R7,#07H
MOV R5,#08H
MOV R3,#08H
LCALL _RegBitOut
; miscDelay(200);
; SOURCE LINE # 301
MOV R7,#0C8H
MOV R6,#00H
LCALL _miscDelay
; ival = RegByteIn(0x11) & 0x07; //External DE High Byte
; SOURCE LINE # 302
MOV R7,#011H
LCALL _RegByteIn
CLR A
MOV R0,#ival
MOV @R0,A
MOV A,R7
ANL A,#07H
INC R0
MOV @R0,A
; ival = (ival<<8) + RegByteIn(0x10); //High+Low byte of external DE
; SOURCE LINE # 303
MOV R7,#010H
LCALL _RegByteIn
MOV A,R7
MOV R5,A
MOV R4,#00H
MOV R0,#ival+01H
MOV A,@R0
MOV R6,A
CLR A
ADD A,R5
MOV R7,A
MOV A,R4
ADDC A,R6
MOV R6,A
DEC R0
MOV @R0,A
INC R0
MOV A,R7
MOV @R0,A
; #if DEBUGMSG
; printf(" DE=%d\n", ival);
; #endif
; if (CurrentWidth != ival) {
; SOURCE LINE # 307
XRL A,CurrentWidth+01H
JNZ ?C0076
MOV A,CurrentWidth
XRL A,R6
?C0076:
JZ ?C0019
;
; if (ival > 660) CurrentWidth = ival = 720; //modify for chroma 2326 timing 43
; SOURCE LINE # 309
SETB C
MOV R0,#ival+01H
MOV A,@R0
SUBB A,#094H
DEC R0
MOV A,@R0
SUBB A,#02H
JC ?C0020
MOV @R0,#02H
INC R0
MOV @R0,#0D0H
MOV CurrentWidth,#02H
MOV CurrentWidth+01H,#0D0H
SJMP ?C0021
?C0020:
; else CurrentWidth = ival = 640; //720 x 400 x85 --> ival = 669
; SOURCE LINE # 310
MOV R0,#ival
MOV @R0,#02H
INC R0
MOV @R0,#080H
MOV CurrentWidth,#02H
MOV CurrentWidth+01H,#080H
?C0021:
; //CurrentWidth = ival;
; RegWordOut(0x38, ival-1); //Write back H width
; SOURCE LINE # 312
MOV R7,#038H
MOV R0,#ival+01H
MOV A,@R0
ADD A,#0FFH
MOV R5,A
DEC R0
MOV A,@R0
ADDC A,#0FFH
MOV R4,A
LCALL _RegWordOut
; ival >>= 2;
; SOURCE LINE # 313
MOV R0,#ival
MOV A,@R0
MOV R6,A
INC R0
MOV A,@R0
MOV R0,#02H
?C0077:
XCH A,R6
CLR C
RRC A
XCH A,R6
RRC A
DJNZ R0,?C0077
MOV R1,#ival+01H
MOV @R1,A
MOV A,R6
DEC R1
MOV @R1,A
; RegByteOut(0x3C, ival-1);
; SOURCE LINE # 314
MOV R7,#03CH
MOV R0,#ival+01H
MOV A,@R0
DEC A
MOV R5,A
LCALL _RegByteOut
; #if PANEL_1280
; ival = CurrentWidth * 8 / 5;
; #else
; ival = CurrentWidth * 2;
; SOURCE LINE # 318
MOV A,CurrentWidth+01H
ADD A,ACC
MOV R1,#ival+01H
MOV @R1,A
MOV A,CurrentWidth
RLC A
DEC R1
MOV @R1,A
; #endif
; RegByteOut(0x4B, ival);
; SOURCE LINE # 320
MOV R7,#04BH
MOV R0,#ival+01H
MOV A,@R0
MOV R5,A
LCALL _RegByteOut
; RegBitOut(0x4D, ival>>8, 0x07);
; SOURCE LINE # 321
MOV R0,#ival
MOV A,@R0
MOV R5,A
MOV R3,#07H
MOV R7,#04DH
LCALL _RegBitOut
; }
; SOURCE LINE # 322
?C0019:
;
; RegBitOut(0x07, 0x00, 0x08);
; SOURCE LINE # 324
MOV R7,#07H
CLR A
MOV R5,A
MOV R3,#08H
LCALL _RegBitOut
; }
; SOURCE LINE # 325
?C0016:
;
;
;
;
; #if MASCOT_V
; RegBitOut(0x40, 0x80, 0x80);
; SOURCE LINE # 331
MOV R7,#040H
MOV R5,#080H
MOV R3,#080H
LCALL _RegBitOut
; // if (mode != 23) {
; #if MASCOT_VXZ
; if ((sync_pol == 0x00) || ((mode == 17) && (sync_pol == 0x02)))
; SOURCE LINE # 334
MOV A,sync_pol?041
JZ ?C0023
MOV A,mode?040
CJNE A,#011H,?C0022
MOV A,sync_pol?041
CJNE A,#02H,?C0022
?C0023:
; RegBitOut(0x32, 0x80, 0x90);
; SOURCE LINE # 335
MOV R7,#032H
MOV R5,#080H
MOV R3,#090H
LCALL _RegBitOut
SJMP ?C0024
?C0022:
; else
; RegBitOut(0x32, 0x90, 0x90);
; SOURCE LINE # 337
MOV R7,#032H
MOV R5,#090H
MOV R3,#090H
LCALL _RegBitOut
?C0024:
; #else
; RegBitOut(0x32, 0x80, 0x80);
; #endif
; RegBitOut(0x18, 0x20, 0x20);
; SOURCE LINE # 341
MOV R7,#018H
MOV R5,#020H
MOV R3,#020H
LCALL _RegBitOut
; // }
; #endif
;
;
;
;
; #if (ENABLE_TCON == 0)
; RegBitOut(0x24, 0xC0, 0xC0);
; #else
; RegBitOut(0x24, 0x00, 0xC0);
; SOURCE LINE # 351
MOV R7,#024H
CLR A
MOV R5,A
MOV R3,#0C0H
LCALL _RegBitOut
; #endif
;
;
; #if (MASCOT_VZ+MASCOT_VXZ+MASCOT_VP2)
; #if USE_DIGITAL_CONTRAST
; RegBitOut(0x30,0x00,0x40); //enable digital contrast
; SOURCE LINE # 357
MOV R7,#030H
CLR A
MOV R5,A
MOV R3,#040H
LCALL _RegBitOut
; #else
; RegBitOut(0x30,0x40,0x40); //disable digital contrast
; #endif
; #endif
; RegBitOut(0x40,0x00,0x40); //disable free run for modeadjust
; SOURCE LINE # 362
MOV R7,#040H
CLR A
MOV R5,A
MOV R3,#040H
LCALL _RegBitOut
;
; #if USE_GAMMATABLE
; setGammaTable(CurrentMode & 0x7f);
; #endif
;
; #if (MASCOT_V && SRC_SI151)
; if (eepData.MascotFlag & FLAG_PORTB)
; SOURCE LINE # 369
MOV R0,#eepData+01BH
MOV A,@R0
JNB ACC.6,?C0025
; #if MASCOT_VXZ
; RegBitOut(0x33, 0x58, 0x58);
; SOURCE LINE # 371
MOV R7,#033H
MOV R5,#058H
MOV R3,#058H
LCALL _RegBitOut
?C0025:
; #else
; RegBitOut(
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -