projects
/
rpikern
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
display works sortof
[rpikern]
/
src
/
main.c
diff --git
a/src/main.c
b/src/main.c
index
29c0f14
..
8bab5a1
100644
(file)
--- a/
src/main.c
+++ b/
src/main.c
@@
-23,41
+23,47
@@
int main(void)
static int cmdend;
rpi_init();
static int cmdend;
rpi_init();
- init_serial(115200);
+ /*init_serial(115200); done in rpi_init now for early debugging */
con_init();
printf("Detected raspberry pi %d, I/O base: %x\n", rpi_model, rpi_iobase);
con_init();
printf("Detected raspberry pi %d, I/O base: %x\n", rpi_model, rpi_iobase);
+ printf("Main RAM base: %x, size: %u bytes\n", rpi_mem_base, rpi_mem_size);
+ printf("Video RAM base: %x, size: %u bytes\n", rpi_vmem_base, rpi_vmem_size);
video_init();
printf("Going interactive\n");
for(;;) {
video_init();
printf("Going interactive\n");
for(;;) {
- int c = getchar();
-
- switch(c) {
- case '\r':
- case '\n':
- if(!lastnl) {
- ser_printstr("\r\n");
- cmdbuf[cmdend] = 0;
- cmdend = 0;
- cmdrun(cmdbuf);
- }
- lastnl = 1;
- break;
-
- case -1:
- lastnl = 0;
- printf("error!\n");
- break;
-
- default:
- lastnl = 0;
- ser_putchar(c);
- if(cmdend < sizeof cmdbuf) {
- cmdbuf[cmdend++] = c;
+ while(ser_pending()) {
+ int c = getchar();
+
+ switch(c) {
+ case '\r':
+ case '\n':
+ if(!lastnl) {
+ printf("\r\n");
+ cmdbuf[cmdend] = 0;
+ cmdend = 0;
+ cmdrun(cmdbuf);
+ }
+ lastnl = 1;
+ break;
+
+ case -1:
+ lastnl = 0;
+ printf("error!\n");
+ break;
+
+ default:
+ lastnl = 0;
+ putchar(c);
+ if(cmdend < sizeof cmdbuf) {
+ cmdbuf[cmdend++] = c;
+ }
}
}
}
}
+
+ /*video_update(1);*/
}
return 0;
}
return 0;
@@
-71,6
+77,7
@@
void reboot(void)
static void cmdrun(char *cmd)
{
static void cmdrun(char *cmd)
{
+ static int cur_x, cur_y;
char *ptr, *args;
while(*cmd && isspace(*cmd)) cmd++;
char *ptr, *args;
while(*cmd && isspace(*cmd)) cmd++;
@@
-81,6
+88,17
@@
static void cmdrun(char *cmd)
if(strcmp(cmd, "reboot") == 0) {
reboot();
if(strcmp(cmd, "reboot") == 0) {
reboot();
+
+ } else if(strcmp(cmd, "down") == 0) {
+ printf("scroll down\n");
+ cur_y += 10;
+ video_scroll(cur_x, cur_y);
+
+ } else if(strcmp(cmd, "up") == 0) {
+ printf("scroll up\n");
+ cur_y -= 10;
+ video_scroll(cur_x, cur_y);
+
} else if(strcmp(cmd, "help") == 0) {
printf("help not implemented yet\n");
} else if(strcmp(cmd, "ver") == 0) {
} else if(strcmp(cmd, "help") == 0) {
printf("help not implemented yet\n");
} else if(strcmp(cmd, "ver") == 0) {