diff --git a/include/cmd.h b/include/cmd.h index 089a981cb5b34895191caf82e9df5fde156ab3a4..8c6b69819cafa0db41adee1e546a25931cb9c730 100644 --- a/include/cmd.h +++ b/include/cmd.h @@ -2,5 +2,6 @@ #define __CMD_H__ #define CMD_HALT 0 +#define CMD_NOINPUT 1 int ListenCommand(); #endif diff --git a/include/myio.h b/include/myio.h new file mode 100644 index 0000000000000000000000000000000000000000..fec4dfc9380011dbe382e9850aa381b1ba83e9f7 --- /dev/null +++ b/include/myio.h @@ -0,0 +1,8 @@ +#ifndef __MYIO_H__ +#define __MYIO_H__ + +#define COM1 0 +#define COM2 1 + +int mygetc(int Channel,char* Char); +#endif diff --git a/src/Makefile b/src/Makefile index 38247bfea852eec5b72beca7ebec86213022717c..e58a8ea4828530a8933c83cb3acfee5a26a62cfe 100644 --- a/src/Makefile +++ b/src/Makefile @@ -28,7 +28,7 @@ startup.o: startup.s $(AS) $(ASFLAGS) -o startup.o startup.s startup.elf: startup.o - $(LD) $(LDFLAGS) -o $@ startup.o -lmycanvas -lmyclock -lcmd -lbwio -lgcc + $(LD) $(LDFLAGS) -o $@ startup.o -lmycanvas -lmyclock -lcmd -lmyio -lbwio -lgcc clocktest.s: clocktest.c $(XCC) -S $(CFLAGS) clocktest.c diff --git a/src/libsrc/Makefile b/src/libsrc/Makefile index 774204df11bc7cf8514bdca9e2df8a61a0d5187b..83c4cc15d7929f0333bffe6a6f753939bd96a03c 100644 --- a/src/libsrc/Makefile +++ b/src/libsrc/Makefile @@ -29,6 +29,8 @@ mycanvas.s: mycanvas.c myclock.s: myclock.c $(XCC) -S $(CFLAGS) myclock.c +myio.s: myio.c + $(XCC) -S $(CFLAGS) myio.c bwio.o: bwio.s $(AS) $(ASFLAGS) -o bwio.o bwio.s @@ -42,6 +44,9 @@ mycanvas.o: mycanvas.s myclock.o: myclock.s $(AS) $(ASFLAGS) -o myclock.o myclock.s +myio.o: myio.s + $(AS) $(ASFLAGS) -o myio.o myio.s + bwio.a: bwio.o $(AR) $(ARFLAGS) $@ bwio.o @@ -53,12 +58,15 @@ mycanvas.a: mycanvas.o myclock.a: myclock.o $(AR) $(ARFLAGS) $@ myclock.o +myio.a: myio.o + $(AR) $(ARFLAGS) $@ myio.o -install: bwio.a mycanvas.a myclock.a cmd.a +install: bwio.a mycanvas.a myclock.a cmd.a myio.a mv bwio.a ../../lib/libbwio.a mv cmd.a ../../lib/libcmd.a mv mycanvas.a ../../lib/libmycanvas.a mv myclock.a ../../lib/libmyclock.a + mv myio.a ../../lib/libmyio.a clean: -rm -f *.s *.o *.a *~ ../../lib/*.a diff --git a/src/libsrc/cmd.c b/src/libsrc/cmd.c index 22ade437a17aca15134b805b910699e7aff9bc6d..2aa0f8dd79096bd53248d72257ecef502cfa992c 100644 --- a/src/libsrc/cmd.c +++ b/src/libsrc/cmd.c @@ -1,15 +1,18 @@ -#include <bwio.h> +#include <myio.h> #include <cmd.h> #include <mycanvas.h> int ListenCommand() { CURSOR_POS(20,1); - char FirstChar = bwgetc(COM2); - switch(FirstChar){ - case 'q': - return CMD_HALT; - default: - break; - } + char FirstChar; + if(mygetc(COM2, &FirstChar)){ + switch(FirstChar){ + case 'q': + return CMD_HALT; + default: + break; + } + } + return CMD_NOINPUT; } diff --git a/src/libsrc/myio.c b/src/libsrc/myio.c new file mode 100644 index 0000000000000000000000000000000000000000..17c293ae5e0b62ac1de53f22b998bedf5f6ae101 --- /dev/null +++ b/src/libsrc/myio.c @@ -0,0 +1,24 @@ +#include <myio.h> +#include <ts7200.h> + +int mygetc(int Channel, char *Char){ + int *flag, *data; + switch (Channel){ + case COM1: + flag = (int *)(UART1_BASE + UART_FLAG_OFFSET); + data = (int *)(UART1_BASE + UART_DATA_OFFSET); + break; + case COM2: + flag = (int *)(UART2_BASE + UART_FLAG_OFFSET); + data = (int *)(UART2_BASE + UART_DATA_OFFSET); + break; + default: + break; + } + if( *flag & RXFF_MASK){ + *Char = (char) *data; + return 1; + }else{ + return 0; + } +}