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

📄 codigo_script.txt

📁 an example of bootloader
💻 TXT
📖 第 1 页 / 共 3 页
字号:
		clearMsgs();
		addMsg('No controller is selected. \n If either CSA or CSB is not active data and control pins are ignored.');
		return;
	}
	if(eGoLow == 1){ // E goes LOW, this is when instructions are evaluated, chars written 
		if(rsState == 0 & rwState == 0){
			//alert('write to IR, \n evaluate instruction')
			evalInstr(data);
		}
		if(rsState == 1 & rwState == 0){
			//alert('write to DR, \n print character')
			writeData(data);		
			instrpeek(baseConv(document.ctrl.lcdpinsHex.value,16));
		}
		return;
	}
 
	if(eGoLow != 1 & rwState == 1){ // E is 1. Data or address reads are done 
		if(rsState == 0 & rwState == 1){
			alert('Read BF & address, \n Reads are not implemented! \n         Yet !');
			if(side == 2){
				alert('Ooops !!! Trying to read while both controllers are enabled ?\n If you do this with a real LCD, data from both controllers may clash\n and your LCD take a trip to heaven.')
			}
		}
		if(rsState == 1 & rwState == 1){
			alert('Read Data Register, \n Reads are not implemented! \n         Yet !');
			if(side == 2){
				alert('Ooops !!! Trying to read while both controllers are enabled ?\n If you do this with a real LCD, data from both controllers may clash\n and your LCD take a trip to heaven.')
			}
		}
		return;
	}
}
 
function evalInstr(instr){
	clearMsgs();
	addMsg('On E going LOW, executed instruction was:');
 
	if((instr & maskDispOnOff) == instrDispOnOff){
		addMsg('\n Display ON/OFF control: ');
		if(instr & displayOn){
			addMsg('display ON, ');
			if(side == 0){
				addMsg(' left controller');
				D_L = 1
			}	
 
			if(side == 1){
				addMsg(' right controller');
				D_R = 1
			}
 
			if(side == 2){
				addMsg(' both controllers');
				D_R = 1
				D_L = 1
			}
 
			restoreDisp();
 
 
		}
		else{
			addMsg('display OFF, ');
			if(side == 0){
				addMsg(' left controller');
				D_L = 0
			}	
 
			if(side == 1){
				addMsg(' right controller');
				D_R = 0
			}
 
			if(side == 2){
				addMsg(' both controllers');
				D_R = 0
				D_L = 0
			}
 
			blankDisp();
 
		}
		return;
	}
 
	if((instr & maskSetAdrs) == instrSetAdrs){
		addMsg('\n Set Y address to ' + (instr & 0x3f));
		if(side == 0){
			AC_L = instr & 0x3f
			addMsg(' for left controller');	
		}	
 
		if(side == 1){
			AC_R = instr & 0x3f
			addMsg(' for right controller');
		}
 
		if(side == 2){
			AC_L = instr & 0x3f
			AC_R = instr & 0x3f
			addMsg(' for both controllers');
 
		}
 
		return;
	}
 
	if((instr & maskSetPage) == instrSetPage){
		addMsg('\n Set page to ' + (instr & 0x7));
		if(side == 0){
			page_L = instr & 0x7
			addMsg(' for left controller');	
		}	
 
		if(side == 1){
			page_R = instr & 0x7
			addMsg(' for right controller');
		}
 
		if(side == 2){
			page_L = instr & 0x7
			page_R = instr & 0x7
			addMsg(' for both controllers');
		}
		return;
	}
 
	if((instr & maskDispStrtLn) == instrDispStrtLn){
		addMsg('\n Set display start line to ' + (instr & 0x3f));
		addMsg('\n This instruction is not supported and was not executed. It is used to scroll the display. Scrolling about 2000 images with JavaScript takes a long time...')
 
		return;
	}
 
	addMsg('\nInvalid instruction !');
	return;
}
 
var byts = 0;
var dts = ''
function writeData(data){
	if(side > 2){
		return;
	}
	if(side == 0){
		if(D_L == 1 && DDRAM_L[page_L][AC_L] != data){
			document.images[offset + page_L*256+ AC_L ].src = parseInt(data & 0xf) + xtnsn
			document.images[offset + page_L*256 + AC_L + 128].src = parseInt((data & 0xf0) >> 4) + xtnsn
			dts += 'DDR > ' + DDRAM_L[page_L][AC_L] + ', data > '+ data
			byts++
		}
		DDRAM_L[page_L][AC_L] = data;
		increaseAC(side)
	}
 
	if(side == 1){
		if(D_R == 1 && DDRAM_R[page_R][AC_R] != data){
			document.images[offset + page_R*256+ AC_R + 64].src = parseInt(data & 0xf) + xtnsn
			document.images[offset + page_R*256 + AC_R + 192].src = parseInt((data & 0xf0) >> 4) + xtnsn
		}
		DDRAM_R[page_R][AC_R] = data;
		increaseAC(side)
	}
 
	if(side == 2){
		if(D_R == 1 && DDRAM_R[page_R][AC_R] != data){
			document.images[offset + page_R*256+ AC_R + 64].src = parseInt(data & 0xf) + xtnsn
			document.images[offset + page_R*256 + AC_R + 192].src = parseInt((data & 0xf0) >> 4) + xtnsn
		}
		if(D_L == 1 && DDRAM_L[page_L][AC_L] != data){
			document.images[offset + page_L*256+ AC_L ].src = parseInt(data & 0xf) + xtnsn
			document.images[offset + page_L*256 + AC_L + 128].src = parseInt((data & 0xf0) >> 4) + xtnsn
		}
		DDRAM_R[page_R][AC_R] = data;
		DDRAM_L[page_L][AC_L] = data;
		increaseAC(side)
	}
 
}
 
