Commit Graph

243 Commits

Author SHA1 Message Date
Kevin Lange
e83f88bacb Add time support to vfs 2012-12-09 16:59:55 -08:00
Kevin Lange
942c49806b retool build utils 2012-12-05 21:40:30 -08:00
Kevin Lange
f5b5b8821d Clean up some minor bits and pieces. 2012-12-04 20:09:06 -08:00
Kevin Lange
50ea1462c3 Fix IDE on new qemu, virtualbox 2012-12-02 21:43:54 -08:00
Kevin Lange
c93b5617e8 Support C++ (roughly) in toolchain
* Reenables building of libstdc++
* Enables building of g++
* WARNING: The static binary loader does NOT support static
  initializer functions! You must run them yourself (see
  userspace/test-cpp.cpp for an example that initializes the standard
  streams in order to use cout) until this is fixed.
* C++ stuff is slow to load, try to manually strip, it'll speed things
  up a bit.
2012-11-20 19:28:22 -08:00
Kevin Lange
05728b0e2f Fix large files on modern ext2 configurations 2012-10-16 22:30:57 -07:00
Kevin Lange
50c5c72389 Use localtime for qemu rtc 2012-10-16 20:42:37 -07:00
Kevin Lange
c8b3a480c7 Scripts to run the clang analyzer 2012-10-09 21:00:50 -07:00
Kevin Lange
f79f345956 Giant ramdisks (works on my desktop)
But not on my laptop...
2012-09-18 22:20:04 -07:00
Kevin Lange
e0e7b8a7ed Double ramdisk size.
8MB can fit some freetype fonts or a dozen extra applications.

[ci skip] since Travis doesn't deal with ramdisks.
2012-09-18 20:00:50 -07:00
Kevin Lange
57534cf009 Fix things up to prepare a working ramdisk. 2012-09-18 00:06:32 -07:00
Kevin Lange
127b24a686 Bump default QEMU memory to 1GB 2012-09-14 21:53:04 -07:00
Kevin Lange
09c01eb2c5 Make docs and utils a separate build path from all
docs require too many extra dependencies and haven't been updated in
ages; utils are not required for anything.

[ci skip]
2012-09-10 22:53:39 -07:00
Kevin Lange
c8cfd50fd7 Rudimentary support for moving the viewport horiz.
Rough, still a bit broken, needs cursor tracking.

[ci skip]
2012-09-08 22:25:32 -07:00
Kevin Lange
3f5dbcaf9b Update core Makefile for building bim for Linux
[ci skip]
2012-09-08 16:49:40 -07:00
Kevin Lange
58ca0b984c Add write support; make sacrifices to the gods
- Write support!
- The widths of characters is now determined with freetype ;-;
  I really wish wcwidth() was a real thing, but it's not.
  This is a sacrifice that had to be made.

  If you are building FOR Linux -rather than toaru- you might need to
  poke at some things to make sure it builds, but in my experience it is
  working just fine (and IMEs now work properly).

  [ci skip]
2012-09-08 15:54:56 -07:00
Kevin Lange
df8afae9b9 Linux support for bim; fix a bug when opening
[ci skip]
2012-09-08 14:37:48 -07:00
Kevin Lange
89034c060f I give up; just use qemu-system-i386 everywhere. 2012-09-03 23:40:50 -07:00
Kevin Lange
bba242dd62 Add a testing framework.
This is an automated system by which we boot qemu headless and use the
serial line to capture output from a testing application that is started
on bootup, running with the VGA terminal shell. This might be expanded
to boot to the graphical display within VNC and perform more advanced
tests with the Python shim using a VNC module for Python; we'll see.
2012-09-02 02:24:25 -07:00
Kevin Lange
7274e8e938 configured run mode 2012-08-20 22:26:22 -07:00
Kevin Lange
959fff1076 Specify directories for ctags 2012-05-31 18:37:17 +09:00
Kevin Lange
fd53947564 Added some new quick-run targets to the makefile. 2012-04-19 19:59:59 -05:00
Kevin Lange
5a1a45bc09 Faster mouse response
- Discard lots of packets
- Don't yield?
2012-04-12 23:21:38 -05:00
Kevin Lange
3e70898674 Yeah, disable debug flags while we're still working on initrds... 2012-04-11 16:03:20 -05:00
Kevin Lange
5832f0545b Fix up target for ramdisk 2012-04-11 13:07:16 -05:00
Kevin Lange
0ebb0ac983 Stop building ramdisks by default. 2012-04-11 12:47:39 -05:00
Kevin Lange
a69bd63fbc Stop running with the ramdisk 2012-04-11 12:46:36 -05:00
Kevin Lange
2e4543d956 Oops, silly me. Minor little bug fixed 2012-03-16 20:05:56 -05:00
Kevin Lange
d9b82bfb06 add -k en-us to QEMU arguments, for mac users 2012-02-06 16:20:23 -06:00
Kevin Lange
b83fb0de13 Oops 2012-02-05 17:43:32 -06:00
Kevin Lange
9b5e26164f Do a better job of running check-reqs 2012-02-05 17:40:19 -06:00
Kevin Lange
2e8144493d Bootsplash testing (launches terminal afterwards) 2012-02-03 18:16:47 -06:00
Kevin Lange
119bcf6913 Remove bootloader.
We'll get back to this eventually, right now it's just cluttering the
repository, so get rid of it.
2012-01-29 16:07:15 -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
c9d5e735ed Getting ready for thread support 2012-01-28 17:06:07 -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
6eb0045419 Add a target to update version.o 2012-01-27 18:47:59 -06:00
Kevin Lange
41fb7c0f9f ctags 2012-01-27 01:38:08 -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
ed31c2cbea Drop serial output from standard terminal 2012-01-23 12:36:59 -06:00
Kevin Lange
7de2ca9bd1 Per-user tmp files 2012-01-18 19:52:11 -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
b8d8140530 QEMU may default to 128MB, that's bad, we need at least 256 2011-12-15 20:34:57 -06:00
Kevin Lange
67343548a7 Only mount hard disk if requested 2011-12-14 22:30:46 -06:00
Kevin Lange
8c548c0db0 Restructure directory tree for kernel modules 2011-12-14 22:15:47 -06:00
Kevin Lange
d7e5cb2556 [build] That entire rule was unused... 2011-12-01 01:09:12 -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
b2b8185494 Load wallpaper from file on disk 2011-11-18 14:38:27 -06:00
Kevin Lange
3c0b30b5ee Wallpapers in the gits and by default 2011-11-17 19:01:14 -06:00
Kevin Lange
5716e652ad [build] Fix minor issue in makefile 2011-10-29 00:33:57 -05:00
Kevin Lange
3726a9a043 [user] We can enable optimizations and strip for smaller binaries 2011-10-28 01:21:59 -05:00
Kevin Lange
c2addf6e55 [build] Toolchain detection 2011-10-27 20:10:27 -05:00
Kevin Lange
bb3ef117ee [build] Build a hard disk image to toy with 2011-10-27 19:37:01 -05:00
Kevin Lange
fe9b4d5cbb [build] Detect compiler; force color output in clang 2011-10-27 18:19:39 -05:00
Kevin Lange
1f4b7c68b6 [build] Massive build improvements 2011-10-27 17:39:40 -05:00
Kevin Lange
d3de5634b2 [build] Make clean only do soft cleaning; add clean-hard 2011-10-27 16:36:56 -05:00
Kevin Lange
fd0dea66d5 [build] Split clean into multiple pseudo-targets 2011-10-26 18:39:36 -05:00
Kevin Lange
df21db6beb [build] updates to makefile, new 'build' target 'kvm' 2011-05-07 19:21:09 -05:00
Kevin Lange
03a8066742 Uh, we need more space. 2011-04-24 22:30:48 -05:00
Kevin Lange
eb0c5d05e1 [sys] Holy crap. 2011-04-17 17:44:29 -05:00
Kevin Lange
254ceb51ab [sys] More system calls, more stability, kill bad processes 2011-04-17 13:26:31 -05:00
Kevin Lange
ad7d5d7acc [sys] read/write/open/close, also cat 2011-04-16 20:01:04 -05:00
Kevin Lange
d2ff4c474e [ansi] Support for more escape sequences. 2011-04-15 21:48:20 -05:00
Kevin Lange
332920fe2d [bin] Some minor updates to the test apps 2011-04-15 16:31:58 -05:00
Kevin Lange
8b84dfa688 [bin] Yes. 2011-04-15 13:18:01 -05:00
Kevin Lange
06c41369cc [sys] And now for the user side too 2011-04-11 16:51:31 -05:00
Kevin Lange
4a35852df8 [build] Touch a file to indicate that we passed 2011-04-11 15:25:26 -05:00
Kevin Lange
56c9feade8 [build] Trying to add some 'oops, you're missing x' 2011-04-11 15:13:34 -05:00
Kevin Lange
3db19d1605 [build] Dammit, make, stop deleting my object files! 2011-04-10 23:08:34 -05:00
Kevin Lange
fe40c7bbf6 [elf] Fix argument passing 2011-04-08 16:02:30 -05:00
Kevin Lange
d5a3728b12 [readelf] Build environment setup 2011-04-06 16:54:57 -05:00
Kevin Lange
9b3c3a1e60 [bin] Working on ELF binaries. Redid some multiboot stuff (larger ramdisks should work now) 2011-04-06 16:50:37 -05:00
Kevin Lange
5450546a15 [vga_font] Font rendering updates. 2011-03-28 16:29:59 -05:00
Kevin Lange
6d95cf95a0 [mem] Various fixes. gcc4.4 and 4.5 hate me, use 4.3 or a clange >2.0 2011-03-28 00:26:35 -05:00
Kevin Lange
f4f780ed90 [TEMP FIX] This is a temporary attempt to fix forking. 2011-03-27 23:52:02 -05:00
Kevin Lange
9a46092e4c [bochs] Proper bitmap reading, smaller boot logo. 2011-03-27 18:08:41 -05:00
Kevin Lange
a62649aafe [main] Kernel argument parsing (of a limited sort); qemu vid mode defaults 2011-03-26 13:30:08 -05:00
Kevin Lange
4d3118bad7 [vid] Working on VBE graphics support for Bochs/Qemu 2011-03-25 22:29:54 -05:00
Kevin Lange
dcd341cdc9 [clean] Oops. 2011-03-22 01:59:17 -04:00
Kevin Lange
731ecfe10c [boot] Progress? mb 2011-03-22 01:48:07 -04:00
Kevin Lange
bcd06ac136 [boot/initrd] Add stage2 to initial ramdisk, move kernel. 2011-03-22 01:14:54 -04:00
Kevin Lange
65a53722bb [build] Gah, stop yelling at me 2011-03-22 00:51:30 -04:00
Kevin Lange
7c079ecb5e [util] Utility workspace, currently for bootloader. 2011-03-22 00:50:50 -04:00
Kevin Lange
6e7ae2251d [docs] More stuff. 2011-03-18 19:57:10 -05:00
Kevin Lange
826e0d9e96 [build] docs is a phony target... 2011-03-18 19:35:51 -05:00
Kevin Lange
4a9471d853 Update documentation system 2011-03-18 19:18:08 -05:00
Kevin Lange
a6c5d1c365 Loader workspace, documentation workspace. 2011-03-17 21:45:26 -05:00
Kevin Lange
ee04a7271d [task] Holy crap, tasking. That took forever and it's still broken. 2011-03-01 17:48:39 -06:00
Kevin Lange
4f8cd57996 [vari] Fix a typo, move some stuff 2011-02-27 21:08:55 -06:00
Kevin Lange
fd57f9df32 [clean] Get rid of bootdisk on clean... 2011-02-21 23:51:59 -06:00
Kevin Lange
20efbe7b74 [boot] Well now, we have a stage two that almost does something 2011-02-21 23:51:06 -06:00
Kevin Lange
6067f11faf :[ 2011-02-21 20:35:37 -06:00
Kevin Lange
da9cf859c2 [build] stuff 2011-02-21 19:44:09 -06:00
Kevin Lange
3ebdbfa3f0 [boot] Fix that... 2011-02-21 19:42:52 -06:00
Kevin Lange
7c74503da7 [boot] Ug, ext2, make a boot floppy instead... 2011-02-21 19:41:37 -06:00
Kevin Lange
ebd3efb47b Revert "[boot] A third stage? Really?"
This reverts commit c23080c46c.
2011-02-21 19:36:18 -06:00
Kevin Lange
c23080c46c [boot] A third stage? Really? 2011-02-21 19:09:57 -06:00
Kevin Lange
8275d02e44 [build] Generate an appropriate Stage2 2011-02-21 15:48:18 -06:00
Kevin Lange
64bebd826a [build] Stage1 + Stage2 2011-02-21 15:37:25 -06:00
Kevin Lange
545627e1ad [clean] Remove test disk if it's there... 2011-02-21 15:26:41 -06:00
Kevin Lange
ed99d52ada [boot] Move read to the C so we can pass it arguments easily. 2011-02-21 15:24:44 -06:00
Kevin Lange
76c8c1652f [boot] Read stuff 2011-02-21 14:58:27 -06:00
Kevin Lange
987b1a07d3 [build] Initrd depends on stage2 2011-02-21 13:31:53 -06:00
Kevin Lange
8e49e88857 [boot] Stage 2 2011-02-21 13:29:09 -06:00
Kevin Lange
a86253784f [build] Use yasm instead of nasm 2011-02-21 13:21:28 -06:00
Kevin Lange
f3f854cc18 [build] meh 2011-02-21 12:03:58 -06:00
Kevin Lange
c3c63db8e9 [boot] holy crap 2011-02-21 03:11:30 -06:00
Kevin Lange
a8a6fce250 [boot] Integrate stage 2 into build process 2011-02-20 20:15:39 -06:00
Kevin Lange
9e31a2c07c [boot] Some Makefile integration 2011-02-18 22:22:25 -06:00
Kevin Lange
0da56e6e51 [meta] Restructure directory tree and output files. 2011-02-12 16:47:20 -06:00
Kevin Lange
f414baa81e [build] Use clang (and fix va_list in kprintf) 2011-02-10 23:55:03 -06:00
Kevin Lange
52a5b9e6cf [serial] Serial logging. 2011-02-10 21:45:29 -06:00
Kevin Lange
fa79d54ce2 [build] Fix Makefile color output, not all echos support \e 2011-02-10 12:59:44 -06:00
Kevin Lange
e04865649c [build] Neglected to drop -fda from qemu 2011-02-10 00:59:06 -06:00
Kevin Lange
15ea3f885c [build] Screw Grub, qemu will boot us raw. 2011-02-10 00:58:19 -06:00
Kevin Lange
d79c8a024d [build] purdy colors 2011-02-09 15:58:27 -06:00
Kevin Lange
d0505da0f3 [build] Minor Makefile adjustments 2011-02-09 15:33:03 -06:00
Kevin Lange
7b6fc96cab [build] Typo 2011-02-09 14:33:42 -06:00
Kevin Lange
7d3d404264 [build] Restructure build process. 2011-02-09 14:32:49 -06:00
Kevin Lange
afa85d9b39 [shell] Kernel debug shell and all the things I needed to make to support that. 2011-02-07 14:30:17 -06:00
Kevin Lange
beaa7fda54 [make] Fix core target 2011-02-07 12:16:20 -06:00
Kevin Lange
09f530604e [ext2] Fix up some warnings 2011-02-05 13:27:04 -06:00
Kevin Lange
8c818ea064 [make] Clean everything up nice and tidy. 2011-02-05 13:12:27 -06:00
Kevin Lange
b61b48f8c8 [make] Fix some Makefile initrd stuff 2011-02-04 23:14:54 -06:00
Kevin Lange
db4643d4ec [initrd] Replace initial ramdisk with one we generate with genext2fs 2011-02-04 22:41:28 -06:00
Kevin Lange
768ca852c7 [Make] Put our ramdisk image in the local boot directory on install 2011-02-02 00:03:24 -06:00
Kevin Lange
d067e3d8a6 [ext2] Read files from deep directories. 2011-01-29 14:52:44 -06:00
Kevin Lange
21260c345c [ext2] Read ext2 initial ramdisk image and print out a file's content 2011-01-28 23:09:09 -06:00
Kevin Lange
f6c73d0229 [vfs] Fix VFS and add the initrd to the disk image and grub menu 2011-01-22 01:22:46 -06:00
Kevin Lange
9c476e9426 [make] remove bootdisk on clean 2011-01-19 13:54:01 -06:00
Kevin Lange
e349d70557 [disk] Stop tracking changes to bootdisk 2011-01-19 09:51:59 -06:00
Kevin Lange
ac2a767373 [core] Fix up everything to read multiboot parameters and print them out. 2011-01-19 00:04:27 -06:00
Kevin Lange
21ed31f8da [make] Restructure directories. 2011-01-17 13:58:31 -06:00
Kevin Lange
94de5f557b [make] Install kernel to /boot directory on local system. 2011-01-17 13:46:38 -06:00
Kevin Lange
e043f15cd4 [sys] kprintf 2011-01-17 10:24:55 -06:00
Kevin Lange
f5d2053132 [keyb] Keyboard support of sorts 2011-01-16 13:45:51 -05:00
Kevin Lange
14325e9972 [time] Timer, fix IRQs, 99 Bottles 2011-01-16 11:56:44 -05:00
Kevin Lange
ed01e7119a [irq] Interrupt handling 2011-01-15 23:17:42 -05:00
Kevin Lange
a331c106f6 [isrs] Interrupt Service Routines 2011-01-15 22:41:17 -05:00
Kevin Lange
9fe8d53cc2 [idt] IDT 2011-01-15 22:11:17 -05:00
Kevin Lange
79330973d2 [gdt] Global Descriptor Table driver 2011-01-15 20:59:11 -05:00
Kevin Lange
ecd4fe2bc1 Initial commit 2011-01-15 20:01:19 -05:00