Exemplo n.º 1
0
void updateScreen() {
	ili9340_setBackColor(0x0000);
	ili9340_setFrontColor(0xFFFF);
	//Draw info
	itoa(GET_REG(REG_ACC), buff, 10);
	ili9340_fillRect(     BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*0 + 16, 8*4, 13, 0x0000);
	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*0 + 16, buff);
	itoa(GET_REG(REG_BAK), buff, 10);
	ili9340_fillRect(     BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*1 + 16, 8*4, 13, 0x0000);
	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*1 + 16, buff);
	//TODO: LAST: Last side used when ANY
	//TODO: MODE: Current Running mode (IDLE, RUN, WRITING, READING)
	//IDLE PERCENTAGE
	itoa(0, buff, 10);
	ili9340_fillRect(     BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*4 + 16, 8*4, 13, 0x0000);
	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*4 + 16, buff);

	//Draw instruction
	for(uint8_t i = 0; i < 15; i++) {
		if(i != lastPC && i != GET_REG(REG_PC))
			continue;
		drawInstr(i);
	}
	lastPC = GET_REG(REG_PC);
}
Exemplo n.º 2
0
void drawInstr(uint8_t i) {
	buffLen = 0;
	buff[0] = '\0';
	uint8_t y = (i * 13) + BOX_TOP + 2;
	uint8_t x = BOX_LEFT + 2;
	if(i == GET_REG(REG_PC)) {
		fg = 0x0000;
		bg = 0xFFFF;
	} else {
		fg = 0xFFFF;
		bg = 0x0000;
	}
	ili9340_fillRect(x-1, y-1, CODE_WIDTH - 1, 14, bg);
	ili9340_setBackColor(bg);
	ili9340_setFrontColor(fg);

	if(labels[i][0] != '\0') {
		buffLen += strlen(strcpy(buff + buffLen, labels[i]));
		buff[buffLen++] = ':';
	}

	if(GET_OPC_AT(i) == 0) {
		buff[buffLen++] = '\0';
		ili9340_drawString(x, y, buff); //Just draw the label and continue
		return;
	}

	strncpy_P(buff + buffLen, Instruction[GET_OPC_AT(i)-1], OPC_LEN);
	buffLen += 3; //All instrctions are 3 bytes long;

	switch(GET_OPC_AT(i)) {
		case OPC_MOV:
			buff[buffLen++] = ' ';
			buffLen += otoa(GET_B_AT(i), buff + buffLen);
			buff[buffLen++] = ' ';
			buffLen += otoa(GET_A_AT(i), buff + buffLen);
			break;
		case OPC_ADD:
		case OPC_SUB:
		case OPC_JRO:
			buff[buffLen++] = ' ';
			buffLen += otoa(GET_A_AT(i), buff + buffLen);
			break;
		case OPC_JMP:
		case OPC_JEZ:
		case OPC_JNZ:
		case OPC_JGZ:
		case OPC_JLZ: {
						  buff[buffLen++] = ' ';
						  struct Operand dst;
						  DECODE_OP(GET_A_AT(i), &dst);
						  buffLen += strlen(strcpy(buff + buffLen, labels[dst.litValue]));
						  break;
					  }
		default:
					  break;
	}
	ili9340_drawString(x, y, buff);
}
Exemplo n.º 3
0
void redrawScreen() {
	ili9340_setBackColor(0x0000);
	ili9340_setFrontColor(0xFFFF);
	ili9340_fillRect(0, 0, SCR_WIDTH, SCR_HEIGHT, 0x0000);

	ili9340_drawFastHLine(BOX_LEFT,  BOX_TOP,    BOX_WIDTH,  0xFFFF);
	ili9340_drawFastHLine(BOX_LEFT,  BOX_BOTTOM, BOX_WIDTH,  0xFFFF);
	ili9340_drawFastVLine(BOX_LEFT,  BOX_TOP,    BOX_HEIGHT, 0xFFFF);
	ili9340_drawFastVLine(BOX_RIGHT, BOX_TOP,    BOX_HEIGHT, 0xFFFF);

	ili9340_drawFastVLine(BOX_SPLIT, BOX_TOP,    BOX_HEIGHT, 0xFFFF);

	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*0 + 4, "ACC");
	ili9340_drawFastHLine(BOX_SPLIT,     BOX_TOP + INFO_HEIGHT*1,     INFO_WIDTH, 0xFFFF);
	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*1 + 4, "BAK");
	ili9340_drawFastHLine(BOX_SPLIT,     BOX_TOP + INFO_HEIGHT*2,     INFO_WIDTH, 0xFFFF);
	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*2 + 4, "LAST");
	ili9340_drawFastHLine(BOX_SPLIT,     BOX_TOP + INFO_HEIGHT*3,     INFO_WIDTH, 0xFFFF);
	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*3 + 4, "MODE");
	ili9340_drawFastHLine(BOX_SPLIT,     BOX_TOP + INFO_HEIGHT*4,     INFO_WIDTH, 0xFFFF);
	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*4 + 4, "IDLE");

	itoa(GET_REG(REG_ACC), buff, 10);
	ili9340_fillRect(     BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*0 + 16, 6*4, 8, 0x0000);
	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*0 + 16, buff);
	itoa(GET_REG(REG_BAK), buff, 10);
	ili9340_fillRect(     BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*1 + 16, 6*4, 8, 0x0000);
	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*1 + 16, buff);
	//TODO: LAST: Last side used when ANY
	//TODO: MODE: Current Running mode (IDLE, RUN, WRITING, READING)
	//IDLE PERCENTAGE
	itoa(0, buff, 10);
	ili9340_fillRect(     BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*4 + 16, 6*4, 8, 0x0000);
	ili9340_drawString(   BOX_SPLIT + 8, BOX_TOP + INFO_HEIGHT*4 + 16, buff);

	for(uint8_t i = 0; i < 15; i++) {
		drawInstr(i);
	}
}
Exemplo n.º 4
0
void ili9340_drawFastVLine(struct ili9340 *self, uint16_t x, uint16_t y, uint16_t h,
  uint16_t color) {
	
	ili9340_fillRect(self, (h > 0)?x:(x + h), y, 1, (h > 0)?(x + h):x, color); 
}