function readBfAndAdr(){
 
}
 
function readDataReg(){
 
}
 
 
var dispBlanked_L = 0;
var dispBlanked_R = 0;
function blankDisp(){
	if(side == 0){
		for(var i=0; i< 8; i++){
			for(var j=0; j < 64; j++){
				if(DDRAM_L[i][j] != 0 ){
					document.images[offset + i*256 + j ].src='0' + xtnsn;
					document.images[offset + i*256 + j + 128].src='0' + xtnsn;
				}
			}
		}
		dispBlanked_L = 1;
	}
 
	if(side == 1){
		for(var i=0; i < 8; i++){
			for(var j=0; j < 64; j++){
				if(DDRAM_R[i][j] != 0 ){
					document.images[offset + i*256 + j + 64 ].src='0' + xtnsn;
					document.images[offset + i*256 + j + 192].src='0' + xtnsn;
				}
			}
		}
		dispBlanked_R = 1;
	}	
 
	if(side == 2){
		for(var i=0; i< 8; i++){
			for(var j=0; j < 64; j++){
				if(DDRAM_L[i][j] != 0 ){
					document.images[offset + i*256 + j ].src='0' + xtnsn;
					document.images[offset + i*256 + j + 128].src='0' + xtnsn;
				}
			}
		}
 
		for(var i=0; i < 8; i++){
			for(var j=0; j < 64; j++){
				if(DDRAM_R[i][j] != 0 ){
					document.images[offset + i*256 + j + 64 ].src='0' + xtnsn;
					document.images[offset + i*256 + j + 192].src='0' + xtnsn;
				}
			}
		}
		dispBlanked_L = 1;
		dispBlanked_R = 1;
 
	}
}
 
function restoreDisp(){
	if(side == 0 && dispBlanked_L == 1){
		for(var i=0; i< 8; i++){
			for(var j=0; j < 64; j++){
				if(DDRAM_L[i][j] != 0 ){
					document.images[offset + i*256 + j ].src = parseInt(DDRAM_L[i][j] & 0xf) + xtnsn;
					document.images[offset + i*256 + j + 128].src = parseInt((DDRAM_L[i][j] & 0xf0) >> 4) + xtnsn;
				}
			}
		}
		dispBlanked_L = 0
	}
 
	if(side == 1 && dispBlanked_R == 1){
		for(var i=0; i < 8; i++){
			for(var j=0; j < 64; j++){
				if(DDRAM_R[i][j] != 0 ){
					document.images[offset + i*256 + j + 64].src = parseInt(DDRAM_R[i][j] & 0xf) + xtnsn
					document.images[offset + i*256 + j + 192].src = parseInt((DDRAM_R[i][j] & 0xf0) >> 4) + xtnsn
				}
			}
		}
		dispBlanked_R = 0
	}	
 
	if(side == 2){
		if(dispBlanked_L == 1){
			for(var i=0; i< 8; i++){
				for(var j=0; j < 64; j++){
					if(DDRAM_L[i][j] != 0 ){
						document.images[offset + i*256 + j ].src = parseInt(DDRAM_L[i][j] & 0xf) + xtnsn
						document.images[offset + i*256 + j + 128].src = parseInt((DDRAM_L[i][j] & 0xf0) >> 4) + xtnsn
					}
				}
			}
		}
 
		if(dispBlanked_R == 1){
			for(var i=0; i < 8; i++){
				for(var j=0; j < 64; j++){
					if(DDRAM_R[i][j] != 0 ){
						document.images[offset + i*256 + j +64].src = parseInt(DDRAM_R[i][j] & 0xf) + xtnsn
						document.images[offset + i*256 + j + 192].src = parseInt((DDRAM_R[i][j] & 0xf0) >> 4) + xtnsn
					}
				}
			}
		}
 
		dispBlanked_L = 0
		dispBlanked_R = 0
 
	}
}
 
 
function increaseAC(side){ // side == 1 >>> left controller, 1 reight controller, 2 both controllers
	if(side == 0){
		AC_L += 1
		if(AC_L > 63){AC_L = 0}
	}
	if(side == 1){
		AC_R += 1
		if(AC_R > 63){AC_R = 0}
 
	}
	 if(side == 2){
		AC_L += 1
		if(AC_L > 63){AC_L = 0}
 
		AC_R += 1
		if(AC_R > 63){AC_R = 0}
	}	
}


/******************* instructions *************************/
/**********************************************************/
	// LCD Command "Display ON/OFF" = 0 0 1 0 0 0 0 L/H   L=OFF H=ON
	var instrDispOnOff  = 0x20;
	var maskDispOnOff = 0xe0;
 
	var displayOn  = 0x1
 
 
	//LCD Command "Set address" = 0 1 a a a a a a
	var instrSetAdrs  = 0x40;
	var maskSetAdrs = 0xc0;
 
	// LCD Command "Set page" =   1 0 1 1 1 p p p
	var instrSetPage   = 0xB8;     // LCD Command "Function Set"
	var maskSetPage  = 0xF8;     // 
 
	// LCD Command "Display Start Line" = 1 1 s s s s s s 
	var instrDispStrtLn = 0xc0;   // LCD Command "Cursor Display"
	var maskDispStrtLn  = 0xc0;   // 
 
 
/**********************************************************/
/****************** instructions end **********************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -