Commit Graph

320 Commits

Author SHA1 Message Date
Kevin Lange
9fd73be686 Trying a few fixes... We're still doing some things very, very wrong. 2012-03-27 16:52:46 -05:00
Kevin Lange
fb6e5d59e3 Completely rewrite rendering model for compositor.
We know longer accept DAMAGE and REDRAW commands. Instead, we just loop
and redraw everything anyway (efficiently, mind you). Pipes still have
issues when closed and various other different things.
2012-03-27 13:58:21 -05:00
Kevin Lange
182de81a79 [userspace] Various. BOOT TO TERMINAL 2012-03-23 17:44:37 -05:00
Kevin Lange
103dccf604 ಠ_ಠ 2012-03-20 16:37:49 -05:00
Kevin Lange
3a60e4e6bd Comment the C++ test program 2012-03-20 16:30:59 -05:00
Kevin Lange
1038ceab72 There is something terribly wrong with how we're doing this. 2012-03-20 16:23:24 -05:00
Kevin Lange
c35af17b78 By executing ios_base::Init(), we cout will work... 2012-03-20 16:22:50 -05:00
Kevin Lange
2e4543d956 Oops, silly me. Minor little bug fixed 2012-03-16 20:05:56 -05:00
Kevin Lange
fc00d3f1f9 Terminal improvements 2012-03-16 17:09:00 -05:00
Kevin Lange
816ddc8f3e Lots of process cleanup implemented; improved cursor rendering 2012-03-14 22:03:55 -05:00
Kevin Lange
ffbe7b7b38 A bunch of stuff. 2012-03-14 15:04:12 -05:00
Kevin Lange
2c4e4e5d03 Fix up destroy() so we can (in theory) delete windows from their owning apps 2012-03-13 17:44:19 -05:00
Kevin Lange
03ee7ed9a9 Fix a kernel elf loader bug that was breaking getopt() 2012-03-13 17:43:35 -05:00
Kevin Lange
2791e7fd35 We've been doing some really stupid shit here... 2012-03-10 18:20:34 -06:00
Kevin Lange
db617812e4 Disable resizing of windows 2012-03-10 12:39:13 -06:00
Kevin Lange
f8ca55805a window_destroy is broken and screws up everything 2012-03-10 09:12:40 -06:00
Kevin Lange
73c6171226 Last minute bug fixes 2012-03-08 23:36:40 -06:00
Kevin Lange
a8f32e077f lol 2012-03-08 15:43:00 -06:00
Kevin Lange
ca43444cc5 don't take location for View app 2012-03-08 02:50:33 -06:00
Kevin Lange
c7500735f4 Adjust Nyancat 2012-03-08 01:10:36 -06:00
Kevin Lange
19a12bec78 lol panel 2012-03-07 23:44:02 -06:00
Kevin Lange
c15402af4c Use window server to determine window size for wallpaper 2012-03-07 22:40:58 -06:00
Kevin Lange
7a9961a9b2 Wallpaper application for scalable wallpaper support 2012-03-07 22:31:24 -06:00
Kevin Lange
a9519bd18a Minor updates to userspace apps 2012-03-07 19:35:15 -06:00
Kevin Lange
f3f0a58b95 Cleaner makefile for userspace 2012-03-06 15:32:26 -06:00
Kevin Lange
8fb8edba3a I have no idea idea what I'm doing. 2012-03-01 21:13:52 -06:00
Kevin Lange
a1a6303bee Faster is_top by way of a depth map 2012-02-26 00:45:46 -06:00
Kevin Lange
70fa12eaf6 remove some old test applications 2012-02-26 00:17:14 -06:00
Kevin Lange
2b0d6f6759 Some very simplistic window management 2012-02-25 23:52:09 -06:00
Kevin Lange
35f5266acf *sigh*... 2012-02-25 22:47:20 -06:00
Kevin Lange
61967e17e4 Use shmem fonts for terminal 2012-02-25 21:28:33 -06:00
Kevin Lange
7e71b3c2af Fix focusing 2012-02-23 01:40:37 -06:00
Kevin Lange
52dd077032 Multiple terminals, fixed focusing, getopt is borked 2012-02-23 01:30:56 -06:00
Kevin Lange
ef82703d5d Terminal actually handles input properly [kbd only] 2012-02-23 00:58:14 -06:00
Kevin Lange
db8a75071d We have a terminal. In a window. Seriously. 2012-02-23 00:36:49 -06:00
Kevin Lange
442ad96588 lolz 2012-02-23 00:02:00 -06:00
Kevin Lange
0ab782da19 Merge markus' changes 2012-02-20 23:34:09 -06:00
Kevin Lange
2da22312a5 Merge branch 'master' of github.com:klange/osdev 2012-02-20 23:32:10 -06:00
Kevin Lange
de7a984938 Fix a bunch of bugs in signal handling and scheduling 2012-02-20 23:31:00 -06:00
Kevin Lange
5de319b816 Work on Shmem fonts
Still need to pass sizes around to shm_* functions as a pointer rather
than the actual size so we can retreive sizes; additionally, *p = 0
should mean "we don't want to create this buffer, we only want to
access it if it exists".
2012-02-20 18:33:09 -06:00
Kevin Lange
16b71c532f [compositor] Load up fonts into shm 2012-02-20 12:18:13 -06:00
Kevin Lange
6268eb3f4e Actually allocate a buffer for double buffering... 2012-02-20 09:23:10 -06:00
Kevin Lange
d768932265 Stop specifing core2 for arch in userspace.
This was creating binaries with invalid opcodes on i7 desktop kvm.
Which is hilarious.
2012-02-20 08:39:00 -06:00
Kevin Lange
a222c3f56a Various bits of graphical fun stuff 2012-02-19 22:35:20 -06:00
Kevin Lange
d048006b9c Fix bitmap loading pinkness bug 2012-02-19 21:43:13 -06:00
Kevin Lange
e335a2970a [glogin] Working on the graphical login application 2012-02-19 21:29:40 -06:00
Kevin Lange
e1beca4127 CPU detection moved to userspace app 2012-02-19 19:39:18 -06:00
Kevin Lange
a97194f0bf You stack'd when you should have queue'd! 2012-02-17 15:31:40 -06:00
Kevin Lange
b30cd50864 Keyboard handling in the compositor 2012-02-17 01:28:12 -06:00
Markus Schober
71fd14d6f7 shm_obtain takes a (size_t *), altering it according to the size of the
block it returned.

