void draw2 (uint32_t color, uint32_t X, uint32_t Y){ for (uint32_t i = 25; i<45; i++) { for (uint32_t j = 10; j<15; j++) { hwline(color,X+i,Y+j,X+i,Y+j); } } for (uint32_t i = 45; i<50; i++) { for (uint32_t j = 15; j<30; j++) { hwline(color,X+i,Y+j,X+i,Y+j); } } for (uint32_t i = 28; i<45; i++) { for (uint32_t j = 25; j<30; j++) { hwline(color,X+i,Y+j,X+i,Y+j); } } for (uint32_t i = 25; i<30; i++) { for (uint32_t j = 30; j<50; j++) { hwline(color,X+i,Y+j,X+i,Y+j); } } for (uint32_t i = 30; i<50; i++) { for (uint32_t j = 45; j<50; j++) { hwline(color,X+i,Y+j,X+i,Y+j); } } }
void draw1 (uint32_t color, uint32_t X, uint32_t Y){ for (uint32_t i = 35; i<40; i++) { hwline(color,X+i,Y+10,X+i,Y+50); } for (uint32_t i = 30; i<35; i++) { for (uint32_t j = 10; j<15; j++) { hwline(color,X+i,Y+j,X+i,Y+j); } } }
void drawHalf (uint32_t color){ for (uint32_t Y = 5; Y<600; Y = Y + 30) { for (uint32_t X = 398; X<403; X++) { hwline(color,X,Y,X,Y+15); } } }
void drawBall(uint32_t color, ball *aBall){ uint32_t x = aBall->x; uint32_t y = aBall->y; for (uint32_t i = 0; i < BALL_DIAM; i++) { hwline(color, x+i, y, x+i, y+BALL_DIAM); } }
void drawPaddle(uint32_t color, uint32_t y, uint32_t startX){ uint32_t gold = 0xffff00; //gold = 0xffffff; uint32_t blue = 0x000099; //black = 0x0; uint32_t yEnd = y+PADDLE_LEN; for (uint32_t i = 0; i < PADDLE_WIDTH; i++){ hwline(color, startX+i, y, startX+i, yEnd); } }
int main(void){ uwrite_int8s("\r\n"); for ( ; ; ) { uwrite_int8s("CP4> "); int8_t buffer[BUFFER_LEN]; int8_t* input = read_token(buffer, BUFFER_LEN, " \x0d"); if (strcmp(input, "file") == 0) { uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t file_length = ascii_dec_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); store(address, file_length); } else if (strcmp(input, "jal") == 0) { uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); entry_t start = (entry_t)(address); start(); } else if (strcmp(input, "lw") == 0) { uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint32_t* p = (volatile uint32_t*)(address); uwrite_int8s(uint32_to_ascii_hex(address, buffer, BUFFER_LEN)); uwrite_int8s(":"); uwrite_int8s(uint32_to_ascii_hex(*p, buffer, BUFFER_LEN)); uwrite_int8s("\r\n"); } else if (strcmp(input, "lhu") == 0) { uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint16_t* p = (volatile uint16_t*)(address); uwrite_int8s(uint32_to_ascii_hex(address, buffer, BUFFER_LEN)); uwrite_int8s(":"); uwrite_int8s(uint16_to_ascii_hex(*p, buffer, BUFFER_LEN)); uwrite_int8s("\r\n"); } else if (strcmp(input, "lbu") == 0) { uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint8_t* p = (volatile uint8_t*)(address); uwrite_int8s(uint32_to_ascii_hex(address, buffer, BUFFER_LEN)); uwrite_int8s(":"); uwrite_int8s(uint8_to_ascii_hex(*p, buffer, BUFFER_LEN)); uwrite_int8s("\r\n"); } else if (strcmp(input, "sw") == 0) { uint32_t word = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint32_t* p = (volatile uint32_t*)(address); *p = word; } else if (strcmp(input, "sh") == 0) { uint16_t half = ascii_hex_to_uint16(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint16_t* p = (volatile uint16_t*)(address); *p = half; } else if (strcmp(input, "sb") == 0) { uint8_t byte = ascii_hex_to_uint8(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint8_t* p = (volatile uint8_t*)(address); *p = byte; } //TODO: your job to fill in your calls to these commands else if(strcmp(input, "swline") == 0) { uint32_t color = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t X0 = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t Y0 = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t X1 = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t Y1 = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t buffAddr = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); swline(color,X0,Y0,X1,Y1,buffAddr); } else if (strcmp(input, "hwline") == 0) { uint32_t color = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t X0 = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t Y0 = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t X1 = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t Y1 = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t buffAddr = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); hwline(color,X0,Y0,X1,Y1,buffAddr); } else if (strcmp(input, "fill") == 0) { uint32_t color = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t buffAddr = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); fill(color, buffAddr); } else if (strcmp(input, "swfill") == 0) { uint32_t color = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t buffAddr = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); swfill(color, buffAddr); } else { uwrite_int8s("Error: Unrecognized command\n\r"); } } return 0; }
int main(void) { uwrite_int8s("\r\n"); for ( ; ; ) { uwrite_int8s("Hell> "); int8_t buffer[BUFFER_LEN]; int8_t* input = read_token(buffer, BUFFER_LEN, " \x0d"); if (strcmp(input, "file") == 0) { uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t file_length = ascii_dec_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); store(address, file_length); } else if (strcmp(input, "jal") == 0) { uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); entry_t start = (entry_t)(address); start(); } else if (strcmp(input, "lw") == 0) { uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint32_t* p = (volatile uint32_t*)(address); uwrite_int8s(uint32_to_ascii_hex(address, buffer, BUFFER_LEN)); uwrite_int8s(":"); uwrite_int8s(uint32_to_ascii_hex(*p, buffer, BUFFER_LEN)); uwrite_int8s("\r\n"); } else if (strcmp(input, "lhu") == 0) { uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint16_t* p = (volatile uint16_t*)(address); uwrite_int8s(uint32_to_ascii_hex(address, buffer, BUFFER_LEN)); uwrite_int8s(":"); uwrite_int8s(uint16_to_ascii_hex(*p, buffer, BUFFER_LEN)); uwrite_int8s("\r\n"); } else if (strcmp(input, "lbu") == 0) { uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint8_t* p = (volatile uint8_t*)(address); uwrite_int8s(uint32_to_ascii_hex(address, buffer, BUFFER_LEN)); uwrite_int8s(":"); uwrite_int8s(uint8_to_ascii_hex(*p, buffer, BUFFER_LEN)); uwrite_int8s("\r\n"); } else if (strcmp(input, "sw") == 0) { uint32_t word = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint32_t* p = (volatile uint32_t*)(address); *p = word; } else if (strcmp(input, "sh") == 0) { uint16_t half = ascii_hex_to_uint16(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint16_t* p = (volatile uint16_t*)(address); *p = half; } else if (strcmp(input, "sb") == 0) { uint8_t byte = ascii_hex_to_uint8(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t address = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); volatile uint8_t* p = (volatile uint8_t*)(address); *p = byte; } else if (strcmp(input, "fill") == 0) { uint32_t color = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); fill(color); } else if (strcmp(input, "hwline") == 0) { int8_t buffer[64]; uint32_t color = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t x0 = ascii_dec_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t y0 = ascii_dec_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t x1 = ascii_dec_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t y1 = ascii_dec_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uwrite_int8s("\r\n"); uwrite_int8s(uint32_to_ascii_hex(color, buffer, 64)); uwrite_int8s("\r\n"); uwrite_int8s(uint32_to_ascii_hex(x0, buffer, 64)); uwrite_int8s("\r\n"); uwrite_int8s(uint32_to_ascii_hex(y0, buffer, 64)); uwrite_int8s("\r\n"); uwrite_int8s(uint32_to_ascii_hex(x1, buffer, 64)); uwrite_int8s("\r\n"); uwrite_int8s(uint32_to_ascii_hex(y1, buffer, 64)); uwrite_int8s("\r\n"); uwrite_int8s("\r\n"); hwline(color, x0, y0, x1, y1); } else if (strcmp(input, "swline") == 0) { uint32_t color = ascii_hex_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t x0 = ascii_dec_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t y0 = ascii_dec_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t x1 = ascii_dec_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); uint32_t y1 = ascii_dec_to_uint32(read_token(buffer, BUFFER_LEN, " \x0d")); swline(color, x0, y0, x1, y1); } else { uwrite_int8s("\n\rGo f**k yourself: "); uwrite_int8s(input); uwrite_int8s("\n\r"); } } return 0; }