diff options
| author | Michal Idziorek <m.i@gmx.at> | 2015-05-25 22:53:09 +0200 |
|---|---|---|
| committer | Michal Idziorek <m.i@gmx.at> | 2015-05-25 22:53:09 +0200 |
| commit | 8a665b53229ce8f563b88bb33aa1ab3db4c1c096 (patch) | |
| tree | e813008300446b1925dc91e85713732fbd932bdd | |
| parent | 1252a288665a7d07dcf5f0e468dc67b9440132d0 (diff) | |
finally managed to port some simple ncurses test applications!
| -rw-r--r-- | asm/int_syscall_handler.asm | 10 | ||||
| -rw-r--r-- | kernel/syscalls.c | 5 | ||||
| -rw-r--r-- | packages/ncurses-5.9/README | 9 | ||||
| -rw-r--r-- | packages/ncurses-5.9/README_examples | 1 | ||||
| -rw-r--r-- | packages/ncurses-5.9/foolterm.ti | 1 | ||||
| -rw-r--r-- | packages/ncurses-5.9/ncurses-5.9-foolos.patch | 35 | ||||
| -rw-r--r-- | terminal/terminal.c | 3 | ||||
| -rw-r--r-- | userspace/Makefile | 5 | ||||
| -rw-r--r-- | userspace/init.c | 2 | ||||
| -rw-r--r-- | userspace/sys/sys.c | 12 |
10 files changed, 63 insertions, 20 deletions
diff --git a/asm/int_syscall_handler.asm b/asm/int_syscall_handler.asm index 619ef84..b50eaf7 100644 --- a/asm/int_syscall_handler.asm +++ b/asm/int_syscall_handler.asm @@ -20,6 +20,7 @@ global int_syscall_handler [extern syscall_fork] [extern syscall_has_data_waiting] [extern syscall_tune] +[extern syscall_gettimeofday] [extern syscall_unhandled] [bits 32] @@ -28,6 +29,7 @@ pid: dd 0x0 int_syscall_handler: + cmp eax, 72 je call_fork @@ -43,7 +45,6 @@ je call_wait push ecx push edx - cmp eax, 61 je call_write @@ -74,6 +75,9 @@ je call_wait cmp eax, 70 je call_sbrk + cmp eax, 71 + je call_timeofday + cmp eax, 74 je call_stat @@ -175,6 +179,10 @@ call_fork: iretd ;Interrupt-Return ;;;; +call_timeofday: + call syscall_gettimeofday + jmp done + call_stat: call syscall_stat jmp done diff --git a/kernel/syscalls.c b/kernel/syscalls.c index 3a898fc..38cac63 100644 --- a/kernel/syscalls.c +++ b/kernel/syscalls.c @@ -15,6 +15,11 @@ int syscall_unhandled(int nr) panic(FOOLOS_MODULE_NAME,"unhandled syscall (generic handler)"); } +int syscall_gettimeofday(void *timeval, void *tz) +{ + return -1; +} + int syscall_lseek(int file,int ptr,int dir) { #ifdef LOG_SYSCALLS diff --git a/packages/ncurses-5.9/README b/packages/ncurses-5.9/README index 5f22dfa..78b9cd4 100644 --- a/packages/ncurses-5.9/README +++ b/packages/ncurses-5.9/README @@ -1,9 +1,12 @@ 1. extract ncurses-5.9.tar.gz 2. apply patch inside direcotry with : patch -p1 < ../ncurses-5.9-foolos.patch +.. tic foolterm.ti (to install locally) 3. build in seperate directory -5. ../ncurses-xxx/configure --host=i686-foolos --without-tests --with-fallbacks=linux -(or $ ../ncurses-xxx/configure --host=i686-foolos --without-tests --with-fallbacks=linux --with-debug CFLAGS="-gstabs -O0" CXXFLAGS="-gstabs -O0") + +$ ../ncurses-xxx/configure --host=i686-foolos --without-tests --with-fallbacks=fool-term --with-debug CFLAGS="-gstabs -O0" CXXFLAGS="-gstabs -O0" --prefix=/home/miguel/opt/foolos/usr/ --with-termlib CC=i686-foolos-gcc + +symlink /usr/include/curses.h to ./ncurses/curses.h ??? FOR SOME REASON WE NEED TO PASS : CC=i686-foolos-gcc -6. make +6. make && make install diff --git a/packages/ncurses-5.9/README_examples b/packages/ncurses-5.9/README_examples new file mode 100644 index 0000000..18fe3cb --- /dev/null +++ b/packages/ncurses-5.9/README_examples @@ -0,0 +1 @@ +../ncurses-examples-20110404/configure --host=i686-foolos --prefix=/home/miguel/opt/foolos/usr/ CC=i686-foolos-gcc --with-ncurses diff --git a/packages/ncurses-5.9/foolterm.ti b/packages/ncurses-5.9/foolterm.ti index 1c76eda..ea60e0e 100644 --- a/packages/ncurses-5.9/foolterm.ti +++ b/packages/ncurses-5.9/foolterm.ti @@ -73,4 +73,5 @@ fool-term|FoolOS built-in terminal emulator, #colors setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + oc=\E[37;40m, diff --git a/packages/ncurses-5.9/ncurses-5.9-foolos.patch b/packages/ncurses-5.9/ncurses-5.9-foolos.patch index 3bd30ac..6296f0b 100644 --- a/packages/ncurses-5.9/ncurses-5.9-foolos.patch +++ b/packages/ncurses-5.9/ncurses-5.9-foolos.patch @@ -1,6 +1,6 @@ -diff -rc ncurses-5.9-original/config.sub ncurses-5.9-foolos/config.sub +diff -r -c ncurses-5.9-original/config.sub ncurses-5.9/config.sub *** ncurses-5.9-original/config.sub 2010-09-11 00:25:58.000000000 +0200 ---- ncurses-5.9-foolos/config.sub 2015-05-24 11:32:41.269431181 +0200 +--- ncurses-5.9/config.sub 2015-05-25 13:45:32.747903941 +0200 *************** *** 1303,1309 **** -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ @@ -18,9 +18,22 @@ diff -rc ncurses-5.9-original/config.sub ncurses-5.9-foolos/config.sub | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -diff -rc ncurses-5.9-original/ncurses/tinfo/lib_baudrate.c ncurses-5.9-foolos/ncurses/tinfo/lib_baudrate.c +diff -r -c ncurses-5.9-original/include/curses.tail ncurses-5.9/include/curses.tail +*** ncurses-5.9-original/include/curses.tail 2010-03-28 21:10:55.000000000 +0200 +--- ncurses-5.9/include/curses.tail 2015-05-25 20:52:55.711977799 +0200 +*************** +*** 111,117 **** + extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mouseinterval) (SCREEN*, int); + #endif + +- #define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen) + + /* other non-XSI functions */ + +--- 111,116 ---- +diff -r -c ncurses-5.9-original/ncurses/tinfo/lib_baudrate.c ncurses-5.9/ncurses/tinfo/lib_baudrate.c *** ncurses-5.9-original/ncurses/tinfo/lib_baudrate.c 2010-12-19 02:50:50.000000000 +0100 ---- ncurses-5.9-foolos/ncurses/tinfo/lib_baudrate.c 2015-05-24 12:02:40.096469069 +0200 +--- ncurses-5.9/ncurses/tinfo/lib_baudrate.c 2015-05-25 13:45:32.787900948 +0200 *************** *** 39,44 **** --- 39,48 ---- @@ -34,9 +47,10 @@ diff -rc ncurses-5.9-original/ncurses/tinfo/lib_baudrate.c ncurses-5.9-foolos/nc #if defined(__FreeBSD__) #include <sys/param.h> #endif -diff -rc ncurses-5.9-original/ncurses/tty/lib_twait.c ncurses-5.9-foolos/ncurses/tty/lib_twait.c +Only in ncurses-5.9/ncurses/tinfo: .lib_setup.c.swp +diff -r -c ncurses-5.9-original/ncurses/tty/lib_twait.c ncurses-5.9/ncurses/tty/lib_twait.c *** ncurses-5.9-original/ncurses/tty/lib_twait.c 2010-12-26 00:43:58.000000000 +0100 ---- ncurses-5.9-foolos/ncurses/tty/lib_twait.c 2015-05-24 12:15:03.770339113 +0200 +--- ncurses-5.9/ncurses/tty/lib_twait.c 2015-05-25 13:45:32.787900948 +0200 *************** *** 53,58 **** --- 53,60 ---- @@ -48,9 +62,10 @@ diff -rc ncurses-5.9-original/ncurses/tty/lib_twait.c ncurses-5.9-foolos/ncurses #if USE_FUNC_POLL # if HAVE_SYS_TIME_H # include <sys/time.h> -diff -rc ncurses-5.9-original/progs/toe.c ncurses-5.9-foolos/progs/toe.c +Only in ncurses-5.9/progs: .clear.c.swp +diff -r -c ncurses-5.9-original/progs/toe.c ncurses-5.9/progs/toe.c *** ncurses-5.9-original/progs/toe.c 2010-05-02 00:04:08.000000000 +0200 ---- ncurses-5.9-foolos/progs/toe.c 2015-05-24 12:38:52.000570377 +0200 +--- ncurses-5.9/progs/toe.c 2015-05-25 13:45:32.787900948 +0200 *************** *** 36,41 **** --- 36,43 ---- @@ -62,9 +77,9 @@ diff -rc ncurses-5.9-original/progs/toe.c ncurses-5.9-foolos/progs/toe.c #include <progs.priv.h> #include <sys/stat.h> -diff -rc ncurses-5.9-original/progs/tset.c ncurses-5.9-foolos/progs/tset.c +diff -r -c ncurses-5.9-original/progs/tset.c ncurses-5.9/progs/tset.c *** ncurses-5.9-original/progs/tset.c 2010-05-01 23:42:46.000000000 +0200 ---- ncurses-5.9-foolos/progs/tset.c 2015-05-24 12:34:33.000328018 +0200 +--- ncurses-5.9/progs/tset.c 2015-05-25 13:45:32.787900948 +0200 *************** *** 85,90 **** --- 85,91 ---- diff --git a/terminal/terminal.c b/terminal/terminal.c index 05e89d9..3dbe5c8 100644 --- a/terminal/terminal.c +++ b/terminal/terminal.c @@ -398,8 +398,7 @@ bool terminal_put(terminal_tty *tty, uint8_t c) /// - if(c=='c'){reset(tty); - } // RESET + if(c=='c'){reset(tty);} // RESET if(c=='D'){tty->y++;} // LINEFEED if(c=='E'){tty->y++;tty->x=0;} //NEWLINE diff --git a/userspace/Makefile b/userspace/Makefile index 5590a42..dfe9ec3 100644 --- a/userspace/Makefile +++ b/userspace/Makefile @@ -29,7 +29,10 @@ ext2.img: $(PROGS) ../mp/mp.bin echo "++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++." > mnt/home/miguel/hello.brain # cp ~/temp/fool-os-stuff/binutils-build-host-foolos/binutils/readelf mnt/bin # cp ../font/binfont.bin mnt/ - cp ~/temp/fool-os-stuff/ncurses/ncurses-5.9-build/progs/* mnt/bin/ +# cp ~/temp/fool-os-stuff/ncurses/ncurses-5.9-build/progs/* mnt/bin/ + cp ~/opt/foolos/usr/bin/worm mnt/bin/ + cp ~/opt/foolos/usr/bin/dots mnt/bin/ + cp ~/opt/foolos/usr/bin/background mnt/bin/ cp ../mp/mp.bin mnt/boot/ mkdir -p mnt/etc echo "127.0.0.1 localhost" > mnt/etc/hosts diff --git a/userspace/init.c b/userspace/init.c index d3ab751..31f14e3 100644 --- a/userspace/init.c +++ b/userspace/init.c @@ -13,7 +13,7 @@ int main(int argc, char **argv) if(pid==0) { char *argv[]={"/bin/foolshell",0}; - char *env[]={"PS1=\033[34m$\033[37m","PWD=/home/miguel","PATH=/bin","TERM=linux",0}; + char *env[]={"PS1=\033[34m$\033[37m","PWD=/home/miguel","PATH=/bin","TERM=fool-term",0}; execve("/bin/foolshell",argv,env); // replace process with our foolshell :) //execve("/bin/clear",argv,env); // replace process with our foolshell :) puts("FATAL ERROR: Something terrible happened. Unable to Execute SHELL!"); diff --git a/userspace/sys/sys.c b/userspace/sys/sys.c index 7639307..5cd4396 100644 --- a/userspace/sys/sys.c +++ b/userspace/sys/sys.c @@ -169,13 +169,21 @@ char *getlogin(void) return NULL; } -int gtty() +int ioctl(int fd, unsigned long request, ...) { + printf("UNIMPL: ioctl\n"); return -1; } -int stty() +int gtty(int fd, void *buf) { + // printf("UNIMPL: gettty\n"); + return -1; +} + +int stty(int fd, void *buf) +{ + // printf("UNIMPL: settty\n"); return -1; } |