Conflicts:
	userspace/compositor.c
2012-02-16 03:43:30 -06:00
Markus Schober
6dc90b1ac2 shm_obtain takes a (size_t *) and modifies the value based on the true
size of the block returned.
2012-02-16 03:34:42 -06:00
Markus Schober
79e67dbe16 drawlines will totally tell you if you gave it a key 2012-02-15 23:14:36 -06:00
Kevin Lange
678ed81c65 Extensive stability fixes. I think I finally squashed those stack bugs. 2012-02-16 22:43:41 -06:00
Kevin Lange
8fb69d44cd I have no frickin' clue what's causing these startup crashes. Requires further investigation. 2012-02-16 15:09:56 -06:00
Kevin Lange
a1d821de9b Various fixes 2012-02-16 14:38:50 -06:00
Kevin Lange
a72f9bc7cf Fix stack bug. 2012-02-16 14:31:40 -06:00
Kevin Lange
4694c67936 Add lock options to thread demo app 2012-02-16 01:48:51 -06:00
Kevin Lange
af860d46f2 Update threadtest to actually demonstrate the classic concurrency bug 2012-02-16 01:34:12 -06:00
Kevin Lange
c67d2796ef Finish threading (might still be some bugs) 2012-02-16 01:06:44 -06:00
Kevin Lange
cffbb02240 Stuff and things 2012-02-15 20:50:31 -06:00
Kevin Lange
3980460484 top/left offsets are SIGNED; add julia fractal thingy 2012-02-13 19:46:00 -06:00
Kevin Lange
86fc80a5e6 Fix overlaps by actually assigning real indexes... 2012-02-13 16:35:57 -06:00
Kevin Lange
c211c61369 Well, that works. 2012-02-13 16:21:52 -06:00
Kevin Lange
9e4d78e721 Fix off-by-one rendering issue 2012-02-12 22:42:25 -06:00
Kevin Lange
749c22c2eb There are some heisenbugs here. I can taste them. 2012-02-12 22:24:02 -06:00
Kevin Lange
1f3d78f8ea Redraw root... 2012-02-12 19:34:19 -06:00
Kevin Lange
abf1e5c837 THIS... IS... SPAAAAARTAAA!!! 2012-02-12 19:30:36 -06:00
Kevin Lange
de0bbe739b Fix a bunch of system calls... 2012-02-12 18:47:01 -06:00
Kevin Lange
e453b08dd6 Debugging, use proper signals, etc. 2012-02-12 17:00:21 -06:00
Kevin Lange
9b1e227c0f Fix a dozen different things. 2012-02-12 16:45:23 -06:00
Markus Schober
c47e199802 Working on window functionality 2012-02-12 05:24:40 -06:00
Kevin Lange
adf2b02b4b [user] Remove the keyboard event loop from julia2
It doesn't even need one; eventually, we'll have window management and
you'll just close the app. It should technically just sit in a loop
endlessly after rendering (or waitforsignal, which we don't have yet).
2012-02-11 22:43:26 -06:00
Kevin Lange
ec391b013e Fix merge conflict 2012-02-11 18:02:14 -06:00
Kevin Lange
49adc34013 Fix buffer overwrites and other issues in compositor 2012-02-11 18:01:21 -06:00
Markus Schober
b06b4fc576 Compositor doesn't clobber the heap anymore. 2012-02-11 17:57:22 -06:00
Markus Schober
a3384aac9e The new compositor is armed and (almost) fully operational! 2012-02-11 15:54:01 -06:00
Kevin Lange
824f2dfb94 fix typos 2012-02-11 01:23:27 -06:00
Kevin Lange
a4178b9248 Magic, identifiers, etc. 2012-02-11 01:20:17 -06:00
Kevin Lange
3411eb380f Protocol refinements 2012-02-11 00:06:09 -06:00
Kevin Lange
9315c95452 Command formats and numbers 2012-02-10 23:29:08 -06:00
Kevin Lange
bc692e83df New compositing work 2012-02-10 23:23:20 -06:00
Markus Schober
d28726fae7 [userspace] really simple second compositor built on shm 2012-02-10 22:54:50 -06:00
Markus Schober
45903b204b fixed a subtle bug in shm; added a bunch of utilities to test it 2012-02-10 22:31:38 -06:00
Kevin Lange
e5f3e49c9d [user] lock application (silly, command line) 2012-02-09 15:29:32 -06:00
Kevin Lange
71842055f4 Fix off-by-one 2012-02-08 22:42:11 -06:00
Kevin Lange
3eb42fe0f0 Fix RPG rendering, finally 2012-02-08 21:22:30 -06:00
Kevin Lange
d1bb652db3 Various.
[init] Reenable freetype in the Terminal spawned from init
[nyancat] Fix timing and update animations
[esh] Fix bug with child pid collection and signal handling
2012-02-08 15:56:27 -06:00
Kevin Lange
499184718d just some fun 2012-02-08 12:04:03 -06:00
Kevin Lange
9daca33cb1 Minor compilation fixes 2012-02-08 12:01:25 -06:00
Kevin Lange
dcc82083ed Compositor doesn't spawn a terminal now :D 2012-02-08 02:45:47 -06:00
Kevin Lange
65fa12f482 SIGNALS 2012-02-08 02:40:44 -06:00
Markus Schober
a09be369ea Merge branch 'master' of git://github.com/klange/osdev 2012-02-07 02:32:40 -06:00
Markus Schober
aec24c08f1 Attaching nearly works! 2012-02-07 02:29:28 -06:00
Kevin Lange
4335ade9bc fire demo, again from a1k0n 2012-02-07 00:11:49 -06:00
Kevin Lange
e2dc01bed7 donut checker... though it has a segfault 2012-02-07 00:06:06 -06:00
Kevin Lange
a95cc17853 Mm, donuts 2012-02-06 23:34:35 -06:00
Kevin Lange
fdaf53b0c4 [shm] Working on negotiation functions 2012-02-05 19:56:21 -06:00
Kevin Lange
c4e33117c0 mkdir and creat testing 2012-02-05 16:04:41 -06:00
Kevin Lange
06a9125c21 Drop redefs of syscalls 2012-02-04 22:57:03 -06:00
Kevin Lange
6590b285b5 Mouse improvements (stability, scaling) 2012-02-04 22:29:46 -06:00
Kevin Lange
1110a119c5 Various blootsplash enhancements. 2012-02-04 01:20:33 -06:00
Kevin Lange
505ed79da3 New compositor and boot splash tests; launches terminal eventually. 2012-02-03 21:15:26 -06:00
Kevin Lange
b0e40ae6df Updated graphics library with sprite loading and stuff 2012-02-03 19:47:36 -06:00
Kevin Lange
2e8144493d Bootsplash testing (launches terminal afterwards) 2012-02-03 18:16:47 -06:00
Kevin Lange
aac1d78e35 Drop packets from the mouse if the client isn't reading fast enough 2012-02-02 20:37:50 -06:00
Kevin Lange
90392d47e6 blink blink blink blink blink 2012-02-02 20:28:26 -06:00
Kevin Lange
4366a20a8f Pipe and packet-based mouse device 2012-02-02 16:16:29 -06:00
Kevin Lange
ab5506b766 [julia] Don't clear the display, it causes problems 2012-01-31 20:47:32 -06:00
Kevin Lange
21218be799 Fix 24-bit rendering 2012-01-31 14:30:12 -06:00
Kevin Lange
dc2badc80e Simple line editing and buffering 2012-01-31 01:25:17 -06:00
Kevin Lange
71298a5c83 Relatively broken local echo support 2012-01-31 00:16:09 -06:00
Kevin Lange
ab1958632c hostname utility 2012-01-30 13:29:13 -06:00
Kevin Lange
93df034d2b Fix hostname file handling 2012-01-30 12:13:11 -06:00
Kevin Lange
238278c3fc init, get/sethostname 2012-01-30 12:10:53 -06:00
Kevin Lange
84bbcf5f95 Support backspace in login (still no local echo) 2012-01-29 20:45:40 -06:00
Kevin Lange
cbcf098e5b Compositing test. 2012-01-29 17:05:42 -06:00
Kevin Lange
1d7c91f3b1 Unicode is hard... thus, I'm not done. 2012-01-28 22:27:37 -06:00
Kevin Lange
fd77e36013 Add bin/uname, fix disk buidling
Disk will now rebuild when userspace/*.c are updated.
Make sure you build in userspace/ first!
2012-01-28 17:10:03 -06:00
Kevin Lange
c65e458c50 Stop building binaries out of loader/
This is what userspace/ is for; consequentally, all userspace
applications now depend on the full toolchain and will build using the C
library.
2012-01-28 16:19:57 -06:00
Kevin Lange
db7020cbce [security] Shadow Passwords, whoami, and more
This update includes support for shadow passwords, stored in
/etc/master.passwd, as well as support for an /etc/passwd file
containing user/uid/full name/shell associations, which are used by the
shell to get your username for display purposes, as well as by whoami
for the same reason. The login tool does not yet select the right shell
though this is planned.

* root's password is `toor` (a throwback to older times)
* local's password is `local` (because it's obvious)
2012-01-27 18:04:39 -06:00
Kevin Lange
00d0eb8fac Simple line editing (backspace support) 2012-01-27 13:16:23 -06:00
Kevin Lange
a47fe02224 Directory switching 2012-01-27 13:10:58 -06:00
Markus Schober
405868ac8a First commit of readdir/ls support. 2012-01-27 04:04:04 -06:00
Kevin Lange
9061f91e74 stat(), fstat(), /bin/stat 2012-01-27 03:12:29 -06:00
Kevin Lange
d112f6fedb Reboot [and fix user/group permissions in fork()] 2012-01-26 23:11:43 -06:00
Kevin Lange
8edb567279 oops 2012-01-26 22:55:22 -06:00
Kevin Lange
ac8354d805 Add some system calls, plus a fakish /bin/login 2012-01-26 22:46:18 -06:00
Kevin Lange
b4c8d7a3ff Fix nyancat height to work on new terminal 2012-01-25 19:04:39 -06:00
Kevin Lange
8b1b0453f8 [userspace] Update build scripts 2012-01-25 17:07:42 -06:00
Kevin Lange
e52ca55db1 [userspace] Fix multitasking-test
Without flushing, this doesn't work properly with the terminal pipe.
Technically, this is an issue in the pipe implementation, but as that's
not technically what we're testing there's no sense having it be broken.

For the record, everything works wonderfully.
2012-01-25 16:59:44 -06:00
Kevin Lange
3b7d737a13 Fix slow terminal by loading fonts into memory 2012-01-25 16:12:56 -06:00
Kevin Lange
7682eb6cdf Change error number format in esh 2012-01-25 14:57:27 -06:00
Kevin Lange
a0139691dd Fix the loader/ apps to use fds 2012-01-25 14:41:11 -06:00
Kevin Lange
d73d2e2361 [cmos] Fix userspace clock 2012-01-25 13:50:30 -06:00
Kevin Lange
1a2cb28fc1 [pipe] Fix write overrun and other issues 2012-01-25 00:54:59 -06:00
Kevin Lange
339b82e10c [massive commit] Userspace terminal.
Completely removes:
* The kernel terminal (both VGA and graphical)
* The kernel ANSI parser (obviously)
* kgets() function
* Dozens of other functions that were made useless

Adds:
* Userspace terminal that should work (relatively) well
* Keyboard device driver (implemented with a "pipe" object)
* Stabalized interrupt interface
* `clear` uses the c library
* All panic screens and kprintf() output goes to the serial line ONLY
* The kernel boots directly into /bin/terminal (no arguments, unless you
  want to add them (such as -f))
2012-01-25 00:19:52 -06:00
Kevin Lange
d9c0c8efb6 Pipes, dup2, and an almost-kinda-working terminal 2012-01-24 19:06:07 -06:00
Kevin Lange
6c042aba53 Pipes 2012-01-24 18:40:25 -06:00
Kevin Lange
fb200db703 Herp 2012-01-24 12:10:57 -06:00
Kevin Lange
6203bc0063 Fix default output colors 2012-01-24 11:56:42 -06:00
Kevin Lange
b4856c563c Italic, Underline, X-Out support 2012-01-24 11:53:03 -06:00
Kevin Lange
dc353cd954 Update cursor style 2012-01-24 11:15:15 -06:00
Kevin Lange
436435589a Adjusted font settings, bold support 2012-01-24 11:01:31 -06:00
Kevin Lange
e05515844d Null device 2012-01-23 23:01:23 -06:00
Kevin Lange
9be2f43935 [term] Change sample output a bit 2012-01-23 22:37:09 -06:00
Kevin Lange
ce51204fe4 Use DejaVu with same sizings and hintings as my xterm 2012-01-23 22:26:13 -06:00
Kevin Lange
ee1ade379f [cat] handle load failure without seg faulting 2012-01-23 14:24:23 -06:00
Kevin Lange
ed31c2cbea Drop serial output from standard terminal 2012-01-23 12:36:59 -06:00
Kevin Lange
7e716019ec Freetype, why are you so slow? 2012-01-23 00:13:50 -06:00
Kevin Lange
2174cfb59e Rough test: Userspace port of the terminal.
Need to replace the bitfont with freetype, get the thing attached to a
pipe, start getting other stuff to run under it, and then we can remove
the kernel's graphical terminal.
2012-01-22 23:36:49 -06:00
Kevin Lange
e5330b1df0 Started work on the full ELF loader and C++ support 2012-01-18 20:12:04 -06:00
Kevin Lange
870d93c235 Add a pseudo-daemonizing clock app 2012-01-10 23:22:27 -06:00
Kevin Lange
5fa42a5d34 Fix a kgets() thread-switcing bug 2012-01-10 20:14:07 -06:00
Kevin Lange
aa748bc99a Hmpf. 2012-01-10 19:14:30 -06:00
Kevin Lange
edebb12573 [misc] Boot logging to screen 2011-12-26 19:23:58 -06:00
Kevin Lange
c0f45e0b7f VESA mode switching support.
BIOS execution is provided through the `v8086` module, which provides
software emulation of an 8086 processor. It is not currently working
with some BIOSes and may (read: probably will be) replaced with another
emulator (x86emu comes to mind) at some point in the near future. In the
meantime, the default video mode for QEMU works with this and it's
enough to get us on real VESA instead of fake VBE. The `bochs` module
will be renamed in a future commit. Userspace programs have been
adjusted to work at bitrates other than 32 *POORLY*. If you write pixels
left-to-right, they should work fine. They only work with 24-bpp
otherwise, and then you need to be careful of what pixels you are
writing when, or you will overwrite things in other pixels.

You may pass a commandline argument like the following to set display
modes:

  vid=vesa,1024,768

Or for stranger modes under QEMU or Bochs, use the bochs VBE
initializer:

  vid=bochs,1280,720

Note that the address of the linear framebuffer is still found via
hackish probing instead of PCI or trusting the VBE information, so if
you have things in the wrong memory ranges (0xE0000000+), be prepared to
have them get read.

Once again, this entire commit is a massive hack. I am happy that it
worked, and I will continue to make it less hacky, but in the meantime,
this is what we've got.

Happy holidays.
2011-12-25 00:40:40 -06:00
Kevin Lange
d0be767eb8 [minor] Remove unused macro from freetype_test 2011-12-16 13:27:08 -06:00
Kevin Lange
a4d17cb382 Graphics resolution independence (targetting VESA support); update README 2011-12-16 13:16:20 -06:00
Kevin Lange
021585e9ef [misc] Massive improvements to process handling
- Free process resources when a process exits (reaped in next process
  cycle; should probably reap after a wait() or something)
- Free process struct after wait()
- Fix page allocation
- Fix fork() return value for child process (attempted to write to an
  invalid point in kernel-stack memory)

We shouldn't be triple faulting randomly anymore!

Continue investigating the fork() return value, as there was a bugged
return at some point during executon of a test run of thrash-process.
2011-12-15 17:21:28 -06:00
Kevin Lange
20fab345a8 [user] Simple little test app that triggers a stack overflow 2011-12-14 20:06:09 -06:00
Kevin Lange
d7d52555c9 [user] Redundant -O 2011-12-12 04:11:07 -06:00
Kevin Lange
c54de06083 [esh] Support &, search path 2011-12-07 15:08:40 -06:00
Kevin Lange
fa09f76582 [esh] Handle bad execs 2011-12-06 20:36:40 -06:00
Kevin Lange
dca46fffc4 [sys] wait(pid) 2011-12-06 20:13:20 -06:00
Kevin Lange
d52e73e71e [esh] Esh, the experimental shell 2011-12-06 19:46:35 -06:00
Kevin Lange
8f6d345039 [userspace] Nyancat!
Also works on a standard xterm:
    gcc -o nyancat nyancat.c
    ./nyancat
(Be sure to set your terminal to at least 128 wide and 64 tall)
2011-11-29 23:41:02 -06:00
Kevin Lange
f3a52d272a Move all of the ramdisk support into the hard disk 2011-11-18 14:45:19 -06:00
Kevin Lange
3726a9a043 [user] We can enable optimizations and strip for smaller binaries 2011-10-28 01:21:59 -05:00
Kevin Lange
e3f5cb0e47 [user] Update userspace makefile 2011-10-28 01:09:55 -05:00
Kevin Lange
e54a6be038 Move userspace directory to 'userspace' 2011-10-27 20:12:31 -05:00